我正在与 CloudFormation 合作,尝试将 EC2 和 RDS 部署到安全组中,其中 EC2 SG 作为 WebDMZ 组,而 RDS SG 仅对来自 EC2 组的流量开放。
安全组工作正常,但 EC2 和 RDS 实例都给我同样的错误,他们在 VPC XYZ123 中找不到安全组,其中 XYZ123 是默认 VPC 的 ID——唯一的 VPC,并且我已经验证我的安全组确实在该 VPC 中。
我在另一个模板中尝试了我的 EC2 的代码并且它起作用了,但前提是我专门将它分配给了一个公共子网。
此代码是学术性的,不适用于生产。我不能将我的资产部署到默认或随机子网吗?安全组不是实例级别的,所以只要它是正确的 VPC 就可以了?我错过了什么?
Resources:
04WebDMZ:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Open to HTTP, HTTPS and SSH on all ports
GroupName: 04WebDMZ
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
Tags:
- Key: Name
Value: 04WebDMZ
04DatabaseSG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Open to 04WebDMZ
GroupName: 04DatabaseSG
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
SourceSecurityGroupName:
Ref: 04WebDMZ
Tags:
- Key: Name
Value: 04DatabaseSG
04PublicEC2:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-047a51fa27710816e
InstanceType: t2.micro
KeyName: my_key_pair
NetworkInterfaces:
- AssociatePublicIpAddress: True
DeviceIndex: 0
DeleteOnTermination: True
Tags:
- Key: Name
Value: 04PublicEC2
UserData:
!Base64 |
#!/bin/bash
yum install httpd php php-mysql -y
cd /var/www/html
wget https://wordpress.org/wordpress-5.1.1.tar.gz
tar -xzf wordpress-5.1.1.tar.gz
cp -r wordpress/* /var/www/html/
rm -rf wordpress
rm -rf wordpress-5.1.1.tar.gz
chmod -R 755 wp-content
chown -R apache:apache wp-content
service httpd start
chkconfig httpd on
04RDS:
Type: AWS::RDS::DBInstance
Properties:
DBSecurityGroups:
- Ref: 04DatabaseSG
AllocatedStorage: '5'
DBInstanceClass: db.t2.small
Engine: MySQL
MasterUsername: admin
MasterUserPassword: admin
Tags:
- Key: Name
Value: 04RDS
DeletionPolicy: Snapshot