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

****************
publish_function
****************



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

  

  Publishes a CloudFront function by copying the function code from the ``DEVELOPMENT`` stage to ``LIVE``. This automatically updates all cache behaviors that are using this function to use the newly published copy in the ``LIVE`` stage.

   

  When a function is published to the ``LIVE`` stage, you can attach the function to a distribution's cache behavior, using the function's Amazon Resource Name (ARN).

   

  To publish a function, you must provide the function's name and version ( ``ETag`` value). To get these values, you can use ``ListFunctions`` and ``DescribeFunction``.

  

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


  **Request Syntax**
  ::

    response = client.publish_function(
        Name='string',
        IfMatch='string'
    )
    
  :type Name: string
  :param Name: **[REQUIRED]** 

    The name of the function that you are publishing.

    

  
  :type IfMatch: string
  :param IfMatch: **[REQUIRED]** 

    The current version ( ``ETag`` value) of the function that you are publishing, which you can get using ``DescribeFunction``.

    

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

    
    ::

      {
          'FunctionSummary': {
              'Name': 'string',
              'Status': 'string',
              'FunctionConfig': {
                  'Comment': 'string',
                  'Runtime': 'cloudfront-js-1.0'|'cloudfront-js-2.0',
                  'KeyValueStoreAssociations': {
                      'Quantity': 123,
                      'Items': [
                          {
                              'KeyValueStoreARN': 'string'
                          },
                      ]
                  }
              },
              'FunctionMetadata': {
                  'FunctionARN': 'string',
                  'Stage': 'DEVELOPMENT'|'LIVE',
                  'CreatedTime': datetime(2015, 1, 1),
                  'LastModifiedTime': datetime(2015, 1, 1)
              }
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **FunctionSummary** *(dict) --* 

        Contains configuration information and metadata about a CloudFront function.

        
        

        - **Name** *(string) --* 

          The name of the CloudFront function.

          
        

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

          The status of the CloudFront function.

          
        

        - **FunctionConfig** *(dict) --* 

          Contains configuration information about a CloudFront function.

          
          

          - **Comment** *(string) --* 

            A comment to describe the function.

            
          

          - **Runtime** *(string) --* 

            The function's runtime environment version.

            
          

          - **KeyValueStoreAssociations** *(dict) --* 

            The configuration for the key value store associations.

            
            

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

              The quantity of key value store associations.

              
            

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

              The items of the key value store association.

              
              

              - *(dict) --* 

                The key value store association.

                
                

                - **KeyValueStoreARN** *(string) --* 

                  The Amazon Resource Name (ARN) of the key value store association.

                  
            
          
        
      
        

        - **FunctionMetadata** *(dict) --* 

          Contains metadata about a CloudFront function.

          
          

          - **FunctionARN** *(string) --* 

            The Amazon Resource Name (ARN) of the function. The ARN uniquely identifies the function.

            
          

          - **Stage** *(string) --* 

            The stage that the function is in, either ``DEVELOPMENT`` or ``LIVE``.

             

            When a function is in the ``DEVELOPMENT`` stage, you can test the function with ``TestFunction``, and update it with ``UpdateFunction``.

             

            When a function is in the ``LIVE`` stage, you can attach the function to a distribution's cache behavior, using the function's ARN.

            
          

          - **CreatedTime** *(datetime) --* 

            The date and time when the function was created.

            
          

          - **LastModifiedTime** *(datetime) --* 

            The date and time when the function was most recently updated.

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

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

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

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

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

  