

**********
CloudFront
**********



======
Client
======



.. py:class:: CloudFront.Client

  A low-level client representing Amazon CloudFront
  

   

  This is the *Amazon CloudFront API Reference*. This guide is for developers who need detailed information about CloudFront API actions, data types, and errors. For detailed information about CloudFront features, see the `Amazon CloudFront Developer Guide <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html>`__.

  

  ::

    
    import boto3
    
    client = boto3.client('cloudfront')

  

These are the available methods:

.. toctree::
  :maxdepth: 1
  :titlesonly:

  cloudfront/client/associate_alias
  cloudfront/client/associate_distribution_tenant_web_acl
  cloudfront/client/associate_distribution_web_acl
  cloudfront/client/can_paginate
  cloudfront/client/close
  cloudfront/client/copy_distribution
  cloudfront/client/create_anycast_ip_list
  cloudfront/client/create_cache_policy
  cloudfront/client/create_cloud_front_origin_access_identity
  cloudfront/client/create_connection_function
  cloudfront/client/create_connection_group
  cloudfront/client/create_continuous_deployment_policy
  cloudfront/client/create_distribution
  cloudfront/client/create_distribution_tenant
  cloudfront/client/create_distribution_with_tags
  cloudfront/client/create_field_level_encryption_config
  cloudfront/client/create_field_level_encryption_profile
  cloudfront/client/create_function
  cloudfront/client/create_invalidation
  cloudfront/client/create_invalidation_for_distribution_tenant
  cloudfront/client/create_key_group
  cloudfront/client/create_key_value_store
  cloudfront/client/create_monitoring_subscription
  cloudfront/client/create_origin_access_control
  cloudfront/client/create_origin_request_policy
  cloudfront/client/create_public_key
  cloudfront/client/create_realtime_log_config
  cloudfront/client/create_response_headers_policy
  cloudfront/client/create_streaming_distribution
  cloudfront/client/create_streaming_distribution_with_tags
  cloudfront/client/create_trust_store
  cloudfront/client/create_vpc_origin
  cloudfront/client/delete_anycast_ip_list
  cloudfront/client/delete_cache_policy
  cloudfront/client/delete_cloud_front_origin_access_identity
  cloudfront/client/delete_connection_function
  cloudfront/client/delete_connection_group
  cloudfront/client/delete_continuous_deployment_policy
  cloudfront/client/delete_distribution
  cloudfront/client/delete_distribution_tenant
  cloudfront/client/delete_field_level_encryption_config
  cloudfront/client/delete_field_level_encryption_profile
  cloudfront/client/delete_function
  cloudfront/client/delete_key_group
  cloudfront/client/delete_key_value_store
  cloudfront/client/delete_monitoring_subscription
  cloudfront/client/delete_origin_access_control
  cloudfront/client/delete_origin_request_policy
  cloudfront/client/delete_public_key
  cloudfront/client/delete_realtime_log_config
  cloudfront/client/delete_resource_policy
  cloudfront/client/delete_response_headers_policy
  cloudfront/client/delete_streaming_distribution
  cloudfront/client/delete_trust_store
  cloudfront/client/delete_vpc_origin
  cloudfront/client/describe_connection_function
  cloudfront/client/describe_function
  cloudfront/client/describe_key_value_store
  cloudfront/client/disassociate_distribution_tenant_web_acl
  cloudfront/client/disassociate_distribution_web_acl
  cloudfront/client/get_anycast_ip_list
  cloudfront/client/get_cache_policy
  cloudfront/client/get_cache_policy_config
  cloudfront/client/get_cloud_front_origin_access_identity
  cloudfront/client/get_cloud_front_origin_access_identity_config
  cloudfront/client/get_connection_function
  cloudfront/client/get_connection_group
  cloudfront/client/get_connection_group_by_routing_endpoint
  cloudfront/client/get_continuous_deployment_policy
  cloudfront/client/get_continuous_deployment_policy_config
  cloudfront/client/get_distribution
  cloudfront/client/get_distribution_config
  cloudfront/client/get_distribution_tenant
  cloudfront/client/get_distribution_tenant_by_domain
  cloudfront/client/get_field_level_encryption
  cloudfront/client/get_field_level_encryption_config
  cloudfront/client/get_field_level_encryption_profile
  cloudfront/client/get_field_level_encryption_profile_config
  cloudfront/client/get_function
  cloudfront/client/get_invalidation
  cloudfront/client/get_invalidation_for_distribution_tenant
  cloudfront/client/get_key_group
  cloudfront/client/get_key_group_config
  cloudfront/client/get_managed_certificate_details
  cloudfront/client/get_monitoring_subscription
  cloudfront/client/get_origin_access_control
  cloudfront/client/get_origin_access_control_config
  cloudfront/client/get_origin_request_policy
  cloudfront/client/get_origin_request_policy_config
  cloudfront/client/get_paginator
  cloudfront/client/get_public_key
  cloudfront/client/get_public_key_config
  cloudfront/client/get_realtime_log_config
  cloudfront/client/get_resource_policy
  cloudfront/client/get_response_headers_policy
  cloudfront/client/get_response_headers_policy_config
  cloudfront/client/get_streaming_distribution
  cloudfront/client/get_streaming_distribution_config
  cloudfront/client/get_trust_store
  cloudfront/client/get_vpc_origin
  cloudfront/client/get_waiter
  cloudfront/client/list_anycast_ip_lists
  cloudfront/client/list_cache_policies
  cloudfront/client/list_cloud_front_origin_access_identities
  cloudfront/client/list_conflicting_aliases
  cloudfront/client/list_connection_functions
  cloudfront/client/list_connection_groups
  cloudfront/client/list_continuous_deployment_policies
  cloudfront/client/list_distribution_tenants
  cloudfront/client/list_distribution_tenants_by_customization
  cloudfront/client/list_distributions
  cloudfront/client/list_distributions_by_anycast_ip_list_id
  cloudfront/client/list_distributions_by_cache_policy_id
  cloudfront/client/list_distributions_by_connection_function
  cloudfront/client/list_distributions_by_connection_mode
  cloudfront/client/list_distributions_by_key_group
  cloudfront/client/list_distributions_by_origin_request_policy_id
  cloudfront/client/list_distributions_by_owned_resource
  cloudfront/client/list_distributions_by_realtime_log_config
  cloudfront/client/list_distributions_by_response_headers_policy_id
  cloudfront/client/list_distributions_by_trust_store
  cloudfront/client/list_distributions_by_vpc_origin_id
  cloudfront/client/list_distributions_by_web_acl_id
  cloudfront/client/list_domain_conflicts
  cloudfront/client/list_field_level_encryption_configs
  cloudfront/client/list_field_level_encryption_profiles
  cloudfront/client/list_functions
  cloudfront/client/list_invalidations
  cloudfront/client/list_invalidations_for_distribution_tenant
  cloudfront/client/list_key_groups
  cloudfront/client/list_key_value_stores
  cloudfront/client/list_origin_access_controls
  cloudfront/client/list_origin_request_policies
  cloudfront/client/list_public_keys
  cloudfront/client/list_realtime_log_configs
  cloudfront/client/list_response_headers_policies
  cloudfront/client/list_streaming_distributions
  cloudfront/client/list_tags_for_resource
  cloudfront/client/list_trust_stores
  cloudfront/client/list_vpc_origins
  cloudfront/client/publish_connection_function
  cloudfront/client/publish_function
  cloudfront/client/put_resource_policy
  cloudfront/client/tag_resource
  cloudfront/client/test_connection_function
  cloudfront/client/test_function
  cloudfront/client/untag_resource
  cloudfront/client/update_anycast_ip_list
  cloudfront/client/update_cache_policy
  cloudfront/client/update_cloud_front_origin_access_identity
  cloudfront/client/update_connection_function
  cloudfront/client/update_connection_group
  cloudfront/client/update_continuous_deployment_policy
  cloudfront/client/update_distribution
  cloudfront/client/update_distribution_tenant
  cloudfront/client/update_distribution_with_staging_config
  cloudfront/client/update_domain_association
  cloudfront/client/update_field_level_encryption_config
  cloudfront/client/update_field_level_encryption_profile
  cloudfront/client/update_function
  cloudfront/client/update_key_group
  cloudfront/client/update_key_value_store
  cloudfront/client/update_origin_access_control
  cloudfront/client/update_origin_request_policy
  cloudfront/client/update_public_key
  cloudfront/client/update_realtime_log_config
  cloudfront/client/update_response_headers_policy
  cloudfront/client/update_streaming_distribution
  cloudfront/client/update_trust_store
  cloudfront/client/update_vpc_origin
  cloudfront/client/verify_dns_configuration


