Boto3 SQS send_message 似乎忽略了大部分 QueryUrl url 部分

Boto3 SQS send_message seems to ignore most of QueryUrl url parts

我正在尝试从不同区域的 lambda 向 SQS 队列发送消息。队列 urls 确实有区域信息,所以我只是想做类似的事情:

import boto3
sqs = boto3.client('sqs')
response = sqs.send_message(
        QueueUrl="https://sqs.us-west-1.amazonaws.com/ACCOUNT_ID/OtherRegionQueue",
        MessageBody=msg_str
    )

我的 lambda 在“us-east-1”中,我发现它正在尝试访问该区域中的 SQS 而不是 QueueUrl 参数中指定的“us-west-1”,可能是因为如果未指定,client() 从配置中获取区域。

经过一些小测试后 send_message() 完全忽略了 QueueUrl 部分,协议和队列名称除外。

我成功地 send_message 到与 lambda 在同一区域的另一个队列 url 就像:

QueueUrl="https:SameRegionQueue"

是否可以将消息发送到其他区域的队列而无需创建每个区域的客户端?

您可以使用此函数从url中提取区域,并创建带有区域的客户端。

def region_extract(url):
    text = url.split('.')
    return text[1]

url = "https://sqs.us-west-1.amazonaws.com/ACCOUNT_ID/OtherRegionQueue"
region = region_extract(url)
print(region)