terraform.aws-baseline-infra/modules/ApplicationIntegration/apigw-lambda/examples/main.tf

69 lines
1.8 KiB
Terraform
Raw Normal View History

2024-03-04 11:16:12 +08:00
module "apigw" {
source = "../../modules/ApplicationIntegration/apigw-lambda"
apigw-security-group-id = "sg-04ec154cb0f516e76"
apigw-subnet-ids = ["subnet-0d1e0e378cbcd7295", "subnet-0d86aa4c05033dea8"]
apigw-vpc-id = "vpc-01a10b033169f89a8"
create-vpc-link = false
description = "test apigw-lambda module"
lambda-archive-file = "${path.module}/lambda_function.zip"
name = "ken2026-test"
path_part = "hello"
lambda-main-function-name = "main"
2024-03-04 14:12:59 +08:00
stages = {
"dev" : {
"description" : "Dev stage"
"variables" : {
"var1" : "foo"
}
}
"prd" : {
"description" : "Prd stage"
"variables" : {
"var1" : "bar"
}
}
}
2024-03-04 11:16:12 +08:00
}
/*
Directory structure of function directory
tree function/
function/
main.py
*/
data "archive_file" "lambda" {
source_dir = "function"
output_path = "lambda_function.zip"
type = "zip"
}
# apigateway account settings, needed for first apigateway deployment only
resource "aws_api_gateway_account" "settings" {
cloudwatch_role_arn = aws_iam_role.apigw-logging-role.arn
}
resource "aws_iam_role" "apigw-logging-role" {
name = "ApiGatewayLoggingRole"
assume_role_policy = data.aws_iam_policy_document.apigw-logging-role.json
}
data "aws_iam_policy_document" "apigw-logging-role" {
statement {
effect = "Allow"
principals {
type = "Service"
identifiers = ["apigateway.amazonaws.com"]
}
actions = ["sts:AssumeRole"]
}
}
resource "aws_iam_role_policy_attachment" "apigw-cloudwatch" {
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs"
role = aws_iam_role.apigw-logging-role.id
}