gpt4 book ai didi

amazon-web-services - 如何将 VPC 和安全组分配给 AWS CDK 中的 Lambda?

转载 作者:行者123 更新时间:2023-12-03 14:32:23 24 4
gpt4 key购买 nike

我有一个带有 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 函数放置在公共(public)子网中
子进程以错误 1 ​​退出”

欢迎任何帮助。

最佳答案

如果要将 Lambda 函数部署到 VPC,则应将其部署到私有(private)子网(具有 subnetType: SubnetType.PRIVATE 的子网)或隔 ionic 网(具有 subnetType: SubnetType.ISOLATED 的子网)。

您选择哪种取决于 Lambda 函数是否需要出站 Internet 访问。如果是,则使用 PRIVATE,否则使用 ISOLATED。

要访问同一 VPC 中的 RDS 实例,应将 Lambda 函数放置在安全组中,该安全组对 RDS 实例的安全组的相关端口号具有入站访问权限。

VPC 示例 here和 Lambda here .

关于amazon-web-services - 如何将 VPC 和安全组分配给 AWS CDK 中的 Lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60726869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com