{ "info": { "author": "Jon Lund Steffensen", "author_email": "jonlst@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: Site Management" ], "description": "Deploy static website to S3/CloudFront\n======================================\n\n.. image:: https://travis-ci.org/jonls/s3-deploy-website.svg?branch=master\n :alt: Build Status\n :target: https://travis-ci.org/jonls/s3-deploy-website\n\n.. image:: https://badge.fury.io/py/s3-deploy-website.svg\n :alt: PyPI badge\n :target: http://badge.fury.io/py/s3-deploy-website\n\n.. image:: https://coveralls.io/repos/jonls/s3-deploy-website/badge.svg?branch=master&service=github\n :alt: Test coverage\n :target: https://coveralls.io/github/jonls/s3-deploy-website?branch=master\n\nThis is a deployment tool for uploading static websites to S3. If CloudFront is\nused for hosting the website, the uploaded files can be automatically\ninvalidated in the CloudFront distribution. A prefix tree is used to\nminimize the number of invalidations since only a limited number of free\ninvalidations are available per month.\n\nThe configuration is stored in a YAML file like this:\n\n.. code-block:: yaml\n\n site: _site\n s3_bucket: example.com\n cloudfront_distribution_id: XXXXXXXXXXX\n\n cache_rules:\n - match: \"/assets/*\"\n maxage: 30 days\n\n - match_regexp: '^assets/image-\\d{3}-.*\\.png$'\n maxage: 90 days\n\n - match: \"/css/*\"\n maxage: 30 days\n\n - match: \"*\"\n maxage: 1 hour\n\nThe ``site`` is the directory of the static website relative to the location\nof the configuration file. For example, Jekyll will generate the static site\nin the ``_site`` directory as specified above. If you save the configuration\nfile as ``.s3_website.yaml`` you can simply run ``s3-deploy-website`` from the\nsame directory:\n\n.. code-block:: shell\n\n $ cd jekyll-site/\n $ ls .s3_website.yaml\n .s3_website.yaml\n $ s3-deploy-website\n\nCredentials\n-----------\n\nAWS credentials can be provided through the environment variables\n``AWS_ACCESS_KEY_ID`` and ``AWS_SECRET_ACCESS_KEY``.\n\n.. code-block:: shell\n\n $ export AWS_ACCESS_KEY_ID=XXXXXX\n $ export AWS_SECRET_ACCESS_KEY=XXXXXX\n $ s3-deploy-website\n\nThey can also be provided through the various configuration files that boto_\nreads.\n\n.. _boto: https://boto3.readthedocs.io/en/latest/guide/configuration.html\n\nConfiguration file\n------------------\n\n**site**\n The directory of the static content to be uploaded (relative to\n the location of the configuration file (e.g. ``_site`` for Jekyll sites).\n\n**s3_bucket**\n The name of the S3 bucket to upload the files to. You have to allow the\n actions ``s3:GetObject``, ``s3:PutObject``, ``s3:DeleteObject`` and\n ``s3:ListBucket`` on the bucket and the keys e.g.\n ``arn:aws:s3:::example.com`` and ``arn:aws:s3:::example.com/*``.\n\n**s3_reduced_redundancy**\n An optional boolean to indicate whether the files should be uploaded\n to `reduced redundancy`_ storage.\n\n**cloudfront_distribution_id**\n The CloudFront distribution to invalidate after uploading new files. Only\n files that were changed will be invalidated. You have to allow the\n action ``cloudfront:CreateInvalidation``.\n\n**cache_rules**\n A list of rules to determine the cache configuration of the uploaded files.\n The ``match`` key specifies a pattern that the rule applies to. This uses\n glob-style matching (with ``*`` and ``?``). Matching can also be performed\n with regular expressions by using ``match_regexp``. Only the\n first rule to match a given key will be used. The ``maxage`` key\n specifies the time to cache the file. The value should be either a number\n of seconds or a string like ``30 days``, ``5 minutes, 30 seconds``, etc.\n\n**endpoint_url**\n (Optional) For setting custom endpoint for boto3:\n `Boto3 Session reference`_\n\n.. _`reduced redundancy`: https://aws.amazon.com/s3/reduced-redundancy/\n.. _`Boto3 Session reference`: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html#boto3.session.Session.resource\n\nSimilar software\n----------------\n\nThe configuration in ``.s3_website.yaml`` was inspired by s3_website_ although\nthe options supported by s3_website are slightly different.\n\n.. _s3_website: https://github.com/laurilehmijoki/s3_website\n\nLicence\n-------\n\nMIT.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "s3-deploy-website", "package_url": "https://pypi.org/project/s3-deploy-website/", "platform": "", "project_url": "https://pypi.org/project/s3-deploy-website/", "project_urls": null, "release_url": "https://pypi.org/project/s3-deploy-website/0.3.0/", "requires_dist": [ "boto3 (<1.8,>=1.7)", "PyYAML (~=3.11)", "six (~=1.10)" ], "requires_python": "", "summary": "S3 website deployment tool", "version": "0.3.0" }, "last_serial": 4439058, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1f90f619e0524ec13f81e2ea9ce533f5", "sha256": "fda2cac40386ee56a149a994b315ec3373a8652d8f0f216d644ca7ad57473f3b" }, "downloads": -1, "filename": "s3_deploy_website-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1f90f619e0524ec13f81e2ea9ce533f5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13529, "upload_time": "2015-09-18T00:43:24", "url": "https://files.pythonhosted.org/packages/7d/d2/595e67305639580e96908f9fb5ffd9aefa528f20c0b51e3bf2d11939a207/s3_deploy_website-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6fd61c32f9e47008c5424b69d7c9205", "sha256": "7b114cb9c6f47dd43d7640fe197fe7d24d828333bf9ecaa1d82777e4bc6ca5b9" }, "downloads": -1, "filename": "s3-deploy-website-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c6fd61c32f9e47008c5424b69d7c9205", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10308, "upload_time": "2015-09-18T00:43:27", "url": "https://files.pythonhosted.org/packages/71/9e/61e3237573d7a0c09e16a4cfa301970f64bd10e20c83ece48dc7779096bc/s3-deploy-website-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "101bc8bb11390bc9565888da3f696520", "sha256": "f7589736eba7e3d0b8be82652857975b592262c11001366b530be681ef101046" }, "downloads": -1, "filename": "s3_deploy_website-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "101bc8bb11390bc9565888da3f696520", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14052, "upload_time": "2016-12-03T22:37:02", "url": "https://files.pythonhosted.org/packages/8d/47/33575032b3d8b12b0bfc022df95e4e91c90280683f37f0bb19e01f0d0a6a/s3_deploy_website-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccdf411593996394419206bafae6c85c", "sha256": "398cb7406e2882170c32d13a75bda8ed66ca57a6ef0a3cb720a07f2a9d5c1c54" }, "downloads": -1, "filename": "s3-deploy-website-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ccdf411593996394419206bafae6c85c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9156, "upload_time": "2016-12-03T22:37:04", "url": "https://files.pythonhosted.org/packages/28/24/2e9c7aa7af18027ce76387c98ff97c10679c383673cb42e7d3cf09749933/s3-deploy-website-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b9cf935d2a8f1629d48feb4d44aebe0f", "sha256": "db212ccd0fa13004e28b5b4553a69a2414d86da9f564cae7741c3771c7474f44" }, "downloads": -1, "filename": "s3_deploy_website-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9cf935d2a8f1629d48feb4d44aebe0f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14005, "upload_time": "2017-03-21T04:53:12", "url": "https://files.pythonhosted.org/packages/ef/1d/56b1b7bcad87d38c237afb6bc946a1c307fd983faf3cad8a1b372c67770d/s3_deploy_website-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39db427664c7def9a505e89fd39b5fc4", "sha256": "ce20996e852774794b9e9b878d70c89e8c5367f1080fa4b54df27dbce171e402" }, "downloads": -1, "filename": "s3-deploy-website-0.2.1.tar.gz", "has_sig": false, "md5_digest": "39db427664c7def9a505e89fd39b5fc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9104, "upload_time": "2017-03-21T04:53:14", "url": "https://files.pythonhosted.org/packages/53/2b/15420bb1404866b965c79e45e09a27e49b24860a815ecfedfc1f9706e34f/s3-deploy-website-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "206a47da9a29fdfb2540bd56cee90836", "sha256": "22856446cb9d0ffcbd43f872cae347e052000221bb4eca7f1945ccee180e9d38" }, "downloads": -1, "filename": "s3_deploy_website-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "206a47da9a29fdfb2540bd56cee90836", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13751, "upload_time": "2018-07-06T04:41:28", "url": "https://files.pythonhosted.org/packages/31/99/b9a8a354030c767a2ad4dfb365483cc2be4433c9e24aaf9c506e59b3ff28/s3_deploy_website-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbb18de00dcdb93156146c70068702d2", "sha256": "68e47dbd6826bf21bb21a705e42008c8c88bed9f20b8ae445a94102a2bd1ee6d" }, "downloads": -1, "filename": "s3-deploy-website-0.2.2.tar.gz", "has_sig": false, "md5_digest": "dbb18de00dcdb93156146c70068702d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10840, "upload_time": "2018-07-06T04:41:29", "url": "https://files.pythonhosted.org/packages/81/15/4c48dbfdba876ef4386af94a9ba5099d3a3d9e02805f67f3c9b1610f530f/s3-deploy-website-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0a8becfeed1059ae96050e8a27c425fa", "sha256": "db90f162fa230b1d4b2f33f32ab6d8b5998333309f6c073214247ec85dbbd387" }, "downloads": -1, "filename": "s3_deploy_website-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0a8becfeed1059ae96050e8a27c425fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15172, "upload_time": "2018-11-01T01:42:35", "url": "https://files.pythonhosted.org/packages/6a/52/f0ff6fb0e9af333413edbd27d473024a6f509d1cdcdf40b91e67055b8c64/s3_deploy_website-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8502c6fecf9ef5d4ff7abab2c50380a", "sha256": "cf6497f0c8c1c08d41412ce2feaf1fb00e6aa5082ae6bcc9e79cbddde0a0fa5b" }, "downloads": -1, "filename": "s3-deploy-website-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d8502c6fecf9ef5d4ff7abab2c50380a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12921, "upload_time": "2018-11-01T01:42:36", "url": "https://files.pythonhosted.org/packages/a9/cf/eaa6c7960291c2a2a4d19f980ab8ad93f9cf17a98439b319b851189bb45e/s3-deploy-website-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0a8becfeed1059ae96050e8a27c425fa", "sha256": "db90f162fa230b1d4b2f33f32ab6d8b5998333309f6c073214247ec85dbbd387" }, "downloads": -1, "filename": "s3_deploy_website-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0a8becfeed1059ae96050e8a27c425fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15172, "upload_time": "2018-11-01T01:42:35", "url": "https://files.pythonhosted.org/packages/6a/52/f0ff6fb0e9af333413edbd27d473024a6f509d1cdcdf40b91e67055b8c64/s3_deploy_website-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8502c6fecf9ef5d4ff7abab2c50380a", "sha256": "cf6497f0c8c1c08d41412ce2feaf1fb00e6aa5082ae6bcc9e79cbddde0a0fa5b" }, "downloads": -1, "filename": "s3-deploy-website-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d8502c6fecf9ef5d4ff7abab2c50380a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12921, "upload_time": "2018-11-01T01:42:36", "url": "https://files.pythonhosted.org/packages/a9/cf/eaa6c7960291c2a2a4d19f980ab8ad93f9cf17a98439b319b851189bb45e/s3-deploy-website-0.3.0.tar.gz" } ] }