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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file cloudfront_signed_cookies-1.2.tar.gz.

File metadata

File hashes

Hashes for cloudfront_signed_cookies-1.2.tar.gz
Algorithm Hash digest
SHA256 96018fe9916757effc0ad2526cd729ca235b3434742c29fa48ef82a4610b26aa
MD5 7ab9f3bd4d0f19b9a47145cc9a17bee6
BLAKE2b-256 08f59bf8528e65bd92aaa25bcee9fde70c70296634d2d7744759a73f3ec90e59

See more details on using hashes here.

File details

Details for the file cloudfront_signed_cookies-1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for cloudfront_signed_cookies-1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 69a0b33b69ef69911da701617d0f7461b4f95ef828f1ff877a9c3102f2ae5a43
MD5 35443d93fda1498bb512b73853a01553
BLAKE2b-256 7298c6f19ec1443378d37d77c61a9af8ad4828b34301f5fb63f15ef92fe7f2ca

See more details on using hashes here.

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