gpt4 book ai didi

amazon-web-services - CDK 中的 SQS 接口(interface)端点

转载 作者:行者123 更新时间:2023-12-04 11:00:11 26 4
gpt4 key购买 nike

使用 AWS-CDK。我不得不将写入 SQS 的 Lambda 移动到 VPC 内。我添加了接口(interface)网关以允许从 VPC 直接连接到 SQS:

props.vpc.addInterfaceEndpoint('sqs-gateway', {
service: InterfaceVpcEndpointAwsService.SQS,
subnets: {
subnetType: SubnetType.PRIVATE,
},
})

Lambda 被部署到同一个 VPC(默认情况下到同一个私有(private)子网)并且我将 QUEUE_URL 作为 env 参数传递,就像我在没有 VPC 的情况下所做的那样:

const ingestLambda = new lambda.Function(this, 'TTPIngestFunction', {
...
environment: {
QUEUE_URL: queue.queueUrl,
},
vpc: props.vpc,
})

并且 Lambda 代码仅通过以下方式发送消息:

const sqs = new AWS.SQS({ region: process.env.AWS_REGION })

return sqs
.sendMessageBatch({
QueueUrl: process.env.QUEUE_URL as string,
Entries: entries,
})
.promise()

在没有 VPC 的情况下,此发送有效,但现在 Lambda 只是超时以发送 SQS 消息。我在这里缺少什么?

最佳答案

默认情况下,接口(interface) VPC 端点会创建一个新的安全组并且流量不会从 VPC CIDR 自动允许。

如果您想允许来自您的 Lambda 的流量,您可以执行以下操作:

const sqsEndpoint = props.vpc.addInterfaceEndpoint('sqs-gateway', {
service: InterfaceVpcEndpointAwsService.SQS,
});

sqsEndpoint.connections.allowDefaultPortFrom(ingestLambda);

或者,您可以允许所有流量:

sqsEndpoint.connections.allowDefaultPortFromAnyIpv4();

此默认行为目前正在 https://github.com/aws/aws-cdk/pull/4938 中讨论.

关于amazon-web-services - CDK 中的 SQS 接口(interface)端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58858532/

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