资源声明
EC2、SecurityGroup、RDS 资源块示例。
35 分钟
资源声明
Resources 中每个条目由 Type(AWS 资源类型)与 Properties(API 参数)组成。CloudFormation 按依赖关系排序创建;显式 DependsOn 可覆盖默认顺序。
学习目标
VPC 与安全组片段
Resources:
LabVpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: Name
Value: coderoadmap-lab
AppSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: CodeRoadMap app SG
VpcId: !Ref LabVpc
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
CidrIp: 10.0.0.0/16
与 tf-aws 中 aws_vpc、aws_security_group 参数一一对应。
EC2 实例
AppInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0abcdef1234567890 # 替换为目标 Region 的 AMI
InstanceType: t3.micro
SecurityGroupIds:
- !Ref AppSecurityGroup
Tags:
- Key: Name
Value: coderoadmap-app
ImageId 因 Region 而异;生产模板应配合 Mappings 或 SSM Parameter(见 cf-parameters)。
RDS MySQL(简化)
DbSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription: lab subnets
SubnetIds:
- !Ref PrivateSubnet1
- !Ref PrivateSubnet2
LabDatabase:
Type: AWS::RDS::DBInstance
Properties:
Engine: mysql
DBInstanceClass: db.t3.micro
AllocatedStorage: 20
MasterUsername: admin
MasterUserPassword: !Ref DbPassword # 应来自 Parameter,勿硬编码
VPCSecurityGroups:
- !Ref DbSecurityGroup
DBSubnetGroupName: !Ref DbSubnetGroup
CodeRoadMap backend 连接串格式同 tf-practice 的 RDS output。