25-6-17-云计算复习11
本文最后由方少年更新于2025 年 11 月 10 日,已超过20天没有更新。如果文章内容或图片资源失效,请留言反馈,将会及时处理,谢谢!
当然可以!以下是一道基础的 **AWS CloudFormation** 例题,适合用来练习你对模板结构、子网、路由、安全组、EC2 实例等基本知识的理解。
------
## ✅ CloudFormation 基础例题(适合入门练习)
------
### 📘 题目背景:
你正在查看以下 CloudFormation 模板:
```yaml
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.1.0.0/16
MySubnet:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.1.1.0/24
MapPublicIpOnLaunch: true
MyInternetGateway:
Type: AWS::EC2::InternetGateway
AttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref MyVPC
InternetGatewayId: !Ref MyInternetGateway
MyRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref MyVPC
MyRoute:
Type: AWS::EC2::Route
DependsOn: AttachGateway
Properties:
RouteTableId: !Ref MyRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref MyInternetGateway
SubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref MySubnet
RouteTableId: !Ref MyRouteTable
MySecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow SSH
VpcId: !Ref MyVPC
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
MyInstance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: ami-0c101f26f147fa7fd
SubnetId: !Ref MySubnet
SecurityGroupIds:
- !Ref MySecurityGroup
```
------
## 💬 问题(共 5 分)
------
### **1. [1 分]**
该模板会创建多少个 EC2 实例?它们是否可以访问互联网?请解释理由。
------
### **2. [1 分]**
MyInstance 是否可以从公网通过 SSH(端口 22)访问?为什么?
------
### **3. [1 分]**
若你希望只有公司网络(IP 段:203.0.113.0/24)能够 SSH 访问该实例,应如何修改模板?
------
### **4. [1 分]**
该模板中是否包含 NAT 网关?私有子网是否能访问互联网?请说明。
------
### **5. [1 分]**
简要解释 CloudFormation 中 `DependsOn` 的作用,并指出在哪个资源中使用了它?
------
## ✅ 标准答案与解析
------
### **1. 答案:创建 1 个 EC2 实例,可以访问互联网**
- 创建了 `MyInstance` 一个 EC2 实例。
- 子网 `MySubnet` 设置了 `MapPublicIpOnLaunch: true` → 实例会自动获得公网 IP。
- 路由表连接了 Internet Gateway → 可以访问外部网络。
✅ **得分:1 分**
------
### **2. 答案:可以通过 SSH 从公网访问**
原因:
- 安全组 `MySecurityGroup` 开放了 `TCP:22` 访问,来源是 `0.0.0.0/0`(任何 IP 都能连)
- 实例有公网 IP(见上题)
✅ **得分:1 分**
------
### **3. 答案:修改安全组的 Ingress 条件如下**
```yaml
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 203.0.113.0/24
```
这将只允许公司网络访问实例的 SSH 端口。
✅ **得分:1 分**
------
### **4. 答案:没有 NAT 网关,私有子网不能访问互联网**
- 模板中没有 `AWS::EC2::NatGateway` 或 Elastic IP 等资源
- 所有资源使用的是 **公共子网**(可映射公网 IP)
- 如果创建私有子网,在当前设定下它将无法访问互联网
✅ **得分:1 分**
------
### **5. 答案:`DependsOn` 用于控制资源创建顺序**
- 在资源 `MyRoute` 中使用了 `DependsOn: AttachGateway`,表示路由要等到网关绑定完成后才能创建。
- 避免路由表指向尚未绑定的 Internet Gateway。
✅ **得分:1 分**
------
## ✅ 总结得分
| 题号 | 分值 | 得分 |
| -------- | -------- | ------------------ |
| 1 | 1 | ✅ 1 |
| 2 | 1 | ✅ 1 |
| 3 | 1 | ✅ 1 |
| 4 | 1 | ✅ 1 |
| 5 | 1 | ✅ 1 |
| **总分** | **5 分** | **🎉 5 / 5 满分!** |
------
如果你掌握这道题后想挑战进阶难度(带私有子网 + NAT + Bastion Host 的设计题),
👉 回复:“来一道中级 CloudFormation 设计题” 即可!
文章标题:25-6-17-云计算复习11
文章链接:https://www.fangshaonian.cn/archives/99/
最后编辑:2025 年 11 月 10 日 18:31 By 方少年
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)