==========
Paginators
==========


Paginators are available on a client instance via the ``get_paginator`` method. For more detailed instructions and examples on the usage of paginators, see the paginators `user guide <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html>`_.

The available paginators are:

.. toctree::
  :maxdepth: 1
  :titlesonly:

  cloudfront/paginator/ListCloudFrontOriginAccessIdentities
  cloudfront/paginator/ListConnectionFunctions
  cloudfront/paginator/ListConnectionGroups
  cloudfront/paginator/ListDistributionTenants
  cloudfront/paginator/ListDistributionTenantsByCustomization
  cloudfront/paginator/ListDistributions
  cloudfront/paginator/ListDistributionsByConnectionFunction
  cloudfront/paginator/ListDistributionsByConnectionMode
  cloudfront/paginator/ListDistributionsByTrustStore
  cloudfront/paginator/ListDomainConflicts
  cloudfront/paginator/ListInvalidations
  cloudfront/paginator/ListInvalidationsForDistributionTenant
  cloudfront/paginator/ListKeyValueStores
  cloudfront/paginator/ListOriginAccessControls
  cloudfront/paginator/ListPublicKeys
  cloudfront/paginator/ListStreamingDistributions
  cloudfront/paginator/ListTrustStores


=======
Waiters
=======


Waiters are available on a client instance via the ``get_waiter`` method. For more detailed instructions and examples on the usage or waiters, see the waiters `user guide <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/clients.html#waiters>`_.

