Aws lambda Lambda can';不要向SQS发送消息

Aws lambda Lambda can';不要向SQS发送消息,aws-lambda,boto3,Aws Lambda,Boto3,从lambda向SQS队列发送消息时遇到问题 功能。这是我的设置 Lambda连接到默认VPC中的3个公共子网 存在SQS的VPC终结点 我正在尝试使用以下方式通过boto3发送消息: 导入json 进口boto3 sqs=两个客户(“sqs”) sqs.send_消息( QueueUrl=”https://sqs.eu-west-1.amazonaws.com/012345678901/my_queue", MessageBody=json.dumps({“message”:“hello”

从lambda向SQS队列发送消息时遇到问题 功能。这是我的设置

  • Lambda连接到默认VPC中的3个公共子网
  • 存在SQS的VPC终结点
我正在尝试使用以下方式通过boto3发送消息:

导入json
进口boto3
sqs=两个客户(“sqs”)
sqs.send_消息(
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
解析为私人地址。我不
理解为什么会发生这种情况。

我在上问了同样的问题,所以感谢swetashre在那里回答我。事实证明,在创建SQS客户机时,我需要指定端点URL

sqs=boto3.client(“sqs”,端点\u url=”https://sqs.eu-west-1.amazonaws.com")

您在vpc的公共子网中,但lambda应该在NAT网关的私有子网中才能与internet通信。@Lamanus,我不想通过IPPublic net进行通信。我创建了一个VPC端点,以便能够在我的VPC内私下访问SQS。