如何将消息发送到不同 AWS 账户中的 SQS 队列?

How to send messages to an SQS queue in a different AWS account?

我的公司有多个账户,我正在账户 1 中编写一个 lambda,它需要写入账户 2 中的 SQS 队列。我的代码如下所示:

logger.info(f"{len(entries)} batch entries built")
    sqs_queue = environ["SQS_QUEUE"]
    try:
        logger.info("Getting SQS queue url...")
        queue_url = sqs.get_queue_url(QueueName=sqs_queue)['QueueUrl']
        # iterate over entries in batches of 10
        for batch in [entries[index:index + sqs_batch_limit] for index in range(0, len(entries), sqs_batch_limit)]:
            logger.info(f"Sending batch of {len(batch)} records to sqs...")
            sqs.send_message_batch(
                QueueUrl=queue_url,
                Entries=batch
            )

问题在于,在这两个帐户中,都有一个名为 sqs-queue-data 的 SQS 队列,因此我上面编写的代码将默认写入与此 lambda 相同的帐户中的 SQS 队列。那有什么办法呢?

调用时使用 QueueOwnerAWSAccountId 参数 get_queue_url 例如

queue_url = sqs.get_queue_url(
  QueueName=sqs_queue,
  QueueOwnerAWSAccountId=1234567890
)['QueueUrl']

文档:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.get_queue_url