这个错误通常是由于权限不足导致的。您需要为CloudFormation的执行角色授予允许iam:PutRolePolicy
的权限。
以下是一些Python示例代码,可用于在CloudFormation模板中创建执行角色,并向其授予所需的IAM权限:
Resources:
CloudFormationExecutionRole:
Type: "AWS::IAM::Role"
Properties:
RoleName: "CloudFormationExecutionRole"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service: "cloudformation.amazonaws.com"
Action: "sts:AssumeRole"
Path: "/"
CloudFormationExecutionPolicy:
Type: "AWS::IAM::Policy"
Properties:
PolicyName: "CloudFormationExecutionPolicy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action: "iam:PutRolePolicy"
Resource: "*"
Roles:
- Ref: "CloudFormationExecutionRole"
在此示例中,我们创建了一个名为CloudFormationExecutionRole
的IAM角色,并使用AssumeRolePolicyDocument
指定仅有CloudFormation服务可以担任该角色。
然后,我们创建一个名为CloudFormationExecutionPolicy
的IAM策略,并将iam:PutRolePolicy
授权为Action
。最后,我们使用Roles
属性将该策略附加到CloudFormationExecutionRole
角色。
您可以根据需要更改此策略以授予其他IAM权限。