Lambda无法将消息发送到SQS

时间:2019-10-22 09:44:49

标签: aws-lambda boto3

我无法从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解析为私人地址。我不 了解为什么会这样。

1 个答案:

答案 0 :(得分:1)

我在GitHub上问了同样的问题,因此感谢swetashre在这里回答我。事实证明,创建SQS客户端时需要指定终结点URL。

sqs = boto3.client("sqs", endpoint_url="https://sqs.eu-west-1.amazonaws.com")