Amazon web services 如何创建只允许在同一CloudFormation堆栈中创建的资源承担IAM角色的条件?
我正在创建一个CloudFormation堆栈,它有一个代码构建和一个IAM角色作为资源。我想知道是否存在只允许在同一堆栈中创建的资源承担该角色的条件 目前,我的堆栈是这样定义的:Amazon web services 如何创建只允许在同一CloudFormation堆栈中创建的资源承担IAM角色的条件?,amazon-web-services,amazon-cloudformation,amazon-iam,aws-sts,Amazon Web Services,Amazon Cloudformation,Amazon Iam,Aws Sts,我正在创建一个CloudFormation堆栈,它有一个代码构建和一个IAM角色作为资源。我想知道是否存在只允许在同一堆栈中创建的资源承担该角色的条件 目前,我的堆栈是这样定义的: CodeBuildProjectIAMRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement:
CodeBuildProjectIAMRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: codebuild.amazonaws.com
Action: sts:AssumeRole
CodeBuildProject:
Type: AWS::CodeBuild::Project
问题是任何代码构建项目都可以承担上述角色
当我尝试添加一个条件,指定只有具有aws:cloudformation:stack name
equal stack name的主体才能担任以下角色时:
CodeBuildProjectIAMRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: codebuild.amazonaws.com
Action: sts:AssumeRole
Condition:
StringEquals:
aws:PrincipalTag/aws:cloudformation:stack-name: !Ref 'AWS::StackName'
,我得到这个错误:
条件只能包含一个冒号。(服务:AmazonIdentityManagement;状态代码:400;错误代码:格式错误的policyDocument)
基于我不相信您这次尝试的操作是可能的 具体而言: 不能基于使用ResourceTag/key name条件键附加到角色的标记来限制传递角色的权限
我认为这只是一个语法错误。尝试添加,类似于:'
@lexicore我尝试过'aws:principatag/aws:cloudformation:stack name:“
(得到'aws:principatag/aws:cloudformation:stack name:”
)和模板格式错误:YAML格式不正确
(got'aws:principatag/aws:cloudformation:stack name:
)条件只能包含一个冒号