:doc:`CloudFront <../../cloudfront>` / Client / create_invalidation

*******************
create_invalidation
*******************



.. py:method:: CloudFront.Client.create_invalidation(**kwargs)

  

  Create a new invalidation. For more information, see `Invalidating files <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html>`__ in the *Amazon CloudFront Developer Guide*.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2020-05-31/CreateInvalidation>`_  


  **Request Syntax**
  ::

    response = client.create_invalidation(
        DistributionId='string',
        InvalidationBatch={
            'Paths': {
                'Quantity': 123,
                'Items': [
                    'string',
                ]
            },
            'CallerReference': 'string'
        }
    )
    
  :type DistributionId: string
  :param DistributionId: **[REQUIRED]** 

    The distribution's id.

    

  
  :type InvalidationBatch: dict
  :param InvalidationBatch: **[REQUIRED]** 

    The batch information for the invalidation.

    

  
    - **Paths** *(dict) --* **[REQUIRED]** 

      A complex type that contains information about the objects that you want to invalidate. For more information, see `Specifying the Objects to Invalidate <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidation-specifying-objects>`__ in the *Amazon CloudFront Developer Guide*.

      

    
      - **Quantity** *(integer) --* **[REQUIRED]** 

        The number of invalidation paths specified for the objects that you want to invalidate.

        

      
      - **Items** *(list) --* 

        A complex type that contains a list of the paths that you want to invalidate.

        

      
        - *(string) --* 

        
    
    
    - **CallerReference** *(string) --* **[REQUIRED]** 

      A value that you specify to uniquely identify an invalidation request. CloudFront uses the value to prevent you from accidentally resubmitting an identical request. Whenever you create a new invalidation request, you must specify a new value for ``CallerReference`` and change other values in the request as applicable. One way to ensure that the value of ``CallerReference`` is unique is to use a ``timestamp``, for example, ``20120301090000``.

       

      If you make a second invalidation request with the same value for ``CallerReference``, and if the rest of the request is the same, CloudFront doesn't create a new invalidation request. Instead, CloudFront returns information about the invalidation request that you previously created with the same ``CallerReference``.

       

      If ``CallerReference`` is a value you already sent in a previous invalidation batch request but the content of any ``Path`` is different from the original request, CloudFront returns an ``InvalidationBatchAlreadyExists`` error.

      

    
  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'Location': 'string',
          'Invalidation': {
              'Id': 'string',
              'Status': 'string',
              'CreateTime': datetime(2015, 1, 1),
              'InvalidationBatch': {
                  'Paths': {
                      'Quantity': 123,
                      'Items': [
                          'string',
                      ]
                  },
                  'CallerReference': 'string'
              }
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 

      The returned result of the corresponding request.

      
      

      - **Location** *(string) --* 

        The fully qualified URI of the distribution and invalidation batch request, including the ``Invalidation ID``.

        
      

      - **Invalidation** *(dict) --* 

        The invalidation's information.

        
        

        - **Id** *(string) --* 

          The identifier for the invalidation request. For example: ``IDFDVBD632BHDS5``.

          
        

        - **Status** *(string) --* 

          The status of the invalidation request. When the invalidation batch is finished, the status is ``Completed``.

          
        

        - **CreateTime** *(datetime) --* 

          The date and time the invalidation request was first made.

          
        

        - **InvalidationBatch** *(dict) --* 

          The current invalidation information for the batch request.

          
          

          - **Paths** *(dict) --* 

            A complex type that contains information about the objects that you want to invalidate. For more information, see `Specifying the Objects to Invalidate <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidation-specifying-objects>`__ in the *Amazon CloudFront Developer Guide*.

            
            

            - **Quantity** *(integer) --* 

              The number of invalidation paths specified for the objects that you want to invalidate.

              
            

            - **Items** *(list) --* 

              A complex type that contains a list of the paths that you want to invalidate.

              
              

              - *(string) --* 
          
        
          

          - **CallerReference** *(string) --* 

            A value that you specify to uniquely identify an invalidation request. CloudFront uses the value to prevent you from accidentally resubmitting an identical request. Whenever you create a new invalidation request, you must specify a new value for ``CallerReference`` and change other values in the request as applicable. One way to ensure that the value of ``CallerReference`` is unique is to use a ``timestamp``, for example, ``20120301090000``.

             

            If you make a second invalidation request with the same value for ``CallerReference``, and if the rest of the request is the same, CloudFront doesn't create a new invalidation request. Instead, CloudFront returns information about the invalidation request that you previously created with the same ``CallerReference``.

             

            If ``CallerReference`` is a value you already sent in a previous invalidation batch request but the content of any ``Path`` is different from the original request, CloudFront returns an ``InvalidationBatchAlreadyExists`` error.

            
      
    
  
  **Exceptions**
  
  *   :py:class:`CloudFront.Client.exceptions.NoSuchDistribution`

  
  *   :py:class:`CloudFront.Client.exceptions.AccessDenied`

  
  *   :py:class:`CloudFront.Client.exceptions.TooManyInvalidationsInProgress`

  
  *   :py:class:`CloudFront.Client.exceptions.MissingBody`

  
  *   :py:class:`CloudFront.Client.exceptions.InconsistentQuantities`

  
  *   :py:class:`CloudFront.Client.exceptions.BatchTooLarge`

  
  *   :py:class:`CloudFront.Client.exceptions.InvalidArgument`

  