Сбой лямбда-вызова без ошибки разрешения
У меня есть пользовательский ресурс в шаблоне облачной информации, который ссылается на лямбда-функцию. Внутри лямбда-функции я написал код для вставки элементов в таблицу 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.