如何将消息发送到不同 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']
我的公司有多个账户,我正在账户 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']