为AWS资源指定先创建好IAM角色后才进行创建的顺序,通过使用AWS CloudFormation来实现。以下是示例代码:
Resources:
MyS3Bucket:
Type: 'AWS::S3::Bucket'
DeletionPolicy: Retain
CreationPolicy:
ResourceSignal:
Timeout: PT30M
Count: 1
Properties:
AccessControl: Private
BucketName: my-s3-bucket
MyIAMRole:
Type: 'AWS::IAM::Role'
DeletionPolicy: Retain
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: 'sts:AssumeRole'
Path: /
Policies:
- PolicyName: MyS3AccessPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: 's3:*'
Resource: !Sub 'arn:aws:s3:::${MyS3Bucket}/*'
在这个示例中,首先创建了S3桶(MyS3Bucket),并指定了如果创建MyS3Bucket时,它必须等待IAM角色(MyIAMRole)成功创建后才能继续执行。同时,CreationPolicy部分指定了如果创建MyS3Bucket超时,CloudFormation将自动回滚此创建,并在MyS3Bucket创建失败后自动删除创建的资源。将IAM角色(MyIAMRole)作为资源之一,并指定IAM策略,允许访问MyS3Bucket。
因此,这个示例中,先创建IAM角色后创建S3桶,解决了AWS资源在IAM角色之前创建导致失败的问题。
上一篇:AWS资源消失