从 Lambda 向 SQS 发送跨 AWS 账户消息

Send cross AWS account message from Lambda to SQS

我想从北弗吉尼亚账户中的 lambda 向另一个账户(俄亥俄州)的 SQS 队列发送消息。我怎样才能做到这一点?

到目前为止我尝试过的事情:

  1. 在俄亥俄州创建了一个队列并将 lambda 角色 arn 赋予队列。

  2. 从北弗吉尼亚州的 lambda 发送消息,收到以下错误:

    "errorMessage": "An error occurred (AWS.SimpleQueueService.NonExistentQueue) when calling the SendMessage operation:

如果您要发送跨帐户消息,则必须执行以下操作。

  1. 在队列所在的帐户中,您必须为队列创建一个 SQS access policy,以便其他帐户能够发送消息。我的队列策略可能如下所示:
{
    "Version": "2012-10-17",
    "Id": "Queue1_Policy_UUID",
    "Statement": [
        {
            "Sid": "Queue1_AllActions",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/lambdaRole"
                ]
            },
            "Action": [
                "sqs:SendMessage",
                "sqs:ReceiveMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-2:123456789012:queue1"
        }
    ]
}

这里的principal是Lambda部署账户的Lambda角色。

  1. 对于您的 Lambda 角色,您必须授予权限才能将 SQS 消息从其他账户发送到队列(根据您的问题,您已经这样做了)。