yoa*_*uim 1 amazon-web-services amazon-vpc aws-lambda terraform
我正在使用Terraform构建API +相应的lambda函数.
我有一些其他的基础设施,我想它很好地设置(也许我错了?):
test和prod)两个VPC上的所有资源都是相同的; 例如,有一个test-private-subnet和一个prod-private-subnet具有完全相同的规格,相同的DB,等等.
现在,我正在研究将为API提供动力的API和lambdas.
我不觉得我需要一个test&prodAPI网关和test&prodlambdas:
stage_variables具有不同ips 的API 来实现API 的testvs prod环境但是当我尝试使用vpc_config块设置lambda时(因为我需要将它与允许在DB上进行的安全组关联),我收到以下错误:
Error applying plan:
1 error(s) occurred:
* module.lambdas.aws_lambda_function.api-lambda-users: 1 error(s) occurred:
* aws_lambda_function.api-lambda-users: Error creating Lambda function: InvalidParameterValueException: Security Groups are required to be in the same VPC.
status code: 400, request id: xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
我的lambda配置看起来像这样:
resource "aws_lambda_function" "api-lambda-users" {
provider = "PROVIDER"
function_name = "users"
s3_key = "users/${var.lambda-package-name}"
s3_bucket = "${var.api-lambdas-bucket}"
role = "${aws_iam_role.lambda-role.arn}"
handler = "${var.handler-name}"
runtime = "${var.lambda-runtime}"
vpc_config {
security_group_ids = [
//"${data.aws_security_group.prod-lambda.id}",
"${data.aws_security_group.test-lambda.id}"
]
subnet_ids = [
//"${data.aws_subnet.prod-primary.id}",
"${data.aws_subnet.test-primary.id}"
]
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我最好只在相应的列表中指定它们.
我错过了什么吗?
建议?
任何帮助,无论是否相关,都非常感谢.
在vpc中运行的Lambda受到与ec2实例相同的网络"规则"的约束.所以它不能在两个VPC中"存在".如果lambda函数需要在两个单独的VPC中讨论vpc资源,你可以使用像VPC对等的东西,或者只在两个不同的vpc中运行两个函数副本.
将VPC配置添加到Lambda函数时,它只能访问该VPC中的资源.如果Lambda函数需要访问VPC资源和公共Internet,则VPC需要在VPC内部具有网络地址转换(NAT)实例和VPC对等连接.
| 归档时间: |
|
| 查看次数: |
774 次 |
| 最近记录: |