Terraform module to create AWS Lambda and API gateway with COORS, binary support and {proxy+}
integration.
Note: This module was developed to support dynamic tiling for python Lambda functions and was tested using lambda-proxy.
module "lambda_proxy_api" {
source = "git@github.com:developmentseed/tf-lambda-proxy-apigw.git"
# General options
project = var.project
stage_name = var.stage_name
region = var.region
# Lambda options
lambda_name = var.lambda_name
lambda_runtime = var.lambda_runtime
lambda_memory = var.lambda_memory
lambda_timeout = var.lambda_timeout
lambda_package = var.lambda_package
lambda_handler = var.lambda_handler
lambda_env = var.lambda_env
lambda_tags = var.lambda_tags
# API Gateway options
binary_type = var.binary_type
minimum_compression_size = var.minimum_compression_size
method = var.method
}
Extend Lambda IAM role
resource "aws_iam_role_policy" "permissions" {
name = module.lambda_proxy_api.lambda_role}-bucket-permission"
role = module.lambda_proxy_api.lambda_role_id
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::${var.my_bucket}*"
}
]
}
EOF
}
Name | Description | Required | Default |
---|---|---|---|
project | Project name | Yes | |
stage | Stage (e.g. prod, dev, staging) | Yes | |
region | The AWS region, e.g., eu-west-1 | Yes | |
lambda_name | The Name of the lambda function | Yes | |
lambda_runtime | The runtime of the lambda function e.g, python3.6 | Yes | |
lambda_memory | The memory size of the function | No | 128 |
lambda_timeout | The timeout of the lambda function | No | 3 |
lambda_package | The lambda package name | No | package.zip |
lambda_handler | The handler name of the lambda function | Yes | |
lambda_env | The list of environment variables for the lambda function | No | |
lambda_tags | Tags used for the AWS Lambda resources | No | |
binary_type | The list of binary media types supported by the RestApi | No | ["*/*"] |
minimum_compression_size | Minimum response size to compress for the REST API | No | 0 |
method | The HTTP method for the REST API | Yes | ANY |
Name | Description |
---|---|
api_url | The API Gateway endpoint url. |
api_methods | The HTTP methods allowed by the API Gateway endpoint url. |
lambda_name | The unique name of your Lambda Function. |
lambda_arn | The ARN to be used for invoking Lambda Function from API Gateway |
lambda_role | The name of the IAM role attached to the Lambda Function. |
lambda_role_id | The id of the IAM role attached to the Lambda Function. |