porkDyn 🐷 is a Dynamic DNS (DDNS) Updater for https://porkbun.com, written in Rust.
To build the project for production, run cargo lambda build --release
. Remove the --release
flag to build for development.
Read more about building your lambda function in the Cargo Lambda documentation.
You can run regular Rust unit tests with cargo test
.
If you want to run integration tests locally, you can use the cargo lambda watch
and cargo lambda invoke
commands to do it.
First, run cargo lambda watch
to start a local server. When you make changes to the code, the server will automatically restart.
Second, you'll need a way to pass the event data to the lambda function.
You can use the existent event payloads in the Rust Runtime repository if your lambda function is using one of the supported event types.
You can use those examples directly with the --data-example
flag, where the value is the name of the file in the lambda-events repository without the example_
prefix and the .json
extension.
cargo lambda invoke --data-example apigw-request
For generic events, where you define the event data structure, you can create a JSON file with the data you want to test with. For example:
{
"command": "test"
}
Then, run cargo lambda invoke --data-file ./data.json
to invoke the function with the data in data.json
.
For HTTP events, you can also call the function directly with cURL or any other HTTP client. For example:
curl https://localhost:9000
Read more about running the local server in the Cargo Lambda documentation for the watch
command.
Read more about invoking the function in the Cargo Lambda documentation for the invoke
command.
To deploy the project, run cargo lambda deploy
. This will create an IAM role and a Lambda function in your AWS account.
Read more about deploying your lambda function in the Cargo Lambda documentation.