Сбой лямбда-вызова без ошибки разрешения - PullRequest
0 голосов
/ 03 октября 2018

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

Пользователь: arn: aws: sts :: 551250655555: предполагаемая роль / custom-resource-stack-stack-CustomResourceLambdaExecutio-1OX3T8494LEP5 / custom-resource-stack-CustomResourceFunction-1GLEDE3BEPWDP не авторизован дляexecute: dynamodb: DescribeTable на ресурсе: arn: aws: динамод: us-east-1: 551250655555: таблица / MasterTable1

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

и моя пользовательская роль создана так: custom-resource-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 Ответ

0 голосов
/ 03 октября 2018

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

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

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

...