AWS VPC 端点 - 无法运行

问题描述 投票:0回答:1

我正在努力让我的 AWS VPC 终端节点正常工作。我在设置中遗漏了一些东西,但无法解决。

我有一个由 SQS 条目触发的 lambda,该 lambda 位于 VPC 内。 lambda 被触发并尝试写入不同的 SQS 队列。

当 lambda 运行时,尝试写入 SQS 队列条目会超时。

我已为附加到该 VPC 的“com.amazonaws.eu-west-2.sqs”(伦敦区域)创建了一个 VPC 终端节点。阅读文档,它说我必须通过端点路由流量,但我不知道如何做到这一点。

任何人都可以帮助我了解设置的下一步是什么,或者为我指出提供逐步方法的文档方向(对于那些网络知识很少的人)。

amazon-web-services aws-lambda amazon-vpc vpc-endpoint
1个回答
0
投票

为了重现您的情况,我做了以下操作(在伦敦地区):

  • 创建了 Amazon SQS 标准队列
  • 为 Lambda 创建了一个 IAM 角色,该角色有权写入队列
  • 使用 VPC 向导创建 VPC:

VPC Wizard

  • 为 Lambda 函数创建安全组 (
    Lambda-SG
    ),允许所有出站流量
  • 创建了 AWS Lambda 函数,并将其配置为使用 VPC 中的私有子网,并将
    Lambda-SG
    安全组与该函数关联:
import boto3

def lambda_handler(event, context):
    sqs = boto3.client('sqs')

    queue_url = 'https://sqs.eu-west-2.amazonaws.com/782031212076/stack'

    # Send message to SQS queue
    response = sqs.send_message(QueueUrl=queue_url, MessageBody='Foo')

    
    print(f"Message ID: {response['MessageId']}")

然后,我通过按 Test 按钮(并使用默认测试值)调用 Lambda 函数,并收到错误:

“errorMessage”:“2023-12-03T11:15:03.853Z 048c31a5-6760-44d6-a9f3-3bd84a787e88任务在3.01秒后超时”

这是预期的,因为 Lambda 函数连接到没有 SQS 的 VPC 终端节点的私有子网。

  • 为端点创建安全组 (
    Endpoint-SG
    ),允许来自
    Lambda-SG
    的所有入站流量(即,
    Endpoint-SG
    中的入站规则专门引用
    Lambda-SG
  • 向 VPC 的 私有子网添加了 SQS 的 VPC 端点
  • 使用 VPC 可达性分析器确认连接:

VPC Reachability Analyzer

    使用
  • Test再次运行Lambda函数
成功了:

Function Logs START RequestId: 5a0d6359-1f57-4e50-98a1-4de6ccacd9b9 Version: $LATEST Message ID: f1b46e9a-981d-4e92-9864-501b4ccb8db0 END RequestId: 5a0d6359-1f57-4e50-98a1-4de6ccacd9b9 REPORT RequestId: 5a0d6359-1f57-4e50-98a1-4de6ccacd9b9 Duration: 1332.49 ms Billed Duration: 1333 ms Memory Size: 128 MB Max Memory Used: 74 MB Init Duration: 249.31 ms
我承认,添加VPC Endpoint后,该功能仍然存在超时。这就是我使用 VPC Reachability Analyzer 来测试连接的原因。它说一切都应该正常。然后,当我再次尝试Lambda函数时,它成功了。因此,

添加 VPC 终端节点和使其正常工作之间可能存在延迟

希望您可以将您的设置与上述步骤进行比较,看看有什么不同。我建议您首先检查 Lambda 函数上的安全组和 VPC 终端节点上的安全组。这些应该是

不同的安全组——一个具有出站规则,另一个具有入站规则。

© www.soinside.com 2019 - 2024. All rights reserved.