From b64057c702cec496ca4ac9455b769282b7ce6377 Mon Sep 17 00:00:00 2001 From: Anton Babenko <anton@antonbabenko.com> Date: Fri, 6 Sep 2024 17:31:45 -0700 Subject: [PATCH] Added more runtime examples for Rust, Go, Java --- .pre-commit-config.yaml | 4 +- README.md | 9 +- examples/alias/README.md | 4 +- examples/async/README.md | 4 +- examples/build-package/README.md | 6 +- examples/code-signing/README.md | 4 +- examples/complete/README.md | 4 +- examples/container-image/README.md | 4 +- examples/deploy/README.md | 4 +- examples/event-source-mapping/README.md | 63 + examples/fixtures/runtimes/go/.gitignore | 2 + examples/fixtures/runtimes/go/go.mod | 5 + examples/fixtures/runtimes/go/main.go | 23 + examples/fixtures/runtimes/java21/.gitignore | 2 + .../fixtures/runtimes/java21/build.gradle | 40 + .../java21/src/main/java/example/Handler.java | 19 + examples/fixtures/runtimes/rust/.gitignore | 2 + .../{rust-app1 => runtimes/rust}/Cargo.toml | 0 .../{rust-app1 => runtimes/rust}/src/main.rs | 2 +- examples/fixtures/rust-app1/.gitignore | 1 - examples/fixtures/rust-app1/Cargo.lock | 1017 ----------------- examples/multiple-regions/README.md | 4 +- examples/runtimes/README.md | 68 ++ examples/runtimes/checks.tf | 37 + examples/runtimes/java_eq_fun.tf | 31 + examples/runtimes/main.tf | 98 ++ examples/runtimes/outputs.tf | 24 + examples/runtimes/variables.tf | 0 examples/runtimes/versions.tf | 18 + examples/simple-cicd/README.md | 4 +- examples/simple/README.md | 6 +- examples/simple/main.tf | 613 +++++----- examples/triggers/README.md | 4 +- examples/with-efs/README.md | 4 +- examples/with-vpc-s3-endpoint/README.md | 4 +- examples/with-vpc/README.md | 4 +- modules/alias/README.md | 4 +- modules/deploy/README.md | 4 +- modules/docker-build/README.md | 4 +- wrappers/README.md | 39 + wrappers/alias/README.md | 36 + wrappers/deploy/README.md | 38 + wrappers/docker-build/README.md | 38 + 43 files changed, 921 insertions(+), 1380 deletions(-) create mode 100644 examples/fixtures/runtimes/go/.gitignore create mode 100644 examples/fixtures/runtimes/go/go.mod create mode 100644 examples/fixtures/runtimes/go/main.go create mode 100644 examples/fixtures/runtimes/java21/.gitignore create mode 100644 examples/fixtures/runtimes/java21/build.gradle create mode 100644 examples/fixtures/runtimes/java21/src/main/java/example/Handler.java create mode 100644 examples/fixtures/runtimes/rust/.gitignore rename examples/fixtures/{rust-app1 => runtimes/rust}/Cargo.toml (100%) rename examples/fixtures/{rust-app1 => runtimes/rust}/src/main.rs (96%) delete mode 100644 examples/fixtures/rust-app1/.gitignore delete mode 100644 examples/fixtures/rust-app1/Cargo.lock create mode 100644 examples/runtimes/README.md create mode 100644 examples/runtimes/checks.tf create mode 100644 examples/runtimes/java_eq_fun.tf create mode 100644 examples/runtimes/main.tf create mode 100644 examples/runtimes/outputs.tf create mode 100644 examples/runtimes/variables.tf create mode 100644 examples/runtimes/versions.tf diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3ae4b8ba..f28966e0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/antonbabenko/pre-commit-terraform - rev: v1.92.2 + rev: v1.94.1 hooks: - id: terraform_fmt - id: terraform_wrapper_module_for_each @@ -29,3 +29,5 @@ repos: - id: check-merge-conflict - id: end-of-file-fixer - id: trailing-whitespace + - id: mixed-line-ending + args: [--fix=lf] diff --git a/README.md b/README.md index dbbf0fb1..8661d7ee 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ This Terraform module is the part of [serverless.tf framework](https://github.co ## Features - Build dependencies for your Lambda Function and Layer. -- Support builds locally and in Docker (with or without SSH agent support for private builds). +- Support builds locally and in Docker (with or without SSH agent support for private builds) for any runtime and architecture supported by AWS Lambda. - Create deployment package or deploy existing (previously built package) from local, from S3, from URL, or from AWS ECR repository. - Store deployment packages locally or in the S3 bucket. - Support almost all features of Lambda resources (function, layer, alias, etc.) @@ -384,7 +384,7 @@ When `source_path` is set to a list of directories the content of each will be t ### Combine various options for extreme flexibility -This is the most complete way of creating a deployment package from multiple sources with multiple dependencies. This example is showing some of the available options (see [examples/build-package](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/build-package) for more): +This is the most complete way of creating a deployment package from multiple sources with multiple dependencies. This example is showing some of the available options (see [examples/build-package](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/build-package) and [examples/runtimes](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/runtimes) for more): ```hcl source_path = [ @@ -643,6 +643,7 @@ Q4: What does this error mean - `"We currently do not support adding policies fo - [Complete](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/complete) - Create Lambda resources in various combinations with all supported features. - [Container Image](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/container-image) - Create a Docker image with a platform specified in the Dockerfile (using [docker provider](https://registry.terraform.io/providers/kreuzwerker/docker)), push it to AWS ECR, and create Lambda function from it. - [Build and Package](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/build-package) - Build and create deployment packages in various ways. +- [Runtimes](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/build-package) - Build and create deployment packages for various runtimes (such as Rust, Go, Java). - [Alias](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/alias) - Create static and dynamic aliases in various ways. - [Deploy](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/deploy) - Complete end-to-end build/update/deploy process using AWS CodeDeploy. - [Async Invocations](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/async) - Create Lambda Function with async event configuration (with SQS, SNS, and EventBridge integration). @@ -660,7 +661,7 @@ Q4: What does this error mean - `"We currently do not support adding policies fo - [1Mill/serverless-tf-examples](https://github.com/1Mill/serverless-tf-examples/tree/main/src) -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -904,7 +905,7 @@ No modules. | <a name="output_lambda_role_unique_id"></a> [lambda\_role\_unique\_id](#output\_lambda\_role\_unique\_id) | The unique id of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> ## Development diff --git a/examples/alias/README.md b/examples/alias/README.md index 6326614c..bc734f66 100644 --- a/examples/alias/README.md +++ b/examples/alias/README.md @@ -14,7 +14,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -83,4 +83,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/async/README.md b/examples/async/README.md index 40c6fbb9..5223af96 100644 --- a/examples/async/README.md +++ b/examples/async/README.md @@ -14,7 +14,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -72,4 +72,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/build-package/README.md b/examples/build-package/README.md index e77c0c59..f4856320 100644 --- a/examples/build-package/README.md +++ b/examples/build-package/README.md @@ -2,6 +2,8 @@ Configuration in this directory creates deployment packages in a variety of combinations. +Look into [Runtimes Examples](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/runtimes) for more ways to build and deploy AWS Lambda Functions using supported runtimes (Rust, Go, Java). + ## Usage To run this example you need to execute: @@ -14,7 +16,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -69,4 +71,4 @@ No inputs. ## Outputs No outputs. -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/code-signing/README.md b/examples/code-signing/README.md index feaa1b38..e1a5a692 100644 --- a/examples/code-signing/README.md +++ b/examples/code-signing/README.md @@ -14,7 +14,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -59,4 +59,4 @@ No inputs. | <a name="output_lambda_function_invoke_arn"></a> [lambda\_function\_invoke\_arn](#output\_lambda\_function\_invoke\_arn) | The Invoke ARN of the Lambda Function | | <a name="output_lambda_function_signing_job_arn"></a> [lambda\_function\_signing\_job\_arn](#output\_lambda\_function\_signing\_job\_arn) | ARN of the signing job | | <a name="output_lambda_function_signing_profile_version_arn"></a> [lambda\_function\_signing\_profile\_version\_arn](#output\_lambda\_function\_signing\_profile\_version\_arn) | ARN of the signing profile version | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/complete/README.md b/examples/complete/README.md index 92c3256b..eba6ef49 100644 --- a/examples/complete/README.md +++ b/examples/complete/README.md @@ -15,7 +15,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -92,4 +92,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/container-image/README.md b/examples/container-image/README.md index 4ee6505a..4053da3a 100644 --- a/examples/container-image/README.md +++ b/examples/container-image/README.md @@ -14,7 +14,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -79,4 +79,4 @@ No inputs. | <a name="output_lambda_layer_version"></a> [lambda\_layer\_version](#output\_lambda\_layer\_version) | The Lambda Layer version | | <a name="output_lambda_role_arn"></a> [lambda\_role\_arn](#output\_lambda\_role\_arn) | The ARN of the IAM role created for the Lambda Function | | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/deploy/README.md b/examples/deploy/README.md index b900c919..198f5cf4 100644 --- a/examples/deploy/README.md +++ b/examples/deploy/README.md @@ -14,7 +14,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -63,4 +63,4 @@ No inputs. | <a name="output_codedeploy_iam_role_name"></a> [codedeploy\_iam\_role\_name](#output\_codedeploy\_iam\_role\_name) | Name of IAM role used by CodeDeploy | | <a name="output_deploy_script"></a> [deploy\_script](#output\_deploy\_script) | Path to a deployment script | | <a name="output_script"></a> [script](#output\_script) | Deployment script | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/event-source-mapping/README.md b/examples/event-source-mapping/README.md index 0f34132e..fcf53677 100644 --- a/examples/event-source-mapping/README.md +++ b/examples/event-source-mapping/README.md @@ -13,3 +13,66 @@ $ terraform apply ``` Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. + +<!-- BEGIN_TF_DOCS --> +## Requirements + +| Name | Version | +|------|---------| +| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | +| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.32 | +| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.0 | + +## Providers + +| Name | Version | +|------|---------| +| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.32 | +| <a name="provider_random"></a> [random](#provider\_random) | >= 2.0 | + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| <a name="module_lambda_function"></a> [lambda\_function](#module\_lambda\_function) | ../../ | n/a | +| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 | + +## Resources + +| Name | Type | +|------|------| +| [aws_dynamodb_table.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/dynamodb_table) | resource | +| [aws_kinesis_stream.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kinesis_stream) | resource | +| [aws_mq_broker.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/mq_broker) | resource | +| [aws_secretsmanager_secret.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret) | resource | +| [aws_secretsmanager_secret_version.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret_version) | resource | +| [aws_sqs_queue.failure](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue) | resource | +| [aws_sqs_queue.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue) | resource | +| [random_password.this](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource | +| [random_pet.this](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet) | resource | +| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source | +| [aws_organizations_organization.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/organizations_organization) | data source | + +## Inputs + +No inputs. + +## Outputs + +| Name | Description | +|------|-------------| +| <a name="output_lambda_event_source_mapping_function_arn"></a> [lambda\_event\_source\_mapping\_function\_arn](#output\_lambda\_event\_source\_mapping\_function\_arn) | The the ARN of the Lambda function the event source mapping is sending events to | +| <a name="output_lambda_event_source_mapping_state"></a> [lambda\_event\_source\_mapping\_state](#output\_lambda\_event\_source\_mapping\_state) | The state of the event source mapping | +| <a name="output_lambda_event_source_mapping_state_transition_reason"></a> [lambda\_event\_source\_mapping\_state\_transition\_reason](#output\_lambda\_event\_source\_mapping\_state\_transition\_reason) | The reason the event source mapping is in its current state | +| <a name="output_lambda_event_source_mapping_uuid"></a> [lambda\_event\_source\_mapping\_uuid](#output\_lambda\_event\_source\_mapping\_uuid) | The UUID of the created event source mapping | +| <a name="output_lambda_function_arn"></a> [lambda\_function\_arn](#output\_lambda\_function\_arn) | The ARN of the Lambda Function | +| <a name="output_lambda_function_arn_static"></a> [lambda\_function\_arn\_static](#output\_lambda\_function\_arn\_static) | The static ARN of the Lambda Function. Use this to avoid cycle errors between resources (e.g., Step Functions) | +| <a name="output_lambda_function_invoke_arn"></a> [lambda\_function\_invoke\_arn](#output\_lambda\_function\_invoke\_arn) | The Invoke ARN of the Lambda Function | +| <a name="output_lambda_function_kms_key_arn"></a> [lambda\_function\_kms\_key\_arn](#output\_lambda\_function\_kms\_key\_arn) | The ARN for the KMS encryption key of Lambda Function | +| <a name="output_lambda_function_last_modified"></a> [lambda\_function\_last\_modified](#output\_lambda\_function\_last\_modified) | The date Lambda Function resource was last modified | +| <a name="output_lambda_function_name"></a> [lambda\_function\_name](#output\_lambda\_function\_name) | The name of the Lambda Function | +| <a name="output_lambda_function_qualified_arn"></a> [lambda\_function\_qualified\_arn](#output\_lambda\_function\_qualified\_arn) | The ARN identifying your Lambda Function Version | +| <a name="output_lambda_function_source_code_hash"></a> [lambda\_function\_source\_code\_hash](#output\_lambda\_function\_source\_code\_hash) | Base64-encoded representation of raw SHA-256 sum of the zip file | +| <a name="output_lambda_function_source_code_size"></a> [lambda\_function\_source\_code\_size](#output\_lambda\_function\_source\_code\_size) | The size in bytes of the function .zip file | +| <a name="output_lambda_function_version"></a> [lambda\_function\_version](#output\_lambda\_function\_version) | Latest published version of Lambda Function | +<!-- END_TF_DOCS --> diff --git a/examples/fixtures/runtimes/go/.gitignore b/examples/fixtures/runtimes/go/.gitignore new file mode 100644 index 00000000..2da3a426 --- /dev/null +++ b/examples/fixtures/runtimes/go/.gitignore @@ -0,0 +1,2 @@ +go.sum +bootstrap diff --git a/examples/fixtures/runtimes/go/go.mod b/examples/fixtures/runtimes/go/go.mod new file mode 100644 index 00000000..c572c2e4 --- /dev/null +++ b/examples/fixtures/runtimes/go/go.mod @@ -0,0 +1,5 @@ +module main + +go 1.22.6 + +require github.com/aws/aws-lambda-go v1.47.0 // indirect diff --git a/examples/fixtures/runtimes/go/main.go b/examples/fixtures/runtimes/go/main.go new file mode 100644 index 00000000..6a5defa1 --- /dev/null +++ b/examples/fixtures/runtimes/go/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "context" + "fmt" + "github.com/aws/aws-lambda-go/lambda" +) + +type MyEvent struct { + Name string `json:"name"` +} + +func HandleRequest(ctx context.Context, event *MyEvent) (*string, error) { + if event == nil { + return nil, fmt.Errorf("received nil event") + } + message := fmt.Sprintf("Hello %s! serverless.tf was here!", event.Name) + return &message, nil +} + +func main() { + lambda.Start(HandleRequest) +} diff --git a/examples/fixtures/runtimes/java21/.gitignore b/examples/fixtures/runtimes/java21/.gitignore new file mode 100644 index 00000000..67bcc2f7 --- /dev/null +++ b/examples/fixtures/runtimes/java21/.gitignore @@ -0,0 +1,2 @@ +.gradle/ +build/ diff --git a/examples/fixtures/runtimes/java21/build.gradle b/examples/fixtures/runtimes/java21/build.gradle new file mode 100644 index 00000000..53f6f6ee --- /dev/null +++ b/examples/fixtures/runtimes/java21/build.gradle @@ -0,0 +1,40 @@ +plugins { + id 'java' +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'com.amazonaws:aws-lambda-java-core:1.2.1' + implementation 'org.slf4j:slf4j-nop:2.0.6' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' +} + +test { + useJUnitPlatform() +} + +// Using terraform-aws-lambda module, there is no need to make Zip archive by Gradle. Terraform AWS module will make it for you. +// task buildZip(type: Zip) { +// from compileJava +// from processResources +// into('lib') { +// from configurations.runtimeClasspath +// } +// } + +task copyFiles(type: Copy) { + into("$buildDir/output") + + from sourceSets.main.output + + into('lib') { + from configurations.runtimeClasspath + } +} + +build.dependsOn copyFiles diff --git a/examples/fixtures/runtimes/java21/src/main/java/example/Handler.java b/examples/fixtures/runtimes/java21/src/main/java/example/Handler.java new file mode 100644 index 00000000..08b14d81 --- /dev/null +++ b/examples/fixtures/runtimes/java21/src/main/java/example/Handler.java @@ -0,0 +1,19 @@ +package example; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.LambdaLogger; +import com.amazonaws.services.lambda.runtime.RequestHandler; + +import java.util.Map; + +// Handler value: example.Handler +public class Handler implements RequestHandler<Map<String,String>, String>{ + + @Override + public String handleRequest(Map<String,String> event, Context context) + { + LambdaLogger logger = context.getLogger(); + logger.log("EVENT TYPE: " + event.getClass()); + return "Hello from serverless.tf!!!"; + } +} diff --git a/examples/fixtures/runtimes/rust/.gitignore b/examples/fixtures/runtimes/rust/.gitignore new file mode 100644 index 00000000..96ef6c0b --- /dev/null +++ b/examples/fixtures/runtimes/rust/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/examples/fixtures/rust-app1/Cargo.toml b/examples/fixtures/runtimes/rust/Cargo.toml similarity index 100% rename from examples/fixtures/rust-app1/Cargo.toml rename to examples/fixtures/runtimes/rust/Cargo.toml diff --git a/examples/fixtures/rust-app1/src/main.rs b/examples/fixtures/runtimes/rust/src/main.rs similarity index 96% rename from examples/fixtures/rust-app1/src/main.rs rename to examples/fixtures/runtimes/rust/src/main.rs index 766f0a18..4432a31c 100644 --- a/examples/fixtures/rust-app1/src/main.rs +++ b/examples/fixtures/runtimes/rust/src/main.rs @@ -10,7 +10,7 @@ async fn function_handler(event: Request) -> Result<Response<Body>, Error> { .query_string_parameters_ref() .and_then(|params| params.first("name")) .unwrap_or("world"); - let message = format!("Hello {who}, this is an AWS Lambda HTTP request"); + let message = format!("Hello {who}, this is an AWS Lambda HTTP request. serverless.tf was here!"); // Return something that implements IntoResponse. // It will be serialized to the right response event automatically by the runtime diff --git a/examples/fixtures/rust-app1/.gitignore b/examples/fixtures/rust-app1/.gitignore deleted file mode 100644 index ea8c4bf7..00000000 --- a/examples/fixtures/rust-app1/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/examples/fixtures/rust-app1/Cargo.lock b/examples/fixtures/rust-app1/Cargo.lock deleted file mode 100644 index 275caa9c..00000000 --- a/examples/fixtures/rust-app1/Cargo.lock +++ /dev/null @@ -1,1017 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "async-stream" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "autocfg" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "aws_lambda_events" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7319a086b79c3ff026a33a61e80f04fd3885fbb73237981ea080d21944e1cb1c" -dependencies = [ - "base64", - "bytes", - "http", - "http-body", - "http-serde", - "query_map", - "serde", - "serde_json", -] - -[[package]] -name = "backtrace" -version = "0.3.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bytes" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" -dependencies = [ - "serde", -] - -[[package]] -name = "cc" -version = "1.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-executor" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" - -[[package]] -name = "futures-macro" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "gimli" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "http" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" -dependencies = [ - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "http-serde" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd" -dependencies = [ - "http", - "serde", -] - -[[package]] -name = "httparse" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" - -[[package]] -name = "hyper" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-util" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "pin-project-lite", - "socket2", - "tokio", - "tower", - "tower-service", - "tracing", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "lambda_http" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fe279be7f89f5f72c97c3a96f45c43db8edab1007320ecc6a5741273b4d6db" -dependencies = [ - "aws_lambda_events", - "base64", - "bytes", - "encoding_rs", - "futures", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "lambda_runtime", - "mime", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "tokio-stream", - "url", -] - -[[package]] -name = "lambda_runtime" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed49669d6430292aead991e19bf13153135a884f916e68f32997c951af637ebe" -dependencies = [ - "async-stream", - "base64", - "bytes", - "futures", - "http", - "http-body", - "http-body-util", - "http-serde", - "hyper", - "hyper-util", - "lambda_runtime_api_client", - "pin-project", - "serde", - "serde_json", - "serde_path_to_error", - "tokio", - "tokio-stream", - "tower", - "tower-layer", - "tracing", -] - -[[package]] -name = "lambda_runtime_api_client" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c90a10f094475a34a04da2be11686c4dcfe214d93413162db9ffdff3d3af293a" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "tokio", - "tower", - "tower-service", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.158" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" -dependencies = [ - "hermit-abi", - "libc", - "wasi", - "windows-sys", -] - -[[package]] -name = "object" -version = "0.36.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "query_map" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eab6b8b1074ef3359a863758dae650c7c0c6027927a085b7af911c8e0bf3a15" -dependencies = [ - "form_urlencoded", - "serde", - "serde_derive", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "regex" -version = "1.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.4", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - -[[package]] -name = "rust-app1" -version = "0.1.0" -dependencies = [ - "lambda_http", - "tokio", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "serde" -version = "1.0.209" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.209" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.127" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" -dependencies = [ - "itoa", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "syn" -version = "2.0.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.39.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys", -] - -[[package]] -name = "tokio-macros" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-serde" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "matchers", - "once_cell", - "regex", - "serde", - "serde_json", - "sharded-slab", - "thread_local", - "tracing", - "tracing-core", - "tracing-serde", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "url" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/examples/multiple-regions/README.md b/examples/multiple-regions/README.md index af982fc8..52da31c0 100644 --- a/examples/multiple-regions/README.md +++ b/examples/multiple-regions/README.md @@ -15,7 +15,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -75,4 +75,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/runtimes/README.md b/examples/runtimes/README.md new file mode 100644 index 00000000..60c06c44 --- /dev/null +++ b/examples/runtimes/README.md @@ -0,0 +1,68 @@ +# Runtimes Examples + +Configuration in this directory creates deployment packages for [various runtimes and programming languages (Rust, Go, Java)](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). + +Each runtime is executable by calling created Lambda Functions at the end. + +Look into [Build Package Examples](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/build-package) for more ways to build package (regardless of the runtime). + +## Usage + +To run this example you need to execute: + +```bash +$ terraform init +$ terraform plan +$ terraform apply +``` + +Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. + +<!-- BEGIN_TF_DOCS --> +## Requirements + +| Name | Version | +|------|---------| +| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | +| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.63 | +| <a name="requirement_http"></a> [http](#requirement\_http) | >= 3.0 | +| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 | + +## Providers + +| Name | Version | +|------|---------| +| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.63 | +| <a name="provider_http"></a> [http](#provider\_http) | >= 3.0 | +| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 | + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| <a name="module_go_lambda_function"></a> [go\_lambda\_function](#module\_go\_lambda\_function) | ../../ | n/a | +| <a name="module_java21_lambda_function"></a> [java21\_lambda\_function](#module\_java21\_lambda\_function) | ../../ | n/a | +| <a name="module_rust_lambda_function"></a> [rust\_lambda\_function](#module\_rust\_lambda\_function) | ../../ | n/a | + +## Resources + +| Name | Type | +|------|------| +| [random_pet.this](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet) | resource | +| [aws_lambda_invocation.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lambda_invocation) | data source | +| [http_http.this](https://registry.terraform.io/providers/hashicorp/http/latest/docs/data-sources/http) | data source | + +## Inputs + +No inputs. + +## Outputs + +| Name | Description | +|------|-------------| +| <a name="output_go_lambda_function_url"></a> [go\_lambda\_function\_url](#output\_go\_lambda\_function\_url) | The URL of the Lambda Function in Go | +| <a name="output_java21_lambda_function_arn"></a> [java21\_lambda\_function\_arn](#output\_java21\_lambda\_function\_arn) | The ARN of the Lambda Function in Java 21 | +| <a name="output_lambda_function_result"></a> [lambda\_function\_result](#output\_lambda\_function\_result) | The results of the Lambda Function calls | +| <a name="output_lambda_function_status_codes"></a> [lambda\_function\_status\_codes](#output\_lambda\_function\_status\_codes) | The status codes of the Lambda Function calls | +| <a name="output_rust_lambda_function_url"></a> [rust\_lambda\_function\_url](#output\_rust\_lambda\_function\_url) | The URL of the Lambda Function in Rust | +<!-- END_TF_DOCS --> diff --git a/examples/runtimes/checks.tf b/examples/runtimes/checks.tf new file mode 100644 index 00000000..cbf0f2b8 --- /dev/null +++ b/examples/runtimes/checks.tf @@ -0,0 +1,37 @@ +locals { + successful_response_keyword = "serverless.tf" +} + +data "http" "this" { + for_each = { + rust = module.rust_lambda_function.lambda_function_url, + go = module.go_lambda_function.lambda_function_url, + } + + url = each.value + + lifecycle { + postcondition { + condition = length(regexall(local.successful_response_keyword, self.response_body)) > 0 + error_message = "${each.key}: ${local.successful_response_keyword} should be in the response." + } + } +} + +# I don't know how to make Java21 example to work with Lambda Function URL, so using Lambda Function invocation instead +data "aws_lambda_invocation" "this" { + for_each = { + java21 = module.java21_lambda_function.lambda_function_name, + } + + function_name = each.value + + input = jsonencode({}) + + lifecycle { + postcondition { + condition = length(regexall(local.successful_response_keyword, jsondecode(self.result))) > 0 + error_message = "${each.key}: ${local.successful_response_keyword} should be in the response." + } + } +} diff --git a/examples/runtimes/java_eq_fun.tf b/examples/runtimes/java_eq_fun.tf new file mode 100644 index 00000000..b4c995a1 --- /dev/null +++ b/examples/runtimes/java_eq_fun.tf @@ -0,0 +1,31 @@ +# Build the zip archive whenever the filename changes. +# locals { +# java21_working_dir = "${path.module}/runtimes/java21" +# java21_build_command = "gradle build -i" + +# source_path = local.java21_working_dir +# path_include = ["**"] +# path_exclude = ["**/.gradle/**", "**/build/**"] +# files_include = setunion([for f in local.path_include : fileset(local.source_path, f)]...) +# files_exclude = setunion([for f in local.path_exclude : fileset(local.source_path, f)]...) +# files = sort(setsubtract(local.files_include, local.files_exclude)) + +# dir_sha = sha1(join("", [for f in local.files : filesha1("${local.source_path}/${f}")])) +# } + +# resource "null_resource" "java21_build" { +# triggers = { +# # todo: Add tracking for content changes +# dir_sha = local.dir_sha +# command = local.java21_build_command +# } + +# provisioner "local-exec" { +# working_dir = local.java21_working_dir +# command = local.java21_build_command +# } +# } + +# create_package = false +# local_existing_package = "${local.java21_working_dir}/build/distributions/java21.zip" +# depends_on = [null_resource.java21_build] diff --git a/examples/runtimes/main.tf b/examples/runtimes/main.tf new file mode 100644 index 00000000..5529a90c --- /dev/null +++ b/examples/runtimes/main.tf @@ -0,0 +1,98 @@ +provider "aws" { + region = "eu-west-1" +} + +module "rust_lambda_function" { + source = "../../" + + function_name = "${random_pet.this.id}-rust" + + attach_cloudwatch_logs_policy = false + cloudwatch_logs_retention_in_days = 1 + + create_lambda_function_url = true + + handler = "bootstrap" + runtime = "provided.al2023" + architectures = ["arm64"] # x86_64 (empty); arm64 (cargo lambda build --arm64) + + trigger_on_package_timestamp = false + + source_path = [ + { + path = "${path.module}/../fixtures/runtimes/rust" + commands = [ + # https://www.cargo-lambda.info/ + "cargo lambda build --release --arm64", + "cd target/lambda/rust-app1", + ":zip", + ] + patterns = [ + "!.*", + "bootstrap", + ] + } + ] +} + +module "go_lambda_function" { + source = "../../" + + function_name = "${random_pet.this.id}-go" + + attach_cloudwatch_logs_policy = false + cloudwatch_logs_retention_in_days = 1 + + create_lambda_function_url = true + + handler = "bootstrap" + runtime = "provided.al2023" + architectures = ["arm64"] # x86_64 (GOARCH=amd64); arm64 (GOARCH=arm64) + + trigger_on_package_timestamp = false + + source_path = [ + { + path = "${path.module}/../fixtures/runtimes/go" + commands = [ + "GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o bootstrap main.go", + ":zip", + ] + patterns = [ + "!.*", + "bootstrap", + ] + } + ] +} + +module "java21_lambda_function" { + source = "../../" + + function_name = "${random_pet.this.id}-java21" + + attach_cloudwatch_logs_policy = false + cloudwatch_logs_retention_in_days = 1 + + handler = "example.Handler" + runtime = "java21" + architectures = ["arm64"] # x86_64 (GOARCH=amd64); arm64 (GOARCH=arm64) + timeout = 30 + + trigger_on_package_timestamp = false + + source_path = [ + { + path = "${path.module}/../fixtures/runtimes/java21" + commands = [ + "gradle build -i", + "cd build/output", + ":zip", + ] + } + ] +} + +resource "random_pet" "this" { + length = 2 +} diff --git a/examples/runtimes/outputs.tf b/examples/runtimes/outputs.tf new file mode 100644 index 00000000..9c12c1d6 --- /dev/null +++ b/examples/runtimes/outputs.tf @@ -0,0 +1,24 @@ +output "rust_lambda_function_url" { + description = "The URL of the Lambda Function in Rust" + value = module.rust_lambda_function.lambda_function_url +} + +output "go_lambda_function_url" { + description = "The URL of the Lambda Function in Go" + value = module.go_lambda_function.lambda_function_url +} + +output "java21_lambda_function_arn" { + description = "The ARN of the Lambda Function in Java 21" + value = module.java21_lambda_function.lambda_function_arn +} + +output "lambda_function_result" { + description = "The results of the Lambda Function calls" + value = { for k, v in data.aws_lambda_invocation.this : k => jsondecode(v.result) } +} + +output "lambda_function_status_codes" { + description = "The status codes of the Lambda Function calls" + value = { for k, v in data.http.this : k => v.status_code } +} diff --git a/examples/runtimes/variables.tf b/examples/runtimes/variables.tf new file mode 100644 index 00000000..e69de29b diff --git a/examples/runtimes/versions.tf b/examples/runtimes/versions.tf new file mode 100644 index 00000000..e34e96ec --- /dev/null +++ b/examples/runtimes/versions.tf @@ -0,0 +1,18 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + aws = { + source = "hashicorp/aws" + version = ">= 4.63" + } + random = { + source = "hashicorp/random" + version = ">= 3.0" + } + http = { + source = "hashicorp/http" + version = ">= 3.0" + } + } +} diff --git a/examples/simple-cicd/README.md b/examples/simple-cicd/README.md index 93d1e4c5..c9ba9046 100644 --- a/examples/simple-cicd/README.md +++ b/examples/simple-cicd/README.md @@ -16,7 +16,7 @@ To run this example you need to execute: Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -50,4 +50,4 @@ No inputs. ## Outputs No outputs. -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/simple/README.md b/examples/simple/README.md index a8e129ab..efe37923 100644 --- a/examples/simple/README.md +++ b/examples/simple/README.md @@ -14,7 +14,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -33,7 +33,7 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Source | Version | |------|--------|---------| -| <a name="module_rust_lambda_function"></a> [rust\_lambda\_function](#module\_rust\_lambda\_function) | ../../ | n/a | +| <a name="module_lambda_function"></a> [lambda\_function](#module\_lambda\_function) | ../../ | n/a | ## Resources @@ -48,4 +48,4 @@ No inputs. ## Outputs No outputs. -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/simple/main.tf b/examples/simple/main.tf index c95de3f7..20c51910 100644 --- a/examples/simple/main.tf +++ b/examples/simple/main.tf @@ -29,333 +29,304 @@ resource "random_pet" "this" { # name = "/aws/lambda/us-east-1.${random_pet.this.id}-lambda-simple" #} -module "rust_lambda_function" { +module "lambda_function" { source = "../../" - # create_function = false - publish = true - function_name = "${random_pet.this.id}-rust-lambda-simple" - handler = "bootstrap" - runtime = "provided.al2023" - architectures = ["arm64"] - - create_lambda_function_url = true + function_name = "${random_pet.this.id}-lambda-simple" + handler = "index.lambda_handler" + runtime = "python3.12" + + # role_maximum_session_duration = 7200 + + # attach_cloudwatch_logs_policy = false + + # use_existing_cloudwatch_log_group = true + + # lambda_at_edge = true + + # independent_file_timestamps = true + + # store_on_s3 = true + # s3_bucket = module.s3_bucket.s3_bucket_id + + # create_package = false + # local_existing_package = data.null_data_source.downloaded_package.outputs["filename"] + + # snap_start = true + + # policy_json = <<EOF + #{ + # "Version": "2012-10-17", + # "Statement": [ + # { + # "Effect": "Allow", + # "Action": [ + # "xray:GetSamplingStatisticSummaries" + # ], + # "Resource": ["*"] + # } + # ] + #} + #EOF + # + # policy = "arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess" + # policies = ["arn:aws:iam::aws:policy/AWSXrayReadOnlyAccess"] + # + # policy_statements = { + # dynamodb = { + # effect = "Allow", + # actions = ["dynamodb:BatchWriteItem"], + # resources = ["arn:aws:dynamodb:eu-west-1:052212379155:table/Test"] + # }, + # s3_read = { + # effect = "Deny", + # actions = ["s3:HeadObject", "s3:GetObject"], + # resources = ["arn:aws:s3:::my-bucket/*"] + # } + # } + + # source_path = "${path.module}/../fixtures/python-app1/" + + # source_path = [ + # "${path.module}/../fixtures/python-app1/index.py", + # { + # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" + # prefix_in_zip = "vendor" + # } + # ] + + # source_path = [ + # "${path.module}/../fixtures/python-app1/index.py", + # "${path.module}/../fixtures/python-app1/dir1/dir2", + # { + # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" + # } + # ] + + # source_path = [ + # { + # path = "${path.module}/../fixtures/python-app1" + # } + # ] + + # source_path = [ + # { + # path = "${path.module}/../fixtures/python-app1" + # pip_requirements = false + # } + # ] + + # source_path = [ + # { + # path = "${path.module}/../fixtures/python-app1" + # pip_requirements = true + # } + # ] + + # source_path = [ + # { + # path = "${path.module}/../fixtures/python-app1" + # commands = [ + # ":zip", + # "cd `mktemp -d`", + # "pip install --target=. -r ${path.module}/../fixtures/python-app1/requirements.txt", + # ":zip . vendor/", + # ] + # patterns = [ + # "!vendor/colorful-0.5.4.dist-info/RECORD", + # "!vendor/colorful-.+.dist-info/.*", + # "!vendor/colorful/__pycache__/?.*", + # ] + # } + # ] source_path = [ - { - path = "${path.module}/../fixtures/rust-app1" - commands = [ - "cargo lambda build --release --arm64", - "cd target/lambda/rust-app1", - ":zip", - ] - patterns = [ - "bootstrap", - ] - } + # { + # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" + # pip_requirements = "${path.module}/../deploy/requirements.txt" + # }, + "${path.module}/../fixtures/python-app1/index.py", + # { + # path = "${path.module}/../fixtures/python-app1/index.py" + # patterns = <<END + # # To use comments in heredoc patterns set the env var: + # # export TF_LAMBDA_PACKAGE_PATTERN_COMMENTS=true + # # The intent for comments just to use in examples and demo snippets. + # # To write a comment start it with double spaces and the # sign + # # if it follows a pattern. + # + # !index\.py # Exclude a file with 'index.py' name + # index\..* # Re-include + # END + # }, + # { + # path = "${path.module}/../fixtures/dirtree" + # # prefix_in_zip = "vendor" + # patterns = <<END + # # To see step by step output how files and folders was skipped or added + # # set an env var in your shell by a command similar to: + # # export TF_LAMBDA_PACKAGE_LOG_LEVEL=DEBUG + # + # # To play with this demo pattern you can go to a ../fixtures folder + # # and run there a dirtree.sh script to create a demo dirs tree + # # matchable by following patterns. + # + # # !abc/.* # Filter out everything in an abc folder with the folder itself + # # !abc/.+ # Filter out just all folder's content but keep the folder even if it's empty + # abc/def/.* # Re-include everything in abc/def sub folder + # # !abc/def/ghk/.* # Filter out again in abc/def/ghk sub folder + # !.*/fiv.* + # !.*/zi--.* + # + # ######################################################################## + # # Special cases + # + # # !.*/ # Removes all explicit directories from a zip file, mean while + # # the zip file still valid and unpacks correctly but will not + # # contain any empty directories. + # + # # !.*/bar/ # To remove just some directory use more qualified path to it. + # + # # !([^/]+/){3,} # Remove all directories more than 3 folders in depth. + # END + # } ] -} - -# module "lambda_function" { -# source = "../../" - -# publish = true - -# function_name = "${random_pet.this.id}-rust-lambda-simple" -# handler = "index.lambda_handler" -# runtime = "python3.12" - -# # role_maximum_session_duration = 7200 - -# # attach_cloudwatch_logs_policy = false - -# # use_existing_cloudwatch_log_group = true - -# # lambda_at_edge = true - -# # independent_file_timestamps = true - -# # store_on_s3 = true -# # s3_bucket = module.s3_bucket.s3_bucket_id - -# # create_package = false -# # local_existing_package = data.null_data_source.downloaded_package.outputs["filename"] - -# # snap_start = true - -# # policy_json = <<EOF -# #{ -# # "Version": "2012-10-17", -# # "Statement": [ -# # { -# # "Effect": "Allow", -# # "Action": [ -# # "xray:GetSamplingStatisticSummaries" -# # ], -# # "Resource": ["*"] -# # } -# # ] -# #} -# #EOF -# # -# # policy = "arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess" -# # policies = ["arn:aws:iam::aws:policy/AWSXrayReadOnlyAccess"] -# # -# # policy_statements = { -# # dynamodb = { -# # effect = "Allow", -# # actions = ["dynamodb:BatchWriteItem"], -# # resources = ["arn:aws:dynamodb:eu-west-1:052212379155:table/Test"] -# # }, -# # s3_read = { -# # effect = "Deny", -# # actions = ["s3:HeadObject", "s3:GetObject"], -# # resources = ["arn:aws:s3:::my-bucket/*"] -# # } -# # } - -# # source_path = "${path.module}/../fixtures/python-app1/" -# # source_path = [ -# # "${path.module}/../fixtures/python-app1/index.py", -# # { -# # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" -# # prefix_in_zip = "vendor" -# # } -# # ] - -# # source_path = [ -# # "${path.module}/../fixtures/python-app1/index.py", -# # "${path.module}/../fixtures/python-app1/dir1/dir2", -# # { -# # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" -# # } -# # ] - -# # source_path = [ -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # } -# # ] - -# # source_path = [ -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # pip_requirements = false -# # } -# # ] - -# # source_path = [ -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # pip_requirements = true -# # } -# # ] - -# # source_path = [ -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # commands = [ -# # ":zip", -# # "cd `mktemp -d`", -# # "pip install --target=. -r ${path.module}/../fixtures/python-app1/requirements.txt", -# # ":zip . vendor/", -# # ] -# # patterns = [ -# # "!vendor/colorful-0.5.4.dist-info/RECORD", -# # "!vendor/colorful-.+.dist-info/.*", -# # "!vendor/colorful/__pycache__/?.*", -# # ] -# # } -# # ] - -# source_path = [ -# # { -# # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" -# # pip_requirements = "${path.module}/../deploy/requirements.txt" -# # }, -# "${path.module}/../fixtures/python-app1/index.py", -# # { -# # path = "${path.module}/../fixtures/python-app1/index.py" -# # patterns = <<END -# # # To use comments in heredoc patterns set the env var: -# # # export TF_LAMBDA_PACKAGE_PATTERN_COMMENTS=true -# # # The intent for comments just to use in examples and demo snippets. -# # # To write a comment start it with double spaces and the # sign -# # # if it follows a pattern. -# # -# # !index\.py # Exclude a file with 'index.py' name -# # index\..* # Re-include -# # END -# # }, -# # { -# # path = "${path.module}/../fixtures/dirtree" -# # # prefix_in_zip = "vendor" -# # patterns = <<END -# # # To see step by step output how files and folders was skipped or added -# # # set an env var in your shell by a command similar to: -# # # export TF_LAMBDA_PACKAGE_LOG_LEVEL=DEBUG -# # -# # # To play with this demo pattern you can go to a ../fixtures folder -# # # and run there a dirtree.sh script to create a demo dirs tree -# # # matchable by following patterns. -# # -# # # !abc/.* # Filter out everything in an abc folder with the folder itself -# # # !abc/.+ # Filter out just all folder's content but keep the folder even if it's empty -# # abc/def/.* # Re-include everything in abc/def sub folder -# # # !abc/def/ghk/.* # Filter out again in abc/def/ghk sub folder -# # !.*/fiv.* -# # !.*/zi--.* -# # -# # ######################################################################## -# # # Special cases -# # -# # # !.*/ # Removes all explicit directories from a zip file, mean while -# # # the zip file still valid and unpacks correctly but will not -# # # contain any empty directories. -# # -# # # !.*/bar/ # To remove just some directory use more qualified path to it. -# # -# # # !([^/]+/){3,} # Remove all directories more than 3 folders in depth. -# # END -# # } -# ] - -# # source_path = [ -# # { -# # # path = "${path.module}/../fixtures/python-app1" -# # -# # # pip_requirements = true -# # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" -# # prefix_in_zip = "vendor" -# # # commands = ["pip install -r requirements.txt"] -# # -# # # patterns = <<END -# # # !.*/.*\.txt # Filter all txt files recursively -# # # node_modules/.* # Include empty dir or with a content if it exists -# # # node_modules/.+ # Include full non empty node_modules dir with its content -# # # node_modules/ # Include node_modules itself without its content -# # # # It's also a way to include an empty dir if it exists -# # # node_modules # Include a file or an existing dir only -# # # -# # # !abc/.* # Filter out everything in an abc folder -# # # abc/def/.* # Re-include everything in abc/def sub folder -# # # !abc/def/ghk/.* # Filter out again in abc/def/ghk sub folder -# # # END -# # -# # patterns = [ -# # "**/*.txt", -# # "", -# # "", -# # ] -# # }, -# # -# # ] - -# # source_path = [ -# # "${path.module}/../fixtures/python-app1-extra", -# # { -# # path = "${path.module}/../fixtures/python-appsadasdasd" -# # prefix_in_zip = "foo/bar-bla", -# # match = [ -# # "**/*.txt", -# # "", -# # "", -# # ] -# # }, -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # pip_requirements = true -# # prefix_in_zip = "foo/bar", -# # match = [ -# # "**/*.txt", -# # "", -# # "", -# # ] -# # }, -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # pip_requirements = "requirements.txt" -# # prefix_in_zip = "foo/bar", -# # match = [ -# # "!.*/.*\\.txt", -# # "", -# # ] -# # }, -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # commands = [ -# # "npm install", -# # ":zip" -# # ] -# # prefix_in_zip = "foo/bar", -# # patterns = [ -# # "!.*/.*\\.txt", # Filter all txt files recursively -# # "node_modules/.+", # Include -# # ] -# # }, -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # commands = [ -# # "npm install", -# # ":zip" -# # ] -# # prefix_in_zip = "foo/bar", # By default everything installs into the root of a zip package -# # patterns = <<END -# # !.*/.*\.txt # Filter all txt files recursively -# # node_modules/.* # Include empty dir or with a content if it exists -# # node_modules/.+ # Include full non empty node_modules dir with its content -# # node_modules/ # Include node_modules itself without its content -# # # It's also a way to include an empty dir if it exists -# # node_modules # Include a file or an existing dir only -# # -# # !abc/.* # Filter out everything in an abc folder -# # abc/def/.* # Re-include everything in abc/def sub folder -# # !abc/def/ghk/* # Filter out again in abc/def/ghk sub folder -# # END -# # }, -# # { -# # path = "${path.module}/../fixtures/python-app1" -# # commands = [ -# # "npm install", -# # ":zip" -# # ] -# # prefix_in_zip = "foo/bar", -# # patterns = [".*"] # default -# # } -# # ] - -# # build_in_docker = true -# # docker_pip_cache = true -# # docker_with_ssh_agent = true -# # docker_file = "${path.module}/../fixtures/python-app1/docker/Dockerfile" -# # docker_build_root = "${path.module}/../../docker" -# # docker_image = "public.ecr.aws/sam/build-python3.12" -# } + # source_path = [ + # { + # # path = "${path.module}/../fixtures/python-app1" + # + # # pip_requirements = true + # pip_requirements = "${path.module}/../fixtures/python-app1/requirements.txt" + # prefix_in_zip = "vendor" + # # commands = ["pip install -r requirements.txt"] + # + # # patterns = <<END + # # !.*/.*\.txt # Filter all txt files recursively + # # node_modules/.* # Include empty dir or with a content if it exists + # # node_modules/.+ # Include full non empty node_modules dir with its content + # # node_modules/ # Include node_modules itself without its content + # # # It's also a way to include an empty dir if it exists + # # node_modules # Include a file or an existing dir only + # # + # # !abc/.* # Filter out everything in an abc folder + # # abc/def/.* # Re-include everything in abc/def sub folder + # # !abc/def/ghk/.* # Filter out again in abc/def/ghk sub folder + # # END + # + # patterns = [ + # "**/*.txt", + # "", + # "", + # ] + # }, + # + # ] + + # source_path = [ + # "${path.module}/../fixtures/python-app1-extra", + # { + # path = "${path.module}/../fixtures/python-appsadasdasd" + # prefix_in_zip = "foo/bar-bla", + # match = [ + # "**/*.txt", + # "", + # "", + # ] + # }, + # { + # path = "${path.module}/../fixtures/python-app1" + # pip_requirements = true + # prefix_in_zip = "foo/bar", + # match = [ + # "**/*.txt", + # "", + # "", + # ] + # }, + # { + # path = "${path.module}/../fixtures/python-app1" + # pip_requirements = "requirements.txt" + # prefix_in_zip = "foo/bar", + # match = [ + # "!.*/.*\\.txt", + # "", + # ] + # }, + # { + # path = "${path.module}/../fixtures/python-app1" + # commands = [ + # "npm install", + # ":zip" + # ] + # prefix_in_zip = "foo/bar", + # patterns = [ + # "!.*/.*\\.txt", # Filter all txt files recursively + # "node_modules/.+", # Include + # ] + # }, + # { + # path = "${path.module}/../fixtures/python-app1" + # commands = [ + # "npm install", + # ":zip" + # ] + # prefix_in_zip = "foo/bar", # By default everything installs into the root of a zip package + # patterns = <<END + # !.*/.*\.txt # Filter all txt files recursively + # node_modules/.* # Include empty dir or with a content if it exists + # node_modules/.+ # Include full non empty node_modules dir with its content + # node_modules/ # Include node_modules itself without its content + # # It's also a way to include an empty dir if it exists + # node_modules # Include a file or an existing dir only + # + # !abc/.* # Filter out everything in an abc folder + # abc/def/.* # Re-include everything in abc/def sub folder + # !abc/def/ghk/* # Filter out again in abc/def/ghk sub folder + # END + # }, + # { + # path = "${path.module}/../fixtures/python-app1" + # commands = [ + # "npm install", + # ":zip" + # ] + # prefix_in_zip = "foo/bar", + # patterns = [".*"] # default + # } + # ] + + # build_in_docker = true + # docker_pip_cache = true + # docker_with_ssh_agent = true + # docker_file = "${path.module}/../fixtures/python-app1/docker/Dockerfile" + # docker_build_root = "${path.module}/../../docker" + # docker_image = "public.ecr.aws/sam/build-python3.12" +} -# #### -# # Download from remote and upload to S3 -# #### -# #locals { -# # package_url = "https://github.com/antonbabenko/terraform-aws-anything/archive/master.zip" -# # downloaded = "downloaded_package_${md5(local.package_url)}.zip" -# #} -# # -# #resource "null_resource" "download_package" { -# # triggers = { -# # downloaded = local.downloaded -# # } -# # -# # provisioner "local-exec" { -# # command = "curl -L -o ${local.downloaded} ${local.package_url}" -# # } -# #} -# # -# #data "null_data_source" "downloaded_package" { -# # inputs = { -# # id = null_resource.download_package.id -# # filename = local.downloaded -# # } -# #} +#### +# Download from remote and upload to S3 +#### +#locals { +# package_url = "https://github.com/antonbabenko/terraform-aws-anything/archive/master.zip" +# downloaded = "downloaded_package_${md5(local.package_url)}.zip" +#} +# +#resource "null_resource" "download_package" { +# triggers = { +# downloaded = local.downloaded +# } +# +# provisioner "local-exec" { +# command = "curl -L -o ${local.downloaded} ${local.package_url}" +# } +#} +# +#data "null_data_source" "downloaded_package" { +# inputs = { +# id = null_resource.download_package.id +# filename = local.downloaded +# } +#} diff --git a/examples/triggers/README.md b/examples/triggers/README.md index 0bfc0a69..ca40c3aa 100644 --- a/examples/triggers/README.md +++ b/examples/triggers/README.md @@ -15,7 +15,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -73,4 +73,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/with-efs/README.md b/examples/with-efs/README.md index f835445d..0e008c4b 100644 --- a/examples/with-efs/README.md +++ b/examples/with-efs/README.md @@ -15,7 +15,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -75,4 +75,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/with-vpc-s3-endpoint/README.md b/examples/with-vpc-s3-endpoint/README.md index d84f6bdc..1eebf085 100644 --- a/examples/with-vpc-s3-endpoint/README.md +++ b/examples/with-vpc-s3-endpoint/README.md @@ -16,7 +16,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -81,4 +81,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/examples/with-vpc/README.md b/examples/with-vpc/README.md index 28844bbd..b1237350 100644 --- a/examples/with-vpc/README.md +++ b/examples/with-vpc/README.md @@ -16,7 +16,7 @@ $ terraform apply Note that this example may create resources which cost money. Run `terraform destroy` when you don't need these resources. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -72,4 +72,4 @@ No inputs. | <a name="output_lambda_role_name"></a> [lambda\_role\_name](#output\_lambda\_role\_name) | The name of the IAM role created for the Lambda Function | | <a name="output_local_filename"></a> [local\_filename](#output\_local\_filename) | The filename of zip archive deployed (if deployment was from local) | | <a name="output_s3_object"></a> [s3\_object](#output\_s3\_object) | The map with S3 object data of zip archive deployed (if deployment was from S3) | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> diff --git a/modules/alias/README.md b/modules/alias/README.md index 7744bbcc..4d1871d3 100644 --- a/modules/alias/README.md +++ b/modules/alias/README.md @@ -110,7 +110,7 @@ module "lambda" { * [Alias](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/alias) - Create Lambda function and aliases in various combinations with all supported features. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -177,7 +177,7 @@ No modules. | <a name="output_lambda_alias_function_version"></a> [lambda\_alias\_function\_version](#output\_lambda\_alias\_function\_version) | Lambda function version which the alias uses | | <a name="output_lambda_alias_invoke_arn"></a> [lambda\_alias\_invoke\_arn](#output\_lambda\_alias\_invoke\_arn) | The ARN to be used for invoking Lambda Function from API Gateway | | <a name="output_lambda_alias_name"></a> [lambda\_alias\_name](#output\_lambda\_alias\_name) | The name of the Lambda Function Alias | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> ## Authors diff --git a/modules/deploy/README.md b/modules/deploy/README.md index 26f2b00f..f5f5d8ec 100644 --- a/modules/deploy/README.md +++ b/modules/deploy/README.md @@ -95,7 +95,7 @@ module "lambda" { * [Deploy](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/deploy) - Creates Lambda Function, Alias, and all resources required to create deployments using AWS CodeDeploy. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -191,7 +191,7 @@ No modules. | <a name="output_codedeploy_iam_role_name"></a> [codedeploy\_iam\_role\_name](#output\_codedeploy\_iam\_role\_name) | Name of IAM role used by CodeDeploy | | <a name="output_deploy_script"></a> [deploy\_script](#output\_deploy\_script) | Path to a deployment script | | <a name="output_script"></a> [script](#output\_script) | Deployment script | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> ## Authors diff --git a/modules/docker-build/README.md b/modules/docker-build/README.md index d2c0aef8..bd223aaf 100644 --- a/modules/docker-build/README.md +++ b/modules/docker-build/README.md @@ -52,7 +52,7 @@ module "docker_image" { * [Container Image](https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/container-image) - Creates Docker Image, ECR resository and deploys it Lambda Function. -<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- BEGIN_TF_DOCS --> ## Requirements | Name | Version | @@ -116,7 +116,7 @@ No modules. |------|-------------| | <a name="output_image_id"></a> [image\_id](#output\_image\_id) | The ID of the Docker image | | <a name="output_image_uri"></a> [image\_uri](#output\_image\_uri) | The ECR image URI for deploying lambda | -<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> +<!-- END_TF_DOCS --> ## Authors diff --git a/wrappers/README.md b/wrappers/README.md index 954ea7d1..5f2ad0d0 100644 --- a/wrappers/README.md +++ b/wrappers/README.md @@ -98,3 +98,42 @@ inputs = { } } ``` + +<!-- BEGIN_TF_DOCS --> +## Requirements + +| Name | Version | +|------|---------| +| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | +| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.32 | +| <a name="requirement_external"></a> [external](#requirement\_external) | >= 1.0 | +| <a name="requirement_local"></a> [local](#requirement\_local) | >= 1.0 | +| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 | + +## Providers + +No providers. + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| <a name="module_wrapper"></a> [wrapper](#module\_wrapper) | ../ | n/a | + +## Resources + +No resources. + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| <a name="input_defaults"></a> [defaults](#input\_defaults) | Map of default values which will be used for each item. | `any` | `{}` | no | +| <a name="input_items"></a> [items](#input\_items) | Maps of items to create a wrapper from. Values are passed through to the module. | `any` | `{}` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| <a name="output_wrapper"></a> [wrapper](#output\_wrapper) | Map of outputs of a wrapper. | +<!-- END_TF_DOCS --> diff --git a/wrappers/alias/README.md b/wrappers/alias/README.md index a296ced7..0c40f21a 100644 --- a/wrappers/alias/README.md +++ b/wrappers/alias/README.md @@ -98,3 +98,39 @@ inputs = { } } ``` + +<!-- BEGIN_TF_DOCS --> +## Requirements + +| Name | Version | +|------|---------| +| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | +| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.9 | + +## Providers + +No providers. + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| <a name="module_wrapper"></a> [wrapper](#module\_wrapper) | ../../modules/alias | n/a | + +## Resources + +No resources. + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| <a name="input_defaults"></a> [defaults](#input\_defaults) | Map of default values which will be used for each item. | `any` | `{}` | no | +| <a name="input_items"></a> [items](#input\_items) | Maps of items to create a wrapper from. Values are passed through to the module. | `any` | `{}` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| <a name="output_wrapper"></a> [wrapper](#output\_wrapper) | Map of outputs of a wrapper. | +<!-- END_TF_DOCS --> diff --git a/wrappers/deploy/README.md b/wrappers/deploy/README.md index 5d24d8b2..67a7e162 100644 --- a/wrappers/deploy/README.md +++ b/wrappers/deploy/README.md @@ -98,3 +98,41 @@ inputs = { } } ``` + +<!-- BEGIN_TF_DOCS --> +## Requirements + +| Name | Version | +|------|---------| +| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | +| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.35 | +| <a name="requirement_local"></a> [local](#requirement\_local) | >= 1.0 | +| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 | + +## Providers + +No providers. + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| <a name="module_wrapper"></a> [wrapper](#module\_wrapper) | ../../modules/deploy | n/a | + +## Resources + +No resources. + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| <a name="input_defaults"></a> [defaults](#input\_defaults) | Map of default values which will be used for each item. | `any` | `{}` | no | +| <a name="input_items"></a> [items](#input\_items) | Maps of items to create a wrapper from. Values are passed through to the module. | `any` | `{}` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| <a name="output_wrapper"></a> [wrapper](#output\_wrapper) | Map of outputs of a wrapper. | +<!-- END_TF_DOCS --> diff --git a/wrappers/docker-build/README.md b/wrappers/docker-build/README.md index 093f989b..34b2dac4 100644 --- a/wrappers/docker-build/README.md +++ b/wrappers/docker-build/README.md @@ -98,3 +98,41 @@ inputs = { } } ``` + +<!-- BEGIN_TF_DOCS --> +## Requirements + +| Name | Version | +|------|---------| +| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | +| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.22 | +| <a name="requirement_docker"></a> [docker](#requirement\_docker) | >= 3.0 | +| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 | + +## Providers + +No providers. + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| <a name="module_wrapper"></a> [wrapper](#module\_wrapper) | ../../modules/docker-build | n/a | + +## Resources + +No resources. + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| <a name="input_defaults"></a> [defaults](#input\_defaults) | Map of default values which will be used for each item. | `any` | `{}` | no | +| <a name="input_items"></a> [items](#input\_items) | Maps of items to create a wrapper from. Values are passed through to the module. | `any` | `{}` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| <a name="output_wrapper"></a> [wrapper](#output\_wrapper) | Map of outputs of a wrapper. | +<!-- END_TF_DOCS -->