【发布时间】:2020-10-30 20:33:02
【问题描述】:
我正在尝试调出多个 ec2 实例 cloudformation 脚本。我正在使用 shell 脚本循环 aws cloudformation create-stack 命令并成功启动多个实例。
现在我需要在附加了 SSM 角色的情况下启动这些实例。但是,我看不到在脚本中使用现有角色的任何方式。因此,我需要在脚本中重新创建角色:
AWSTemplateFormatVersion: 2010-09-09
Description: Compact template for creating an ec2 instance for SPT
Resources:
IAMRole:
Type: AWS::IAM::Role
Properties:
RoleName: SPTvacmRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
Path: "/"
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM
InstanceProfile1:
Type: AWS::IAM::InstanceProfile
Properties:
Path: "/"
Roles:
- Ref: IAMRole
ec2instance1:
Type: AWS::EC2::Instance
Properties:
SubnetId: subnet-0da86f65478f3d30a
KeyName: spt-lab
ImageId: ami-00344ae218e7aae62
InstanceType: t2.nano
IamInstanceProfile: !Ref InstanceProfile1
SecurityGroupIds:
- sg-0d3fae6860ce71c91
这只能执行一次,因为到循环第二次执行命令时,角色 SPTvacmRole 已经存在,堆栈失败。
我已经从控制台手动创建了一个角色,使用 AmazonEC2RoleForSSM 策略并将其命名为 EC2RoleForSSM,但是当我尝试在 InstanceProfile1 中通过其名称 -Ref: EC2RoleForSSM 引用该角色而不创建 IAMRole 时,它会给出错误提示 模板格式错误:模板资源块中未解决的资源依赖项[EC2RoleForSSM]
如何在脚本中使用预先存在的角色 EC2RoleForSSM 而无需重新创建?
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-cloudformation amazon-iam