Skip to main content

Hatch plugin for deploying to AWS with SAM

Project description

hatch-aws-publisher

PyPI - Version PyPI - Python Version Hatch project code style - black types - mypy imports - isort

AWS publisher plugin for Hatch 🥚🐍. Hatch is modern, extensible Python project manager.


Table of Contents

How to enable

Plugin must be installed in the same environment as Hatch itself.

python -m venv .venv
.venv/bin/pip install hatch-aws-publisher

How to use it

The publisher plugin name is called aws.

  1. Build you app with SAM. You can use my Hatch plugin hatch-aws.

  2. Put your SAM config to pyproject.toml (stack name is by default name of your project):

    [project]
    name = "my-app"
    
    [tool.hatch.publish.aws.sam]
    region = "us-west-1"
    confirm_changeset = false
    fail_on_empty_changeset = false
    force_upload = true
    capabilities = "CAPABILITY_IAM"
    s3_bucket = "my-bucket"
    parameter_overrides = ["stage=dev"]
    
    [tool.hatch.publish.aws.sam.tags]
    job = "batman"
    name = "bruce"
    
  3. Publish (deploy) your app.

    hatch publish -p aws
    

Options

section tool.hatch.publish.aws

This section allows to modify behavior of the plugin. Available options:

[tool.hatch.publish.aws]
stack_name_append_env = true
stack_name_prefix = "super-"
stack_name_suffix = "-man"
deploy = true

All above options can be overwritten using a CLI parameter

.venv/hatch/bin/hatch publish -p aws -o stack_name_prefix="bat-"
  • stack_name_prefix: adds a prefix to a stack name -> bat-my-app
  • stack_name_suffix: adds a suffix to a stack name -> bat-my-app-man
  • stack_name_append_env: adds a selected environment to a stack name -> bat-my-app-man-dev
  • deploy: if it's false, only sam config will be generated, but sam deploy will not be executed

section tool.hatch.publish.aws.sam

Default values for SAM. You can use any key:value pair available in SAM config.

Only difference is format of tags (they use separate section):

[tool.hatch.publish.aws.sam.tags]
job = "batman"
name = "bruce"

section tool.hatch.publish.aws.sam.env.<env-name>

You can define specific deployment environments. They inherit values from tool.hatch.publish.aws.sam.

Environment settings in pyproject.toml:

[tool.hatch.publish.aws.sam]
region = "us-west-1"
confirm_changeset = false
fail_on_empty_changeset = false
force_upload = true
capabilities = "CAPABILITY_IAM"

[tool.hatch.publish.aws.sam.env.dev]
region = "us-west-2"
s3_bucket = "dev-bucket"
parameter_overrides = ["stage=dev"]

[tool.hatch.publish.aws.sam.env.prd]
s3_bucket = "prd-bucket"
parameter_overrides = ["stage=prd"]
fail_on_empty_changeset = true

You need to specify an environment using a CLI parameter:

hatch publish -p aws -o env=dev

License

Plugin hatch-aws-publisher 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

hatch_aws_publisher-0.2.3.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

hatch_aws_publisher-0.2.3-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file hatch_aws_publisher-0.2.3.tar.gz.

File metadata

  • Download URL: hatch_aws_publisher-0.2.3.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.3

File hashes

Hashes for hatch_aws_publisher-0.2.3.tar.gz
Algorithm Hash digest
SHA256 bbd60f1217bdb849209e0151d5f523523ecc4ba21d98d9ed8eda5b913efe5758
MD5 8e47d0b35493f8031f197775df8cc193
BLAKE2b-256 d96adcecd09f91ff1abbba51cda19d7be0f3710145b4aa202d1def9cae509922

See more details on using hashes here.

File details

Details for the file hatch_aws_publisher-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for hatch_aws_publisher-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c91a7383382a25e6af8864597a6f4582597728dddc8efc296358640a86fd3a42
MD5 cac1ddab5a86c9d906084ae9c707e2b3
BLAKE2b-256 18fbf7b69f8eb5d75cb633d0e0c6b4e2c6949cfe6aef2d9b6a690ce83db9ae5f

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