Spaces:
Paused
Paused
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) | |