有没有办法从新CF堆栈中的先前Cloudformation堆栈引用安全组?

问题描述 投票:1回答:3

我正在尝试使用具有不同安全组的多个EC2实例构建堆栈。

如果我可以提前创建我的安全组并在我的EC2堆栈中引用它,那对我来说很容易。

有没有办法在CF堆栈中引用现有的安全组资源?

在此先感谢您的帮助!

amazon-web-services amazon-ec2 amazon-cloudformation
3个回答
1
投票

是的,这完全可以使用标准的Cloudformation模板。您可以通过几种方式解决此问题。

如果使用嵌套堆栈,则可以在一个子堆栈中创建所需的所有安全组。该堆栈应该为您创建的每个安全组ID都有输出。

Outputs:
  SecurityGroup1Id:
    Description: Security Group 1 ID
    Value: !Ref SecurityGroup1

在随后创建EC2实例的堆栈中,您可以为每个安全组定义Parameters。它可以是每个组的数组或一个参数,具体取决于您的用例。

单个模板

如果在同一模板中定义了EC2实例和安全组,则可以使用简单的Ref访问已创建的安全组的ID。即:!Ref SecurityGroup1Name



0
投票

如果安全组是在CloudFormation(控制台/ CLI)之外创建的,或者CloudFormation堆栈未通过nestingexports链接,则应将它们定义为Parameters,然后在模板中引用该参数名称:

Parameters:
  MySecurityGroup: 
    Type: String
    Description: ID of an existing VPC security group (sg-xxxxxx)

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      # All of your other properties
      SecurityGroupIds: 
        - !Ref MySecurityGroup

如果安全组ID是您经常要引用的内容,请将其放在SSM参数存储中,并按照此博客文章中的步骤链接这两个:https://aws.amazon.com/blogs/mt/integrating-aws-cloudformation-with-aws-systems-manager-parameter-store/

© www.soinside.com 2019 - 2024. All rights reserved.