python-2.7 - 创建 ec2 实例并添加新的和现有的安全组

标签 python-2.7 aws-cloudformation troposphere

我有一些对流层代码 a) 使用 List 捕获安全组 ID 列表作为参数 b) 创建一个新的安全组

groups = template.add_parameter(Parameter(
  "securityGroups",
  Type="List<AWS::EC2::SecurityGroup::Id>",
  Description="Security Groups for EC2 Instance",
))


ec2_sg = template.add_resource(
  ec2.SecurityGroup(
    'sg',
    GroupName = 'sg_test_app',
    GroupDescription = 'Test SG',
    VpcId = Ref(vpcid),
    Tags=Tags( **tags )
  )  
)

如果我使用以下引用 (a) 创建 EC2,则此方法有效:

inst_ec2 = template.add_resource(
  ec2.Instance(
    "EC2Instance",
    ImageId = 'ami-8b8c57f8',
    InstanceType = Ref(Type),
    IamInstanceProfile=Ref(instance_profile),
    SubnetId = Ref(snid),
    Tags=Tags(**tags),
    SecurityGroupIds = [ GetAtt(csso_ec2_sg, "GroupId") ],
    DependsOn = [
      'EC2InstanceProfile',
      'sg'
    ]
  )
)

如果我引用(b),这有效:

inst_ec2 = template.add_resource(
  ec2.Instance(
    "EC2Instance",
    ImageId = 'ami-8b8c57f8',
    InstanceType = Ref(Type),
    IamInstanceProfile=Ref(instance_profile),
    SubnetId = Ref(snid),
    Tags=Tags(**tags),
    SecurityGroupIds = groups,
    DependsOn = [
      'EC2InstanceProfile',
      'sg'
    ]
  )
)

但是,我不知道如何添加两者 - 这不起作用:

inst_ec2 = template.add_resource(
  ec2.Instance(
    "EC2Instance",
    ImageId = 'ami-8b8c57f8',
    InstanceType = Ref(Type),
    IamInstanceProfile=Ref(instance_profile),
    SubnetId = Ref(snid),
    Tags=Tags(**tags),
    SecurityGroupIds = [ GetAtt(csso_ec2_sg, "GroupId"), groups ],
    DependsOn = [
      'EC2InstanceProfile',
      'sg'
    ]
  )
)

有人可以建议如何做到这一点吗?

最佳答案

您可以尝试加入然后拆分列表。像这样的东西可能会起作用:

SecurityGroupIds = Split(",", Join(",", [Join(",", groups), GetAtt(csso_ec2_sg, "GroupId")]))

关于python-2.7 - 创建 ec2 实例并添加新的和现有的安全组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509528/

相关文章:

python-2.7 - Python Selenium 警报身份验证问题

amazon-web-services - 模板验证错误: invalid template resource property

django - 扩展 Django 的用户模型时,如何为 property() 传递 lambda 函数?

amazon-web-services - 您请求的无服务器引擎模式目前在 5.7 (2.07.1) 中不可用

bash - Nvidia-Docker2 不会安装在 Cloudformation UserData bash 脚本中

amazon-web-services - 使用 CloudFormation 创建 SpotFleet 时出错

amazon-web-services - 无效/不可修改/不支持的数据库参数 : time_zone gives cloud-formation

aws-cloudformation - 云形权杖 : How to parameterize a list of json objects

Python 转义序列\N{name} 不按定义工作

javascript - 如何将元素从外部移动/拖动到 iframe