Creates a lambda function with associated role and policies, which will log to Cloudwatch Logs.
Creates the following resources:
- Lambda function
- IAM role with policy to allow logging to Cloudwatch Logs - with the anticipation that these logs are declared as an individual resource
module "my_lambda_function" {
  source                 = "transcom/lambda/aws"
  name                   = "my_app"
  job_identifier         = "instance_alpha"
  runtime                = "go1.x"
  role_policy_arns_count = 1
  role_policy_arns       = [aws_iam_policy.my_app_lambda_policy.arn]
  s3_bucket              = "my_s3_bucket"
  s3_key                 = "my_app/1.0/my_app.zip"
  subnet_ids             = ["subnet-0123456789abcdef0"]
  security_group_ids     = ["sg-0123456789abcdef0"]
  source_types           = ["events"]
  source_arns            = [aws_cloudwatch_event_rule.trigger.arn]
  env_vars = {
    VARNAME = "value"
  }
  tags = {
    "Service" = "big_app"
  }
}
# Remember to define the CloudWatch log group separately
resource "aws_cloudwatch_log_group" "my_lambda_logs" {
  ...
}| Name | Version | 
|---|---|
| terraform | >= 1.0 | 
| aws | >= 3.0 | 
| Name | Version | 
|---|---|
| aws | >= 3.0 | 
| null | n/a | 
No modules.
| Name | Type | 
|---|---|
| aws_cloudwatch_log_group.main | resource | 
| aws_iam_role.main | resource | 
| aws_iam_role_policy.main | resource | 
| aws_iam_role_policy_attachment.user_policy_attach | resource | 
| aws_lambda_function.main_from_gh | resource | 
| aws_lambda_function.main_from_s3 | resource | 
| aws_lambda_permission.allow_source_gh | resource | 
| aws_lambda_permission.allow_source_s3 | resource | 
| null_resource.get_github_release_artifact | resource | 
| null_resource.verify_policy_list_count | resource | 
| aws_caller_identity.current | data source | 
| aws_iam_policy_document.assume_role | data source | 
| aws_iam_policy_document.logs_policy_doc | data source | 
| aws_partition.current | data source | 
| aws_region.current | data source | 
| Name | Description | Type | Default | Required | 
|---|---|---|---|---|
| cloudwatch_encryption_key_arn | The arn of the encryption key to be used for the cloudwatch logs | string | "" | no | 
| cloudwatch_logs_retention_days | Number of days to retain logs in Cloudwatch Logs | string | 30 | no | 
| env_vars | Map of environment variables for Lambda function | map(any) | {} | no | 
| ephemeral_storage | Size in MB of Lambda function ephemeral storage allocation | string | 512 | no | 
| github_filename | Name of the file to get when building url to pull. | string | "deployment.zip" | no | 
| github_project | The unique Github project to pull from. Currently, this must be public. Eg. 'transcom/aws-iam-sleuth' | string | "" | no | 
| github_release | The release tag to download. | string | "" | no | 
| handler | The entrypoint function for the lambda function. | string | "main.Main" | no | 
| job_identifier | Identifier for specific instance of Lambda function | string | n/a | yes | 
| memory_size | Size in MB of Lambda function memory allocation | string | 128 | no | 
| name | Lambda function name | string | n/a | yes | 
| publish | Whether to publish creation/change as new Lambda Function Version. | bool | false | no | 
| role_policy_arns | List of policy ARNs to attach to Lambda role | list(any) | n/a | yes | 
| role_policy_arns_count | Count of policy ARNs to attach to Lambda role | string | n/a | yes | 
| runtime | Lambda runtime type | string | n/a | yes | 
| s3_bucket | Name of s3 bucket used for Lambda build | string | "" | no | 
| s3_key | Key for s3 object for Lambda function code | string | "" | no | 
| security_group_ids | List of security group IDs for Lambda VPC config (leave empty if no VPC) | list(any) | [] | no | 
| source_arns | List of arns for Lambda triggers; order must match source_types | list(any) | [] | no | 
| source_types | List of sources for Lambda triggers; order must match source_arns | list(any) | [] | no | 
| subnet_ids | List of subnet IDs for Lambda VPC config (leave empty if no VPC) | list(any) | [] | no | 
| tags | Map of tags for Lambda function | map(any) | {} | no | 
| timeout | Timeout in seconds for Lambda function timeout | string | 60 | no | 
| validation_sha | SHA to validate the file. | string | "" | no | 
| Name | Description | 
|---|---|
| function_name | Name of the AWS Lambda function | 
| invoke_arn | ARN used to invoke Lambda function from API Gateway | 
| lambda_arn | ARN for the Lambda function |