Hatch plugin for building AWS Lambda functions with SAM
Project description
hatch-aws
AWS builder plugin for Hatch ๐ฅ๐. Hatch is modern, extensible Python project manager.
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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hatch_aws-1.1.0.tar.gz.
File metadata
- Download URL: hatch_aws-1.1.0.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
891d0b7ba7e1007045e6ac85f3fee0093a78742dd66481bebb127e52abdec77b
|
|
| MD5 |
59b3e87ce664b00cf6a13a7e469b3ce1
|
|
| BLAKE2b-256 |
fc73115eb29ab64a4cc77c40ff3e4f8838048d72f561d7e80640a6e23cf74c04
|
File details
Details for the file hatch_aws-1.1.0-py3-none-any.whl.
File metadata
- Download URL: hatch_aws-1.1.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a0dc69267719bf239cc3da837403db7fa141e9cec0225354c934bd1223df5a7
|
|
| MD5 |
d62cf66b8e7d629502b4629778e32a41
|
|
| BLAKE2b-256 |
12b3c26f9b4076ed2de4aea0aaa5a61e438c5bc557ce1a11e8b4084a85e6d825
|