Checkout my other plugin hatch-aws-publisher.
Table of Contents
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
srcfolder.. ├── 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.tomlas dependencies.[project] dependencies = ["boto3"]
-
Specify requirements for your lambda functions in
pyproject.tomlas 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 isGetAll_Accounts, usegetall-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/buildby 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
CodeUriandHandlerparameter pointing to your lambdas in SAM template. Only resources withRuntime: 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.
Release files for hatch-aws 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hatch_aws-1.1.0.tar.gz | 9.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hatch_aws-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.3 kB
Release files / hatch_aws-1.1.0.tar.gz
| Download URL | hatch_aws-1.1.0.tar.gz |
|---|---|
| Size | 9.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
891d0b7ba7e1007045e6ac85f3fee0093a78742dd66481bebb127e52abdec77b
|
|
BLAKE2b-256 checksum How to use checksums |
fc73115eb29ab64a4cc77c40ff3e4f8838048d72f561d7e80640a6e23cf74c04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.23.3
|
Release files / hatch_aws-1.1.0-py3-none-any.whl
| Download URL | hatch_aws-1.1.0-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a0dc69267719bf239cc3da837403db7fa141e9cec0225354c934bd1223df5a7
|
|
BLAKE2b-256 checksum How to use checksums |
12b3c26f9b4076ed2de4aea0aaa5a61e438c5bc557ce1a11e8b4084a85e6d825
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.23.3
|