【发布时间】:2022-01-22 00:49:49
【问题描述】:
我正在使用 cloudformation 来构建基础架构。
我想给默认安全组和SSH安全组作为实例的安全组。
有 Network.yaml、Security.yaml、Application.yaml 文件。
这是 Network.yaml 的一部分。
SampleVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
Tags:
- Key: Name
Value: sample-vpc
这是 Security.yaml 的一部分。
Resources:
BastionSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: sample-sg-bastion
GroupDescription: for bastion
VpcId: !ImportValue vpc-id
SecurityGroupIngress:
- CidrIp: 10.10.10.10/32
FromPort: 22
IpProtocol: tcp
ToPort: 22
Tags:
- Key: Name
Value: sample-sg-bastion
Outputs:
BastionSecurityGroup:
Description: The Security Group for bastion instance
Value: !Ref BastionSecurityGroup
Export:
Name: Bastion-sg-id
这是 Application.yaml 的一部分。
Resources:
BastionEC2Instance:
Type: AWS::EC2::Instance
Properties:
KeyName: !Ref KeyName
#DisableApiTermination:
ImageId: !FindInMap [AWSRegionAMI, !Ref 'AWS::Region', HVM64]
InstanceType: t2.micro
#Monitoring: true|false
NetworkInterfaces:
- AssociatePublicIpAddress: true
SubnetId: !ImportValue pubsubnet-01a-id
DeviceIndex: 0
GroupSet:
- !ImportValue Bastion-sg-id
- ###I want to set DefaultSecurityGroup###
UserData: !Base64 |
#!/bin/bash -ex
# put your script here
Tags:
- Key: Name
Value: sample-ec2-bastion
如果我想将默认安全组附加到实例,我应该怎么做?
##########修改#############
效果很好!!感谢艾伦的支持。
我将此代码添加到 Network.yaml。
DefaultNetworkSG:
Value:
!GetAtt SampleVPC.DefaultSecurityGroup
Export:
Name: default-sg-id
我将此代码添加到 Application.yaml。
NetworkInterfaces:
- AssociatePublicIpAddress: true
SubnetId: !ImportValue pubsubnet-01a-id
DeviceIndex: 0
GroupSet:
- !ImportValue Bastion-sg-id
- !ImportValue default-sg-id
【问题讨论】:
-
谢谢。但是我已经写了输出部分。
-
你指的是VPC的默认安全组吗? @Yan 我已经更新了答案以引用网络的默认 SG。
标签: amazon-web-services amazon-ec2 amazon-cloudformation amazon-vpc