Сбой лямбда-вызова без ошибки разрешения

У меня есть пользовательский ресурс в шаблоне облачной информации, который ссылается на лямбда-функцию. Внутри лямбда-функции я написал код для вставки элементов в таблицу DynamoDB. Однако операция завершается сбоем при создании стека облачной информации. Ошибка заключается в следующем:

Пользователь: arn:aws:sts::551250655555: предполагаемая роль / настраиваемый ресурсный стек-CustomResourceLambdaExecutio-1OX3T8494LEP5/ настраиваемый ресурс-стек-CustomResourceFunction-1GLEDE3BEPWDP не авторизован для выполнения:DynamodB:DescribeTable на ресурсе: arn: awn dynamodb: мы-восток-1:551250655555: стол /MasterTable1

Имя моей лямбда-функции: custom-resource-stack-Custom-CustomResourceFunction-1GLEDE3BEPWDP

и моя пользовательская роль была создана так: custom-resource-stack-stack-CustomResourceLambdaExecutio-1OX3T8494LEP5

Однако в моем файле шаблона без сервера я предоставил следующие разрешения:

"CustomResourceLambdaExecutionPolicy": {
                    "DependsOn": ["CustomResourceLambdaExecutionRole"],                 
                    "Type": "AWS::IAM::Policy",
                    "Properties": {
                        "PolicyName": "CustomResourceLambdaExecutionPolicyDocument",
                        "Roles": [{
                            "Ref": "CustomResourceLambdaExecutionRole"
                        }],
                        "PolicyDocument": {
                            "Version": "2012-10-17",
                            "Statement": [{
                                "Sid": "DynamoDBAccess",
                                "Action": "dynamodb:*",
                                "Effect": "Allow",
                                "Resource": "*"
                            },
                            {
                                "Sid": "CloudwatchLogGroupAccess",
                                "Action": [
                                            "logs:CreateLogGroup",
                                            "logs:CreateLogStream",
                                            "logs:PutLogEvents"
                                          ],
                                "Effect": "Allow",
                                "Resource": "*"
                            }
                            ]
                        }
                    }
                }

который дает доступ ко всем операциям и таблицам DynamodB Любые идеи о том, что я делаю здесь не так.

1 ответ

Вы испытываете состояние гонки.

Функция Lambda зависит от роли IAM, но не от политики. Таким образом, функция вызывается до того, как политика IAM прикреплена к роли.

Если вы добавите политику к роли как часть определения роли IAM, это должно исправить ее. Вы также можете сделать функцию Lambda зависимой от политики IAM.

Другие вопросы по тегам