如何解决未指定端点 url 时,boto3 sqs 的 url 不正确
创建 boto3 客户端时是否总是需要指定 endpoint_url
?
为什么我不能指定 QueueUrl
作为方法参数?
# boto3==1.16.51
import boto3
client = boto3.client('sqs')
messages = client.receive_message(
QueueUrl='https://sqs.eu-central-1.amazonaws.com/325672072888/event-queue-test',WaitTimeSeconds=2,MaxNumberOfMessages=1,AttributeNames=["All"],)
异常:
botocore.exceptions.ClientError: 发生错误 (InvalidAddress) 调用ReceiveMessage操作时:地址 https://eu-central-1.queue.amazonaws.com/ 对此无效 端点。
似乎它采用 sqs 队列的默认值。但是为什么它没有从 QueueUrl
解决方法
错误消息中的 url 与 QueueUrl
不同,因为 AWS CLI 和 boto3 使用 legacy 端点,其中之一是 eu-central-1.queue.amazonaws.com
。来自docs:
如果您使用适用于 Python 的 AWS CLI 或开发工具包,则可以使用以下旧终端节点。
您可以使用以下方法检查:
print(client._endpoint)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。