У меня есть лямбда, которой нужно довольно много разрешений, потому что она автоматически убивает временные ресурсы, поэтому я назначил управляемую политику AdministratorAccess
. Что я хочу сделать, так это ограничить эту роль только тем, что предполагается, что она является специфической c лямбда-функцией. Я попытался установить условие для sts:AssumeRole
, но при попытке назначить эту роль лямбде я получаю сообщение об ошибке:
Ваша роль не готова или не может быть принята лямбдой. Пожалуйста, подождите до минуты и попробуйте снова.
Возможно, уместно; CF-стек лямбды и роли развертывается с помощью CodePipeline, в котором используется роль CICD-Pipeline
. Кто-нибудь делал это? Это то, что я до сих пор:
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: common-delete-stack-Role
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: [lambda.amazonaws.com]
Action: [sts:AssumeRole]
Condition:
StringEquals:
aws:SourceArn: !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:common-delete-stack
ManagedPolicyArns: [arn:aws:iam::aws:policy/AdministratorAccess]
Я также пробовал это условие с тем же результатом.
StringEquals:
lambda:FunctionArn: !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:common-delete-stack