hatch-aws 1.1.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

hatchaws 1.1.0

hatch-aws

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


Checkout my other plugin hatch-aws-publisher.
Table of Contents

hatch-aws

Table of Contents
Global dependency
Builder

How to use it
Options


License



Global dependency
Add hatch-aws within the build-system.requires field in your pyproject.toml file.
[build-system]
requires = ["hatchling", "hatch-aws"]
build-backend = "hatchling.build"

Builder
The builder plugin name is called aws.
To start build process, run hatch build -t aws:
❯ hatch build -t aws
[aws]
Building lambda functions ...
MyAwsLambdaFunc ... success
Build successfull 🚀
/path/to/build/.aws-sam/build

How to use it


Put your module and lambdas inside of src folder.
.
├── pyproject.toml
├── src
│ └── my_app
│ ├── __init__.py
│ ├── common
│ │ ├── __init__.py
│ │ ├── config.py
│ │ └── models.py
│ └── lambdas
│ ├── lambda1
│ │ ├── __init__.py
│ │ └── main.py
│ └── lambda2
│ ├── __init__.py
│ └── main.py
└── template.yml



Specify common requirements for your project in pyproject.toml as dependencies.
[project]
dependencies = ["boto3"]



Specify requirements for your lambda functions in pyproject.toml as optional dependencies. Use resource name from SAM template, but you have to adapt it to be compliant with PEP standard (transform to lower case and replace _ with -). For example, if you function name in SAM template is GetAll_Accounts, use getall-accounts.
[project.optional-dependencies]
lambda1 = ["pyaml"]
lambda2 = ["request", "pydantic"]



Specify additional paths(source/destination) you want to copy to the build folder. Destination is relative to a build directory (.aws-sam/build by default). You can use glob * to copy common to all lambda functions.
[tool.hatch.build.force-include]
"src/batman/common" = "*/batman/common" # copy to all lambda functions
".editorconfig" = ".editorconfig.txt"
"CHANGELOG.md" = "../CH.txt"
"images/" = "*/images"



Set the CodeUri and Handler parameter pointing to your lambdas in SAM template. Only resources with Runtime: python{version} are supported. The rest is ignored.
Resources:
Lambda1:
Type: AWS::Serverless::Function
Properties:
Runtime: python3.9
FunctionName: lambda1-function
CodeUri: src
Handler: my_app.lambdas.lambda1.main.app
...

Lambda2:
Type: AWS::Serverless::Function
Properties:
Runtime: python3.9
FunctionName: lambda2-function
CodeUri: src
Handler: my_app.lambdas.lambda2.main.app
...



Options
Following table contains available customization of builder behavior. You can find example of pyproject.toml in tests/assets/pyproject.toml.



Option
Type
Default
Description




template
str
template.yml
SAM template filename.


use-sam
bool
false
Use only sam build command without any custom actions.


sam-exec
str
sam
Path to sam executable. Env var: HATCH_SAM_EXEC.


sam-params
array

Additional sam build args.



License
Plugin hatch-aws is distributed under the terms of the MIT license.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.