使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

跨帐户的 SQS-Lambda 设置引发错误:执行角色没有调用 SQS 的 receiveMessage 权限。

0

【以下的问题经过翻译处理】 我正在尝试设置从SQS队列到Lambda函数的跨账户通信。这两个资源都位于“eu-central-1”区域,但在两个不同的AWS帐户中。我的设置如下:ACCOUNT_A拥有Lambda函数ACCOUNT_B 拥有SQS队列。我已经在Account A中创建了IAM角色,并将其附加到Lambda函数(ACCOUNT_A_LAMBDA_EXECUTION_ROLE)。IAM角色已经被附加AWSLambdaSQSQueueExecutionRole 的管理权限。ACCOUNT_B上的SQS队列具有以下访问策略{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__owner_statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_B:root" }, "Action": "SQS:*", "Resource": "arn:aws:sqs:eu-central-1:ACCOUNT_B:" }, { "Sid": "__receiver_statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_A:role/LAMBDA_EXECUTION_ROLE" }, "Action": [ "SQS:ChangeMessageVisibility", "SQS:DeleteMessage", "SQS:ReceiveMessage", "SQS:GetQueueAttributes" ], "Resource": "arn:aws:sqs:eu-central-1:ACCOUNT_B:" } ]}我使用AWS CLI添加Lambda触发器,以便ACCOUNT_B_SQS_QUEUE可以添加为ACCOUNT_A_LAMBDA_FUNCTION的触发器。以下是AWS CLI命令aws lambda create-event-source-mapping --function-name ACCOUNT_A_LAMBDA_FUNCTION --event-source-arn ACCOUNT_B_SQS_QUEUE-arn --profile ACCOUNT_A-aws-profile --region eu-central-1但是此命令失败并显示以下错误:An error occurred (InvalidParameterValueException) when calling the CreateEventSourceMapping operation: The provided execution role does not have permissions to call ReceiveMessage on SQS我也尝试手动添加Lambda触发器,但是也失败了。

1 回答
0

【以下的回答经过翻译处理】 你看过这篇教程了吗 - https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html我认为这一行 "Resource": "arn:aws:sqs:eu-central-1:ACCOUNT_B:" 应该替换为 "Resource": "arn:aws:sqs:eu-central-1:ACCOUNT_B:<SQS队列的名称>"如果还是不起作用,尝试将 SQS:<actions> 替换为 sqs:<actions>

profile picture
专家
已回答 2 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则