SQS для нескольких учетных записей — установка Lambda выдает ошибку. Роль выполнения не имеет разрешений на вызов receiveMessage в SQS.
Я пытаюсь настроить связь между учетными записями из очереди SQS в функцию Lambda. Оба эти ресурса включеныeu-central-1
регион, но в 2 разных учетных записях AWS.
Моя установка ниже
-
AccountA
имеет лямбда-функцию -
AccountB
имеет очередь SQS
Я создал роль IAM для учетной записи A, и она привязана к функции Lambda (AccountA_LAMBDA_EXECUTION_ROLE). Роль IAM имеет следующие разрешения
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"sqs:GetQueueUrl",
"sqs:ListDeadLetterSourceQueues",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue",
"sqs:ReceiveMessage",
"sqs:DeleteQueue",
"sqs:SendMessage",
"sqs:GetQueueAttributes",
"sqs:ListQueueTags",
"sqs:CreateQueue",
"sqs:SetQueueAttributes"
],
"Resource": "<AccountB_SQS_QUEUE_ARN>"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "sqs:ListQueues",
"Resource": "*"
}
]
}
Очередь SQS имеет следующую политику доступа
{
"Version": "2012-10-17",
"Id": "Queue1_Policy_UUID",
"Statement": [
{
"Sid": "Queue1_AllActions",
"Effect": "Allow",
"Principal": {
"AWS": "<AccountA_LAMBDA_EXECUTION_ROLE>"
},
"Action": "sqs:*",
"Resource": "<AccountB_SQS_QUEUE_ARN>"
}
]
}
Я использую AWS CLI для добавления триггера Lambda, так чтоAccountB_SQS_QUEUE
можно добавить в качестве триггераAccountA_LAMBDA_FUNCTION
. Ниже приведена команда AWS CLI.
aws lambda create-event-source-mapping --function-name AccountA_LAMBDA_FUNCTION_NAME --event-source-arn AccountB_SQS_QUEUE_ARN --profile AccountA_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
Я следую этому руководству от AWS, но это не успех. Что здесь пошло не так