【发布时间】:2020-02-18 10:30:03
【问题描述】:
我无法从我的 lambda 向我的 SQS 队列发送消息 功能。这是我的设置
- Lambda 连接到默认 VPC 中的 3 个公有子网
- 存在 SQS 的 VPC 端点
我正在尝试使用以下命令通过 boto3 发送消息:
import json
import boto3
sqs = boto3.client("sqs")
sqs.send_message(
QueueUrl="https://sqs.eu-west-1.amazonaws.com/012345678901/my_queue",
MessageBody=json.dumps({"message": "hello"}),
)
lambda 正在超时(60 秒)。在调试时,我注意到 boto3
客户端连接到eu-west-1.queue.amazonaws.com 而不是
sqs.eu-west-1.amazonaws.com,我在 QueueUrl 参数中指定。
通过进一步调试,我注意到eu-west-1.queue.amazonaws.com
解析为 Lambda 中的公共地址,而
sqs.eu-west-1.amazonaws.com 解析为私有地址。我不
了解为什么会这样。
【问题讨论】:
-
您在使用 vpc 的公共子网中,但 lambda 应该在使用 NAT 网关的私有子网中以与互联网通信。
-
@Lamanus,我不想通过 ipublic 网络进行交流。我创建了一个 VPC 终端节点,以便能够在我的 VPC 中私下访问 SQS。
标签: aws-lambda boto3