The available waiters are:

.. toctree::
  :maxdepth: 1
  :titlesonly:

  cloudfront/waiter/DistributionDeployed
  cloudfront/waiter/InvalidationCompleted
  cloudfront/waiter/InvalidationForDistributionTenantCompleted
  cloudfront/waiter/StreamingDistributionDeployed


========
Examples
========


Generate a signed URL for Amazon CloudFront
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The following example shows how to generate a signed URL for Amazon CloudFront.
Note that you will need the ``cryptography`` `library <https://cryptography.io/en/latest/>`__ to follow this example::

    import datetime

    from cryptography.hazmat.backends import default_backend
    from cryptography.hazmat.primitives import hashes
    from cryptography.hazmat.primitives import serialization
    from cryptography.hazmat.primitives.asymmetric import padding
    from botocore.signers import CloudFrontSigner


    def rsa_signer(message):
        with open('path/to/key.pem', 'rb') as key_file:
            private_key = serialization.load_pem_private_key(
                key_file.read(),
                password=None,
                backend=default_backend()
            )
        return private_key.sign(message, padding.PKCS1v15(), hashes.SHA1())

    key_id = 'AKIAIOSFODNN7EXAMPLE'
    url = 'http://d2949o5mkkp72v.cloudfront.net/hello.txt'
    expire_date = datetime.datetime(2017, 1, 1)

    cloudfront_signer = CloudFrontSigner(key_id, rsa_signer)

    # Create a signed url that will be valid until the specific expiry date
    # provided using a canned policy.
    signed_url = cloudfront_signer.generate_presigned_url(
        url, date_less_than=expire_date)
    print(signed_url)
