Skip to main content

A Python package for controlling access to content sitting behind a CloudFront distribution using signed cookies.

Project description

cloudfront-signed-cookies

PyPI - Version PyPI - Python Version Hatch project Code style: black


IF YOU'RE INTERESTED, go checkout my Medium blog post for a deeper dive on what this package is doing and some usage examples.

Table of Contents

Installation

pip install cloudfront-signed-cookies

Usage

from cloudfront_signed_cookies.signer import Signer
import os

def main():
    """
    Method #1
    Allow the signer to read your key from a file
    """
    signer: Signer = Signer(
        cloudfront_key_id="K36X4X2EO997HM",
        private_key="./certs/private_key.pem",
    )

    """
    Method #2
    Alternatively you can pass the raw contents of the key in from
    something such as an environment variable, for container (Docker)
    based usage
    """
    signer: Signer = Signer(
        cloudfront_key_id="K36X4X2EO997HM",
        private_key=os.environ.get("PRIVATE_KEY")
    )

    cookies: dict = signer.generate_cookies(
        Policy={
            "Statement": [
                {
                    "Resource": "https://domain.com/somefile.txt",
                    "Condition": {
                        "DateLessThan": {
                            "AWS:EpochTime": 1000
                        }
                    },
                }
            ]
        },
        SecondsBeforeExpires=360,
    )
    print(cookies)

main()
"""
{'CloudFront-Policy': 'eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoic29tZV91cmwiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEwMDB9fX1dfQ__', 'CloudFront-Signature': 'EZHxOEAhaKB3e-XUAGI5xJdDQaWKuW-h6m8c4UYcFBkaA3Fh4~DygZUcYCj-S-qtUdrl46i8vp4RuvtDz4sL9GEVGGDniZc8iDVDqHmfllMFK-90Ge-C9lQ-umsqm-IQzaFVDS3WMbi5iAsRDpdUGfAk43ergTMvjhd~xxpVCCHZxW8uBt11kAjEoqdbMm6eVC32F-QB2HJndN9mm4d~dizvW~XjVt69fA0YjY7-TiIVKAO5ajnDaBl17AsLolLfLYl6NGBJjadLjueMCWM2DP5lXYce8RF2qW02wg8bNmth3ykPoVHFT-tgIgetOcDFDCFSnTkXXhUy3mu2wPzdKQ__', 'CloudFront-Key-Pair-Id': K36X4X2EO997HM'}
"""

License

cloudfront-signed-cookies is distributed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudfront_signed_cookies-1.2.tar.gz (8.6 kB view hashes)

Uploaded Source

Built Distribution

cloudfront_signed_cookies-1.2-py3-none-any.whl (9.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page