【发布时间】:2020-06-28 19:10:40
【问题描述】:
我有一个带有 lambda 函数的 AWS CDK 堆栈,需要插入到 RDS 数据库中。 部署堆栈时,lambda函数无法访问数据库并报错:getaddrinfo ENOTFOUND [RDS endpoint as defined by me]。 手动添加RDS数据库所在的VPC、子网和安全组后,lambda函数正常工作。
您如何在 AWS CDK 中定义 VPC、子网和安全组,最好是在 TypeScript 中? 就文档而言,我尝试过:
const vpc = ec2.Vpc.fromLookup(this, "VPC", { vpcName: "myVPC" });
const securityGroup = ec2.SecurityGroup.fromSecurityGroupId(
this,
"SG",
"sg-XXXXX"
);
const subnet1a = ec2.PrivateSubnet.fromSubnetAttributes(this, "SUBNET1A", {
subnetId: "eu-central-1a"
});
const myLambda = new lambda.Function(this, "myLambda", {
runtime: lambda.Runtime.NODEJS_12_X,
code: lambda.Code.fromAsset("lambda"),
handler: "myLambda.handler",
description: "myLambda",
environment: {
DB_HOST: "XXXX",
DB_USER: "XXXX",
DB_PASSWORD: "XXXX",
DB_NAME: "XXXX"
},
vpc: vpc,
vpcSubnets: [subnet1a],
securityGroups: [securityGroup]
});
运行 cdk deploy 时,会出现 AWS CDK 错误:“无法将 Lambda 函数放置在公共子网中 子进程退出,错误 1"
欢迎任何帮助。
【问题讨论】:
标签: amazon-web-services aws-lambda aws-security-group aws-cdk