从 Lambda 向 SQS 发送跨 AWS 账户消息
Send cross AWS account message from Lambda to SQS
我想从北弗吉尼亚账户中的 lambda 向另一个账户(俄亥俄州)的 SQS 队列发送消息。我怎样才能做到这一点?
到目前为止我尝试过的事情:
在俄亥俄州创建了一个队列并将 lambda 角色 arn 赋予队列。
从北弗吉尼亚州的 lambda 发送消息,收到以下错误:
"errorMessage": "An error occurred (AWS.SimpleQueueService.NonExistentQueue) when calling the SendMessage operation:
如果您要发送跨帐户消息,则必须执行以下操作。
- 在队列所在的帐户中,您必须为队列创建一个 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角色。
- 对于您的 Lambda 角色,您必须授予权限才能将 SQS 消息从其他账户发送到队列(根据您的问题,您已经这样做了)。
我想从北弗吉尼亚账户中的 lambda 向另一个账户(俄亥俄州)的 SQS 队列发送消息。我怎样才能做到这一点?
到目前为止我尝试过的事情:
在俄亥俄州创建了一个队列并将 lambda 角色 arn 赋予队列。
从北弗吉尼亚州的 lambda 发送消息,收到以下错误:
"errorMessage": "An error occurred (AWS.SimpleQueueService.NonExistentQueue) when calling the SendMessage operation:
如果您要发送跨帐户消息,则必须执行以下操作。
- 在队列所在的帐户中,您必须为队列创建一个 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角色。
- 对于您的 Lambda 角色,您必须授予权限才能将 SQS 消息从其他账户发送到队列(根据您的问题,您已经这样做了)。