如何用单个CloudFormation脚本创建多台带独立安全组的EC2实例?
使用单个CloudFormation模板创建带专属安全组的多台EC2实例
以下是满足需求的CloudFormation YAML模板,每台EC2实例对应独立的安全组,且安全组开放不同数量的指定端口:
AWSTemplateFormatVersion: '2010-09-09' Description: 创建3台EC2实例,每台对应专属安全组及自定义端口规则 Parameters: InstanceType: Type: String Default: t2.micro Description: EC2实例类型 LatestAmiId: Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' Description: 最新Amazon Linux 2 AMI ID(通过SSM参数自动获取) Resources: # EC2 1 及对应安全组SG1(开放22、80端口) EC2SecurityGroup1: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: EC2 Instance 1专属安全组 - 开放22、80端口 SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 Tags: - Key: Name Value: SG-EC2-Instance-1 EC2Instance1: Type: AWS::EC2::Instance Properties: InstanceType: !Ref InstanceType ImageId: !Ref LatestAmiId SecurityGroups: - !Ref EC2SecurityGroup1 Tags: - Key: Name Value: EC2-Instance-1 # EC2 2 及对应安全组SG2(开放8080、3000、5432端口) EC2SecurityGroup2: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: EC2 Instance 2专属安全组 - 开放8080、3000、5432端口 SecurityGroupIngress: - IpProtocol: tcp FromPort: 8080 ToPort: 8080 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 3000 ToPort: 3000 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 5432 ToPort: 5432 CidrIp: 0.0.0.0/0 Tags: - Key: Name Value: SG-EC2-Instance-2 EC2Instance2: Type: AWS::EC2::Instance Properties: InstanceType: !Ref InstanceType ImageId: !Ref LatestAmiId SecurityGroups: - !Ref EC2SecurityGroup2 Tags: - Key: Name Value: EC2-Instance-2 # EC2 3 及对应安全组SG3(开放9000、27017、443、8443端口) EC2SecurityGroup3: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: EC2 Instance 3专属安全组 - 开放9000、27017、443、8443端口 SecurityGroupIngress: - IpProtocol: tcp FromPort: 9000 ToPort: 9000 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 27017 ToPort: 27017 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 8443 ToPort: 8443 CidrIp: 0.0.0.0/0 Tags: - Key: Name Value: SG-EC2-Instance-3 EC2Instance3: Type: AWS::EC2::Instance Properties: InstanceType: !Ref InstanceType ImageId: !Ref LatestAmiId SecurityGroups: - !Ref EC2SecurityGroup3 Tags: - Key: Name Value: EC2-Instance-3
关键说明:
- 专属安全组:每台EC2实例对应独立的
AWS::EC2::SecurityGroup资源,确保安全组规则完全隔离 - 端口规则:根据需求为每个安全组配置不同数量的Ingress规则,示例中SG1开放2个端口、SG2开放3个、SG3开放4个,端口可根据实际需求修改
- 灵活配置:通过
Parameters定义实例类型和AMI ID,使用SSM参数获取最新Amazon Linux 2 AMI,避免硬编码过时的AMI ID - 标签管理:为安全组和EC2实例添加名称标签,便于在AWS控制台识别和管理
内容的提问来源于stack exchange,提问作者Pravin RC
相关产品推荐
相关产品推荐

