{"id":48839254,"url":"https://github.com/sourcefuse/terraform-aws-arc-lambda-function","last_synced_at":"2026-04-15T01:02:50.172Z","repository":{"id":318609867,"uuid":"1033003678","full_name":"sourcefuse/terraform-aws-arc-lambda-function","owner":"sourcefuse","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-08T06:02:36.000Z","size":4241,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-08T08:16:18.209Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sourcefuse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-06T06:47:36.000Z","updated_at":"2025-10-08T06:02:20.000Z","dependencies_parsed_at":"2025-10-08T08:16:28.241Z","dependency_job_id":"38c9d792-2913-4936-bbbe-f72b6e1caefb","html_url":"https://github.com/sourcefuse/terraform-aws-arc-lambda-function","commit_stats":null,"previous_names":["sourcefuse/terraform-aws-arc-lambda-function"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/sourcefuse/terraform-aws-arc-lambda-function","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-lambda-function","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-lambda-function/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-lambda-function/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-lambda-function/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sourcefuse","download_url":"https://codeload.github.com/sourcefuse/terraform-aws-arc-lambda-function/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-lambda-function/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31821685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-15T01:02:48.596Z","updated_at":"2026-04-15T01:02:50.144Z","avatar_url":"https://github.com/sourcefuse.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Module Structure](./static/banner.png)\n# AWS Lambda Function Terraform Module\n\n# [terraform-aws-arc-lambda-function](https://github.com/sourcefuse/terraform-aws-arc-lambda-function)\n\n\u003ca href=\"https://github.com/sourcefuse/terraform-aws-arc-lambda-function/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/release/sourcefuse/terraform-aws-arc-lambda-function.svg?style=for-the-badge\" alt=\"Latest Release\"/\u003e\u003c/a\u003e \u003ca href=\"https://github.com/sourcefuse/terraform-aws-arc-lambda-function/commits\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/sourcefuse/terraform-aws-arc-lambda-function.svg?style=for-the-badge\" alt=\"Last Updated\"/\u003e\u003c/a\u003e ![Terraform](https://img.shields.io/badge/terraform-%235835CC.svg?style=for-the-badge\u0026logo=terraform\u0026logoColor=white) ![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white)\n\n[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=sourcefuse_terraform-aws-arc-lambda-function\u0026token=2eef08aeb73594436eea462afe0bd790c9ae3841)](https://sonarcloud.io/summary/new_code?id=sourcefuse_terraform-aws-arc-lambda-function)\n\n\n## Overview\n\nThe ARC Terraform module provides a comprehensive and unified solution for deploying AWS Lambda functions on AWS. This versatile module supports multiple deployment methods including local source code, S3-based deployments, and container images, allowing you to choose the deployment approach that best fits your application requirements and operational needs.\n\n### Prerequisites\nBefore using this module, ensure you have the following:\n\n- AWS credentials configured.\n- Terraform installed.\n- A working knowledge of Terraform.\n\n## Getting Started\n\n1. **Define the Module**\n\nInitially, it's essential to define a Terraform module, which is organized as a distinct directory encompassing Terraform configuration files. Within this module directory, input variables and output values must be defined in the variables.tf and outputs.tf files, respectively. The following illustrates an example directory structure:\n\n\n\n```plaintext\nlambda-function/\n|-- main.tf\n|-- variables.tf\n|-- outputs.tf\n```\n\n\n2. **Define Input Variables**\n\nInside the `variables.tf` or in `*.tfvars` file, you should define values for the variables that the module requires.\n\n3. **Use the Module in Your Main Configuration**\nIn your main Terraform configuration file (e.g., main.tf), you can use the module. Specify the source of the module, and version, For Example\n\n```hcl\nmodule \"lambda-function\" {\n  source                 = \"sourcefuse/arc-lambda-function/aws\"\n  version                = \"0.0.1\"\n\n  # Basic configuration\n  function_name = var.function_name\n  description   = \"Basic Lambda function example\"\n  runtime       = \"python3.11\"\n  handler       = \"lambda_function.lambda_handler\"\n  memory_size   = 128\n  timeout       = 10\n\n  # Deployment package\n  filename         = data.archive_file.lambda_zip.output_path\n  source_code_hash = data.archive_file.lambda_zip.output_base64sha256\n\n  # Environment variables\n  environment_variables = {\n    ENVIRONMENT = var.environment\n    LOG_LEVEL   = var.log_level\n  }\n\n  # CloudWatch Logs\n  create_log_group      = true\n  log_retention_in_days = 7\n\n tags = module.tags.tags\n}\n```\n\n4. **Output Values**\n\nInside the `outputs.tf` file of the module, you can define output values that can be referenced in the main configuration. For example:\n\n```hcl\noutput \"arn\" {\n  description = \"ARN of the Lambda function\"\n  value       = module.basic_lambda.lambda_function_arn\n}\n\noutput \"name\" {\n  description = \"Name of the Lambda function\"\n  value       = module.basic_lambda.lambda_function_name\n}\n\noutput \"invoke_arn\" {\n  description = \"Invoke ARN of the Lambda function\"\n  value       = module.basic_lambda.lambda_function_invoke_arn\n}\n\noutput \"role_arn\" {\n  description = \"ARN of the Lambda execution role\"\n  value       = module.basic_lambda.lambda_role_arn\n}\n\noutput \"cloudwatch_log_group_name\" {\n  description = \"Name of the CloudWatch log group\"\n  value       = module.basic_lambda.lambda_cloudwatch_log_group_name\n}\n\n```\n\n5. **.tfvars**\n\nInside the `.tfvars` file of the module, you can provide desired values that can be referenced in the main configuration.\n\n\n## First Time Usage\n***uncomment the backend block in [main.tf](./examples/endpoint//main.tf)***\n```shell\nterraform init -backend-config=config.dev.hcl\n```\n***If testing locally, `terraform init` should be fine***\n\nCreate a `dev` workspace\n```shell\nterraform workspace new dev\n```\n\nPlan Terraform\n```shell\nterraform plan -var-file dev.tfvars\n```\n\nApply Terraform\n```shell\nterraform apply -var-file dev.tfvars\n```\n\n## Production Setup\n```shell\nterraform init -backend-config=config.prod.hcl\n```\n\nCreate a `prod` workspace\n```shell\nterraform workspace new prod\n```\n\nPlan Terraform\n```shell\nterraform plan -var-file prod.tfvars\n```\n\nApply Terraform\n```shell\nterraform apply -var-file prod.tfvars  \n```\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.3.0 |\n| \u003ca name=\"requirement_archive\"\u003e\u003c/a\u003e [archive](#requirement\\_archive) | \u003e= 2.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | \u003e= 5.0 |\n| \u003ca name=\"requirement_null\"\u003e\u003c/a\u003e [null](#requirement\\_null) | ~\u003e 3.2 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | 6.8.0 |\n| \u003ca name=\"provider_null\"\u003e\u003c/a\u003e [null](#provider\\_null) | 3.2.4 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_cloudwatch_log_group.lambda](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource |\n| [aws_iam_role.lambda](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |\n| [aws_iam_role_policy.lambda_execution](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy) | resource |\n| [aws_lambda_alias.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_alias) | resource |\n| [aws_lambda_function.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function) | resource |\n| [aws_lambda_function_url.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function_url) | resource |\n| [aws_lambda_permission.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_provisioned_concurrency_config.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_provisioned_concurrency_config) | resource |\n| [aws_sqs_queue.dlq](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue) | resource |\n| [null_resource.validate_deployment_package](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |\n| [null_resource.validate_package_compatibility](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |\n| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |\n| [aws_iam_policy_document.lambda_assume_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_execution](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_alias_description\"\u003e\u003c/a\u003e [alias\\_description](#input\\_alias\\_description) | Description of the alias | `string` | `\"Lambda function alias\"` | no |\n| \u003ca name=\"input_alias_function_version\"\u003e\u003c/a\u003e [alias\\_function\\_version](#input\\_alias\\_function\\_version) | Lambda function version for which you are creating the alias | `string` | `null` | no |\n| \u003ca name=\"input_alias_name\"\u003e\u003c/a\u003e [alias\\_name](#input\\_alias\\_name) | Name for the alias | `string` | `\"live\"` | no |\n| \u003ca name=\"input_alias_routing_config\"\u003e\u003c/a\u003e [alias\\_routing\\_config](#input\\_alias\\_routing\\_config) | The Lambda alias routing configuration | \u003cpre\u003eobject({\u003cbr/\u003e    additional_version_weights = map(number)\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_architectures\"\u003e\u003c/a\u003e [architectures](#input\\_architectures) | Instruction set architecture for your Lambda function | `list(string)` | \u003cpre\u003e[\u003cbr/\u003e  \"x86_64\"\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_attach_policy_statements\"\u003e\u003c/a\u003e [attach\\_policy\\_statements](#input\\_attach\\_policy\\_statements) | Whether to attach additional policy statements to the Lambda role | `bool` | `false` | no |\n| \u003ca name=\"input_code_signing_config_arn\"\u003e\u003c/a\u003e [code\\_signing\\_config\\_arn](#input\\_code\\_signing\\_config\\_arn) | ARN of code signing config | `string` | `null` | no |\n| \u003ca name=\"input_create_alias\"\u003e\u003c/a\u003e [create\\_alias](#input\\_create\\_alias) | Whether to create an alias for the Lambda function | `bool` | `false` | no |\n| \u003ca name=\"input_create_dlq\"\u003e\u003c/a\u003e [create\\_dlq](#input\\_create\\_dlq) | Whether to create a dead letter queue (SQS) for the Lambda function | `bool` | `false` | no |\n| \u003ca name=\"input_create_function_url\"\u003e\u003c/a\u003e [create\\_function\\_url](#input\\_create\\_function\\_url) | Whether to create a Lambda function URL | `bool` | `false` | no |\n| \u003ca name=\"input_create_log_group\"\u003e\u003c/a\u003e [create\\_log\\_group](#input\\_create\\_log\\_group) | Whether to create a CloudWatch log group for the Lambda function | `bool` | `true` | no |\n| \u003ca name=\"input_create_role\"\u003e\u003c/a\u003e [create\\_role](#input\\_create\\_role) | Whether to create an IAM role for the Lambda function | `bool` | `true` | no |\n| \u003ca name=\"input_dead_letter_config\"\u003e\u003c/a\u003e [dead\\_letter\\_config](#input\\_dead\\_letter\\_config) | Dead letter queue configuration | \u003cpre\u003eobject({\u003cbr/\u003e    target_arn = string\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_description\"\u003e\u003c/a\u003e [description](#input\\_description) | Description of what your Lambda Function does | `string` | `\"Lambda function created by Terraform\"` | no |\n| \u003ca name=\"input_dlq_message_retention_seconds\"\u003e\u003c/a\u003e [dlq\\_message\\_retention\\_seconds](#input\\_dlq\\_message\\_retention\\_seconds) | The number of seconds Amazon SQS retains a message in the DLQ | `number` | `1209600` | no |\n| \u003ca name=\"input_dlq_name\"\u003e\u003c/a\u003e [dlq\\_name](#input\\_dlq\\_name) | Name of the dead letter queue (if create\\_dlq is true) | `string` | `null` | no |\n| \u003ca name=\"input_environment_variables\"\u003e\u003c/a\u003e [environment\\_variables](#input\\_environment\\_variables) | Map of environment variables that are accessible from the function code during execution | `map(string)` | `{}` | no |\n| \u003ca name=\"input_ephemeral_storage\"\u003e\u003c/a\u003e [ephemeral\\_storage](#input\\_ephemeral\\_storage) | Ephemeral storage size in MB (512-10240) | `number` | `512` | no |\n| \u003ca name=\"input_file_system_config\"\u003e\u003c/a\u003e [file\\_system\\_config](#input\\_file\\_system\\_config) | File system configuration for the Lambda function | \u003cpre\u003eobject({\u003cbr/\u003e    arn              = string\u003cbr/\u003e    local_mount_path = string\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_filename\"\u003e\u003c/a\u003e [filename](#input\\_filename) | Path to the function's deployment package within the local filesystem | `string` | `null` | no |\n| \u003ca name=\"input_function_name\"\u003e\u003c/a\u003e [function\\_name](#input\\_function\\_name) | Name of the Lambda function | `string` | n/a | yes |\n| \u003ca name=\"input_function_tags\"\u003e\u003c/a\u003e [function\\_tags](#input\\_function\\_tags) | A map of tags to assign specifically to the Lambda function | `map(string)` | `{}` | no |\n| \u003ca name=\"input_function_url_config\"\u003e\u003c/a\u003e [function\\_url\\_config](#input\\_function\\_url\\_config) | Lambda function URL configuration | \u003cpre\u003eobject({\u003cbr/\u003e    authorization_type = string\u003cbr/\u003e    cors = optional(object({\u003cbr/\u003e      allow_credentials = optional(bool, false)\u003cbr/\u003e      allow_headers     = optional(list(string), [])\u003cbr/\u003e      allow_methods     = optional(list(string), [])\u003cbr/\u003e      allow_origins     = optional(list(string), [])\u003cbr/\u003e      expose_headers    = optional(list(string), [])\u003cbr/\u003e      max_age           = optional(number, 0)\u003cbr/\u003e    }))\u003cbr/\u003e    invoke_mode = optional(string, \"BUFFERED\")\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"authorization_type\": \"AWS_IAM\"\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_handler\"\u003e\u003c/a\u003e [handler](#input\\_handler) | Function entrypoint in your code | `string` | `\"index.handler\"` | no |\n| \u003ca name=\"input_image_config\"\u003e\u003c/a\u003e [image\\_config](#input\\_image\\_config) | Configuration for Lambda when using container images | \u003cpre\u003eobject({\u003cbr/\u003e    command           = list(string)\u003cbr/\u003e    entry_point       = list(string)\u003cbr/\u003e    working_directory = string\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_image_uri\"\u003e\u003c/a\u003e [image\\_uri](#input\\_image\\_uri) | ECR image URI containing the function's deployment package | `string` | `null` | no |\n| \u003ca name=\"input_kms_key_arn\"\u003e\u003c/a\u003e [kms\\_key\\_arn](#input\\_kms\\_key\\_arn) | Amazon Resource Name (ARN) of the AWS Key Management Service (KMS) key that's used to encrypt your function's environment variables | `string` | `null` | no |\n| \u003ca name=\"input_lambda_insights_enabled\"\u003e\u003c/a\u003e [lambda\\_insights\\_enabled](#input\\_lambda\\_insights\\_enabled) | Whether to enable Lambda Insights for the function | `bool` | `false` | no |\n| \u003ca name=\"input_lambda_insights_version\"\u003e\u003c/a\u003e [lambda\\_insights\\_version](#input\\_lambda\\_insights\\_version) | Version of the Lambda Insights layer | `string` | `\"1\"` | no |\n| \u003ca name=\"input_lambda_permissions\"\u003e\u003c/a\u003e [lambda\\_permissions](#input\\_lambda\\_permissions) | Map of Lambda permissions to create | \u003cpre\u003emap(object({\u003cbr/\u003e    action                 = string\u003cbr/\u003e    principal              = string\u003cbr/\u003e    source_arn             = optional(string)\u003cbr/\u003e    source_account         = optional(string)\u003cbr/\u003e    statement_id           = optional(string)\u003cbr/\u003e    qualifier              = optional(string)\u003cbr/\u003e    function_url_auth_type = optional(string)\u003cbr/\u003e    principal_org_id       = optional(string)\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_log_group_kms_key_id\"\u003e\u003c/a\u003e [log\\_group\\_kms\\_key\\_id](#input\\_log\\_group\\_kms\\_key\\_id) | The ARN of the KMS Key to use when encrypting log data | `string` | `null` | no |\n| \u003ca name=\"input_log_group_name\"\u003e\u003c/a\u003e [log\\_group\\_name](#input\\_log\\_group\\_name) | Name of the CloudWatch log group | `string` | `null` | no |\n| \u003ca name=\"input_log_retention_in_days\"\u003e\u003c/a\u003e [log\\_retention\\_in\\_days](#input\\_log\\_retention\\_in\\_days) | Specifies the number of days you want to retain log events in the specified log group | `number` | `14` | no |\n| \u003ca name=\"input_logging_config\"\u003e\u003c/a\u003e [logging\\_config](#input\\_logging\\_config) | Logging configuration for Lambda function | \u003cpre\u003eobject({\u003cbr/\u003e    log_format = string # e.g., \"JSON\" or \"Text\"\u003cbr/\u003e    log_group  = string # e.g., \"/aws/lambda/my-function\"\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_memory_size\"\u003e\u003c/a\u003e [memory\\_size](#input\\_memory\\_size) | Amount of memory in MB your Lambda Function can use at runtime | `number` | `128` | no |\n| \u003ca name=\"input_package_type\"\u003e\u003c/a\u003e [package\\_type](#input\\_package\\_type) | Lambda deployment package type (Zip or Image) | `string` | `\"Zip\"` | no |\n| \u003ca name=\"input_policy_statements\"\u003e\u003c/a\u003e [policy\\_statements](#input\\_policy\\_statements) | Map of policy statements to attach to the Lambda role | \u003cpre\u003emap(object({\u003cbr/\u003e    effect    = string\u003cbr/\u003e    actions   = list(string)\u003cbr/\u003e    resources = list(string)\u003cbr/\u003e    conditions = optional(map(object({\u003cbr/\u003e      test     = string\u003cbr/\u003e      variable = string\u003cbr/\u003e      values   = list(string)\u003cbr/\u003e    })), {})\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_provisioned_concurrency_config\"\u003e\u003c/a\u003e [provisioned\\_concurrency\\_config](#input\\_provisioned\\_concurrency\\_config) | Provisioned concurrency configuration | \u003cpre\u003eobject({\u003cbr/\u003e    provisioned_concurrent_executions = number\u003cbr/\u003e    qualifier                         = string\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_publish\"\u003e\u003c/a\u003e [publish](#input\\_publish) | Whether to publish creation/change as new Lambda Function Version | `bool` | `false` | no |\n| \u003ca name=\"input_replace_security_groups_on_destroy\"\u003e\u003c/a\u003e [replace\\_security\\_groups\\_on\\_destroy](#input\\_replace\\_security\\_groups\\_on\\_destroy) | Whether to force replacement of security groups on destroy | `bool` | `false` | no |\n| \u003ca name=\"input_replacement_security_group_ids\"\u003e\u003c/a\u003e [replacement\\_security\\_group\\_ids](#input\\_replacement\\_security\\_group\\_ids) | List of replacement security group IDs to use | `list(string)` | `[]` | no |\n| \u003ca name=\"input_reserved_concurrent_executions\"\u003e\u003c/a\u003e [reserved\\_concurrent\\_executions](#input\\_reserved\\_concurrent\\_executions) | Amount of reserved concurrent executions for this lambda function | `number` | `-1` | no |\n| \u003ca name=\"input_role\"\u003e\u003c/a\u003e [role](#input\\_role) | IAM role ARN attached to the Lambda Function. If not provided, a role will be created | `string` | `null` | no |\n| \u003ca name=\"input_role_name\"\u003e\u003c/a\u003e [role\\_name](#input\\_role\\_name) | Name of the IAM role to create (if create\\_role is true) | `string` | `null` | no |\n| \u003ca name=\"input_role_path\"\u003e\u003c/a\u003e [role\\_path](#input\\_role\\_path) | Path of the IAM role | `string` | `\"/\"` | no |\n| \u003ca name=\"input_role_permissions_boundary\"\u003e\u003c/a\u003e [role\\_permissions\\_boundary](#input\\_role\\_permissions\\_boundary) | The ARN of the policy that is used to set the permissions boundary for the role | `string` | `null` | no |\n| \u003ca name=\"input_runtime\"\u003e\u003c/a\u003e [runtime](#input\\_runtime) | Runtime for the Lambda function (e.g., python3.9, nodejs18.x, java11, etc.) | `string` | `\"python3.9\"` | no |\n| \u003ca name=\"input_s3_bucket\"\u003e\u003c/a\u003e [s3\\_bucket](#input\\_s3\\_bucket) | S3 bucket location containing the function's deployment package | `string` | `null` | no |\n| \u003ca name=\"input_s3_key\"\u003e\u003c/a\u003e [s3\\_key](#input\\_s3\\_key) | S3 key of an object containing the function's deployment package | `string` | `null` | no |\n| \u003ca name=\"input_s3_object_version\"\u003e\u003c/a\u003e [s3\\_object\\_version](#input\\_s3\\_object\\_version) | Object version containing the function's deployment package | `string` | `null` | no |\n| \u003ca name=\"input_snap_start\"\u003e\u003c/a\u003e [snap\\_start](#input\\_snap\\_start) | SnapStart configuration for Lambda function | \u003cpre\u003eobject({\u003cbr/\u003e    apply_on = string # e.g., \"PublishedVersions\"\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_source_code_hash\"\u003e\u003c/a\u003e [source\\_code\\_hash](#input\\_source\\_code\\_hash) | Used to trigger updates. Must be set to a base64-encoded SHA256 hash of the package file specified with either filename or s3\\_key | `string` | `null` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | A map of tags to assign to the resource | `map(string)` | `{}` | no |\n| \u003ca name=\"input_timeout\"\u003e\u003c/a\u003e [timeout](#input\\_timeout) | Amount of time your Lambda Function has to run in seconds | `number` | `3` | no |\n| \u003ca name=\"input_tracing_config\"\u003e\u003c/a\u003e [tracing\\_config](#input\\_tracing\\_config) | Tracing configuration for Lambda function | \u003cpre\u003eobject({\u003cbr/\u003e    mode = string # e.g., \"Active\" or \"PassThrough\"\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_vpc_config\"\u003e\u003c/a\u003e [vpc\\_config](#input\\_vpc\\_config) | VPC configuration for the Lambda function | \u003cpre\u003eobject({\u003cbr/\u003e    subnet_ids         = list(string)\u003cbr/\u003e    security_group_ids = list(string)\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_lambda_alias_arn\"\u003e\u003c/a\u003e [lambda\\_alias\\_arn](#output\\_lambda\\_alias\\_arn) | The Amazon Resource Name (ARN) identifying the Lambda function alias |\n| \u003ca name=\"output_lambda_alias_description\"\u003e\u003c/a\u003e [lambda\\_alias\\_description](#output\\_lambda\\_alias\\_description) | Description of the Lambda function alias |\n| \u003ca name=\"output_lambda_alias_function_version\"\u003e\u003c/a\u003e [lambda\\_alias\\_function\\_version](#output\\_lambda\\_alias\\_function\\_version) | Lambda function version which the alias uses |\n| \u003ca name=\"output_lambda_alias_invoke_arn\"\u003e\u003c/a\u003e [lambda\\_alias\\_invoke\\_arn](#output\\_lambda\\_alias\\_invoke\\_arn) | The ARN to be used for invoking Lambda Function alias from API Gateway |\n| \u003ca name=\"output_lambda_alias_name\"\u003e\u003c/a\u003e [lambda\\_alias\\_name](#output\\_lambda\\_alias\\_name) | The name of the Lambda function alias |\n| \u003ca name=\"output_lambda_cloudwatch_log_group_arn\"\u003e\u003c/a\u003e [lambda\\_cloudwatch\\_log\\_group\\_arn](#output\\_lambda\\_cloudwatch\\_log\\_group\\_arn) | The Amazon Resource Name (ARN) specifying the log group |\n| \u003ca name=\"output_lambda_cloudwatch_log_group_name\"\u003e\u003c/a\u003e [lambda\\_cloudwatch\\_log\\_group\\_name](#output\\_lambda\\_cloudwatch\\_log\\_group\\_name) | The name of the CloudWatch Log Group |\n| \u003ca name=\"output_lambda_dead_letter_queue_arn\"\u003e\u003c/a\u003e [lambda\\_dead\\_letter\\_queue\\_arn](#output\\_lambda\\_dead\\_letter\\_queue\\_arn) | The ARN of the SQS queue used as dead letter queue |\n| \u003ca name=\"output_lambda_dead_letter_queue_name\"\u003e\u003c/a\u003e [lambda\\_dead\\_letter\\_queue\\_name](#output\\_lambda\\_dead\\_letter\\_queue\\_name) | The name of the SQS queue used as dead letter queue |\n| \u003ca name=\"output_lambda_dead_letter_queue_url\"\u003e\u003c/a\u003e [lambda\\_dead\\_letter\\_queue\\_url](#output\\_lambda\\_dead\\_letter\\_queue\\_url) | The URL of the SQS queue used as dead letter queue |\n| \u003ca name=\"output_lambda_function_arn\"\u003e\u003c/a\u003e [lambda\\_function\\_arn](#output\\_lambda\\_function\\_arn) | The Amazon Resource Name (ARN) identifying your Lambda Function |\n| \u003ca name=\"output_lambda_function_environment_variables\"\u003e\u003c/a\u003e [lambda\\_function\\_environment\\_variables](#output\\_lambda\\_function\\_environment\\_variables) | The Lambda function environment variables |\n| \u003ca name=\"output_lambda_function_invoke_arn\"\u003e\u003c/a\u003e [lambda\\_function\\_invoke\\_arn](#output\\_lambda\\_function\\_invoke\\_arn) | The ARN to be used for invoking Lambda Function from API Gateway |\n| \u003ca name=\"output_lambda_function_kms_key_arn\"\u003e\u003c/a\u003e [lambda\\_function\\_kms\\_key\\_arn](#output\\_lambda\\_function\\_kms\\_key\\_arn) | The ARN of the KMS Key used to encrypt your Lambda Function's environment variables |\n| \u003ca name=\"output_lambda_function_last_modified\"\u003e\u003c/a\u003e [lambda\\_function\\_last\\_modified](#output\\_lambda\\_function\\_last\\_modified) | The date this resource was last modified |\n| \u003ca name=\"output_lambda_function_name\"\u003e\u003c/a\u003e [lambda\\_function\\_name](#output\\_lambda\\_function\\_name) | The name of the Lambda Function |\n| \u003ca name=\"output_lambda_function_qualified_arn\"\u003e\u003c/a\u003e [lambda\\_function\\_qualified\\_arn](#output\\_lambda\\_function\\_qualified\\_arn) | The Amazon Resource Name (ARN) identifying your Lambda Function Version |\n| \u003ca name=\"output_lambda_function_signing_job_arn\"\u003e\u003c/a\u003e [lambda\\_function\\_signing\\_job\\_arn](#output\\_lambda\\_function\\_signing\\_job\\_arn) | ARN of the signing job |\n| \u003ca name=\"output_lambda_function_signing_profile_version_arn\"\u003e\u003c/a\u003e [lambda\\_function\\_signing\\_profile\\_version\\_arn](#output\\_lambda\\_function\\_signing\\_profile\\_version\\_arn) | ARN of the signing profile version |\n| \u003ca name=\"output_lambda_function_source_code_hash\"\u003e\u003c/a\u003e [lambda\\_function\\_source\\_code\\_hash](#output\\_lambda\\_function\\_source\\_code\\_hash) | Base64-encoded representation of raw SHA-256 sum of the zip file |\n| \u003ca name=\"output_lambda_function_source_code_size\"\u003e\u003c/a\u003e [lambda\\_function\\_source\\_code\\_size](#output\\_lambda\\_function\\_source\\_code\\_size) | The size in bytes of the function .zip file |\n| \u003ca name=\"output_lambda_function_tags\"\u003e\u003c/a\u003e [lambda\\_function\\_tags](#output\\_lambda\\_function\\_tags) | The Lambda function tags |\n| \u003ca name=\"output_lambda_function_url\"\u003e\u003c/a\u003e [lambda\\_function\\_url](#output\\_lambda\\_function\\_url) | The HTTP URL endpoint for the Lambda function |\n| \u003ca name=\"output_lambda_function_url_id\"\u003e\u003c/a\u003e [lambda\\_function\\_url\\_id](#output\\_lambda\\_function\\_url\\_id) | The generated ID for the endpoint |\n| \u003ca name=\"output_lambda_function_version\"\u003e\u003c/a\u003e [lambda\\_function\\_version](#output\\_lambda\\_function\\_version) | Latest published version of your Lambda Function |\n| \u003ca name=\"output_lambda_function_vpc_config\"\u003e\u003c/a\u003e [lambda\\_function\\_vpc\\_config](#output\\_lambda\\_function\\_vpc\\_config) | The Lambda function VPC configuration |\n| \u003ca name=\"output_lambda_provisioned_concurrency_config_id\"\u003e\u003c/a\u003e [lambda\\_provisioned\\_concurrency\\_config\\_id](#output\\_lambda\\_provisioned\\_concurrency\\_config\\_id) | The ID of the provisioned concurrency configuration |\n| \u003ca name=\"output_lambda_role_arn\"\u003e\u003c/a\u003e [lambda\\_role\\_arn](#output\\_lambda\\_role\\_arn) | The Amazon Resource Name (ARN) specifying the Lambda IAM role |\n| \u003ca name=\"output_lambda_role_name\"\u003e\u003c/a\u003e [lambda\\_role\\_name](#output\\_lambda\\_role\\_name) | The name of the Lambda IAM role |\n| \u003ca name=\"output_lambda_role_unique_id\"\u003e\u003c/a\u003e [lambda\\_role\\_unique\\_id](#output\\_lambda\\_role\\_unique\\_id) | The stable and unique string identifying the Lambda IAM role |\n\u003c!-- END_TF_DOCS --\u003e\n\n## Versioning  \nThis project uses a `.version` file at the root of the repo which the pipeline reads from and does a git tag.  \n\nWhen you intend to commit to `main`, you will need to increment this version. Once the project is merged,\nthe pipeline will kick off and tag the latest git commit.  \n\n## Development\n\n### Prerequisites\n\n- [terraform](https://learn.hashicorp.com/terraform/getting-started/install#installing-terraform)\n- [terraform-docs](https://github.com/segmentio/terraform-docs)\n- [pre-commit](https://pre-commit.com/#install)\n- [golang](https://golang.org/doc/install#install)\n- [golint](https://github.com/golang/lint#installation)\n\n### Configurations\n\n- Configure pre-commit hooks\n  ```sh\n  pre-commit install\n  ```\n\n### Versioning\n\nwhile Contributing or doing git commit please specify the breaking change in your commit message whether its major,minor or patch\n\nFor Example\n\n```sh\ngit commit -m \"your commit message #major\"\n```\nBy specifying this , it will bump the version and if you don't specify this in your commit message then by default it will consider patch and will bump that accordingly\n\n### Tests\n- Tests are available in `test` directory\n- Configure the dependencies\n  ```sh\n  cd test/\n  go mod init github.com/sourcefuse/terraform-aws-refarch-\u003cmodule_name\u003e\n  go get github.com/gruntwork-io/terratest/modules/terraform\n  ```\n- Now execute the test  \n  ```sh\n  go test -timeout  30m\n  ```\n\n## Authors\n\nThis project is authored by:\n- SourceFuse ARC Team\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-lambda-function","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-lambda-function","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-lambda-function/lists"}