非常赞！我们继续来一题模拟题四，模仿 Week 13 中的 **Q4 类型：Amazon SQS + 可见性超时（Visibility Timeout）+ 并发消费行为分析**。------## ✅ 模拟题四：SQS 消息处理与可见性超时（共 3 小问）------### 📘 场景描述：你正在使用 **Amazon SQS Standard Queue** 实现任务处理调度。当前：- 队列名为：`TaskQueue` - 队列的 **Visibility Timeout** 设置为 **15 秒** - 队列中当前有 3 条消息：**T1、T2、T3** - 系统有两个消费者 Worker：**W1 和 W2**------### 📅 消息处理时间线如下：| 时间（秒） | 事件 | | ---------- | ----------------------- | | 0 | W1 接收到消息 T1 | | 3 | W2 接收到消息 T2 | | 10 | W1 仍在处理 T1 | | 16 | W2 接收到新的消息 | | 18 | W1 处理完成并删除 T1 | | 20 | W2 删除它正在处理的消息 | | 22 | W1 再次接收到一条消息 |------### 💬 问题：#### **1. [2 分]****在时间 16 秒时，W2 接收到的可能是哪条消息？请解释原因。**------#### **2. [2 分]****在时间 22 秒时，W1 接收到的可能是哪条消息？如果是重复消息，是如何发生的？**------#### **3. [2 分]****如何避免消息被重复处理？请列出两种常用策略或配置。**------📝 请你完成这 3 小题后，我会逐题批改并给出解释。继续加油！💪
明白了！你是想要我根据 **2025年 Week 13 Revision Tutorial（comp5349_week13.pdf）** 的题型和风格，参考 **2024年期末考题（Cloud_Computing_torelease.pdf）** 的结构和难度，为你出 **4道类似“大题”风格的综合题**，就像去年考题的 Q7 ~ Q9 那样。这些大题涉及场景、配置、推理、权限、安全等综合能力，是复习时非常重要的训练。------## ✅ Week13 风格 - 综合大题模拟题（共 4 题）------### 🔷 模拟大题 Q1：S3 版本控制 + CRR 复制行为（15 分）你的组织有一个主桶 `project-data` 设置在 `us-east-1`，启用了 **版本控制** 和 **跨区域复制（CRR）**，目标桶为 `project-data-backup`（在 `us-west-2`）。CRR 使用默认设置（不复制删除标记和旧版本）。以下是某对象 `report.pdf` 的操作日志：| 日期 | 操作 | | ---- | ------------------------------- | | D1 | 上传 report.pdf（内容 A） | | D2 | 更新 report.pdf（内容 B） | | D3 | 删除 report.pdf | | D4 | 恢复 D2 的版本 | | D5 | 上传新版本 report.pdf（内容 C） |------#### 问题：1. [2 分] D1 之后，两个桶中分别有哪些版本？分别都只有版本为内容A的报告pdf文件1. [3 分] D3 后，`report.pdf` 在源桶中的状态？在目标桶中的状态？report.pdf在原桶中最新的是delete mark，一共是A,B和delete mark三个版本，但是目标桶中最新的还是还是上一个D2版本（内容B的pdf），一共有A,B两个版本1. [3 分] D4 后执行 GET 操作（未指定版本）会返回哪个版本？会返回D2的对应内容B的版本，因为默认是最新的版本1. [3 分] 若启用复制删除标记功能，D3 后目标桶中会发生什么变化？目标桶中将会同时复制带deletemark的文件，也就是说，目标桶将和主桶一致，都是三个版本1. [4 分] 请说明如何使用 S3 Lifecycle Policy 配合版本控制，删除 30 天前的旧版本，但保留当前版本。使用类似auto scaling group的逻辑，如果有超过30天以上的旧版本存在并且不是当前的最新版本，那么在桶中删除它------### 🔷 模拟大题 Q2：Lambda + SNS + EC2 权限与触发器（15 分）你设计了一个自动化响应架构：- SNS Topic：`OrderAlerts` - CloudWatch Alarm 向 `OrderAlerts` 发布消息（如订单处理失败） - 一个 Lambda 函数订阅该 SNS Topic - Lambda 的任务是启动一个新 EC2 实例并标记为 `{"Env": "Recovery"}`------#### 问题：1. [3 分] 你需要为 Lambda 函数配置哪些 IAM 权限？写出至少 3 个 IAM Action。EC2:NewInstance, EC2:EDit_Environment_symbol,SNS:Listen_Topic1. [2 分] SNS Topic 需要配置哪些权限，才能让 CloudWatch Alarm 成功向其发布消息？这题确实不知道1. [3 分] 如果 Lambda 函数失败，提示 `UnauthorizedOperation`，可能是哪项权限缺失？未添加安全组，或者是所在子网没有正确的绑定和SNS相同的VPC，或者是lambda函数没有添加正确的trigger1. [3 分] 你希望 Lambda 只允许启动 `t2.micro` 类型的 EC2 实例，如何通过 IAM Policy 限制？加一条在启动时仅允许启动带有t2.micro标签的EC2实例的policy1. [4 分] 请简述整个事件流从监控报警 → SNS → Lambda → EC2 的执行路径。这个也不知道------### 🔷 模拟大题 Q3：VPC + Subnet + Security Group + NAT 路由分析（15 分）某三层 Web 应用部署于以下架构：| 子网名称 | 类型 | CIDR | 默认路由去向 | | --------- | -------- | ----------- | -------------------------- | | WebSubnet | 公网子网 | 10.0.1.0/24 | Internet Gateway | | AppSubnet | 私网子网 | 10.0.2.0/24 | NAT Gateway (在 WebSubnet) | | DBSubnet | 私网子网 | 10.0.3.0/24 | 无公网访问 |部署内容：- WebSubnet 中部署 ALB（监听 80） - AppSubnet 中部署 App EC2（监听 5000） - DBSubnet 中部署 RDS（监听 3306） - Bastion Host 在 WebSubnet，用于 SSH 到 App 层------#### 问题：1. [3 分] 请为此架构设计 Security Group（至少 3 个），并为每个列出 Inbound 规则。WebSubnetSG：进站TCP，端口80，全部ipAppSubnetSG：进站TCP，端口5050，WebSubnetSG安全组进站TCP，端口22，Bastion Host的ipDBSubnet：进站TCP，端口3306，DBSubnet的ip1. [3 分] App 层 EC2 如何访问互联网？说明网络路径。网络是从私有子网连接到NAT Gateway再连接到WebSubnet在连接到Internet Gateway后出站，但是不能从公网访问1. [3 分] 从 Bastion Host SSH 到 App Instance，哪些配置必须正确？首先需要有能连接到Bastion Host SSH的正确的ssh端口入站安全组，并且Bastion Host需要在AppSubnetSG的安全组中可以通过ssh22连接。这样用户在能登录Bastion Host SSH的基础上，可以通过一个VPC而连接App Instance。1. [3 分] 若需访问 RDS，是否可从公网直接访问？如何安全实现远程访问？不可以直接公网访问，因为直接公网访问可能会导致RDS大量计费，而RDS是按照条目数计费的。安全的访问方式是，在WebSubnet中使用ASL创建一个新的实例，将这个实例添加DBSubnet的安全组，安全组添加仅用户的ip入站，然后用户通过公网访问这个实例，再通过实例连接RDS1. [3 分] 若 App 层实例需下载 MySQL 安装包，当前配置是否支持？请说明。当前配置支持，是因为App层目前可以从私有子网连接到NAT Gateway再连接到WebSubnet在连接到Internet Gateway后出站。------### 🔷 模拟大题 Q4：SQS + Visibility Timeout + 幂等性设计（15 分）你有一个 SQS Standard Queue：`JobQueue`，配置如下：- Visibility Timeout = 30 秒 - 两个 Worker：W1 和 W2 - 每条消息平均处理时间约为 40 秒 - 当前队列内有消息 M1、M2、M3------#### 以下事件发生：| 时间（秒） | 事件 | | ---------- | -------------------- | | 0 | W1 拉取 M1 | | 5 | W2 拉取 M2 | | 35 | W2 删除 M2 | | 40 | W1 处理完成并删除 M1 | | 41 | W2 拉取新消息 | | 42 | W2 删除消息 |------#### 问题：1. [3 分] W2 在 41 秒可能拉到哪条消息？为什么？ 2. [3 分] W1 处理时间超过 Visibility Timeout，会发生什么情况？是否可能导致重复处理？ 3. [3 分] 如何配置 SQS 以减少重复处理风险？说明两种方法。 4. [3 分] 如果 Lambda 函数代替 Worker 消费队列，如何控制最大并发数？ 5. [3 分] 你希望 Worker 在处理失败时重试 3 次并记录失败信息，应如何设计？------## ✅ 总结这四道模拟题涵盖了：| 模拟题 | 覆盖主题 | | ------ | --------------------------------------------------- | | Q1 | S3 + 版本控制 + CRR + 生命周期策略 | | Q2 | Lambda + SNS + EC2 + 权限控制 | | Q3 | VPC + 路由 + 安全组 + NAT 分析 | | Q4 | SQS + Visibility Timeout + 幂等性 + Lambda 并发控制 |------是否想现在开始做某一题？比如：> “我要做 Q1” > 或 > “我要做 Q2 第 1 小题”我会帮你逐题批改、讲解。祝你复习顺利！💪
太好了！我们继续来一道基于你提供的 Week 13 Revision Tutorial 中 **Q2（Lambda + SNS + EC2 权限）** 风格的场景题。该题主要考查你对 AWS 事件驱动架构中权限设置（IAM）与服务集成的理解。------## ✅ 模拟题二：Lambda + SNS + EC2 权限场景题（共 2 小问）------### 📘 场景描述：你正在为一个自动扩容系统设计事件响应流程：- 系统中创建了一个 SNS Topic，名为 `CpuAlerts` - 当 EC2 实例的 CPU 使用率超过 80% 时，将触发 CloudWatch Alarm，发布消息到 `CpuAlerts` - 你已创建一个 Lambda 函数，订阅了该 SNS Topic - Lambda 函数的任务是：**启动一个新的 EC2 实例**，并将其标签为 `{"Environment": "AutoScale"}`------### 💬 问题：#### **1. [3 分]**为了让这个系统顺利运行，请列出 **所有需要的权限**（包括 SNS、Lambda、EC2 各自需要的 IAM 权限），并说明这些权限应该**配置在什么地方**（例如 Execution Role、Resource Policy 等）。EC2: StartInstance/StopInstance/TerminateInstance，需要设置在Execution Role中Lambda: 需要加trigger，监听cpuSNS：需要加发送消息给用户的权限------#### **2. [2 分]**如果 Lambda 函数在启动 EC2 实例时失败，可能有哪些常见的权限配置错误？请举出至少两种，并简要说明原因。1.可能是lambda函数没有配备创建EC2实例的权限，因为如果没有权限就无法执行新EC2实例的创建任务2.可能是lambda函数没有启动EC2实例的权限，因为如果没有权限就无法执行新EC2实例的启动任务------📝 请你完成作答，我会在你提交后逐题批改。加油！💪
太棒了！我们继续来一道 **模拟题三**，模仿 Week 13 中的 **VPC + Subnet + Security Group 场景题（Q3）**，涵盖网络架构、子网划分、安全组配置、流量路径等关键考点。------## ✅ 模拟题三：VPC 架构与安全组设计（共 4 小问）------### 📘 场景描述：你正在部署一个典型的三层 Web 应用架构在 AWS 上，要求安全性高、可从公网访问。你的 VPC 架构如下：#### 子网配置：| 子网名称 | 类型 | CIDR | 默认路由目标 | | --------- | ------- | ----------- | --------------------------- | | WebSubnet | Public | 10.0.1.0/24 | Internet Gateway (IGW) | | AppSubnet | Private | 10.0.2.0/24 | NAT Gateway（在 WebSubnet） | | DBSubnet | Private | 10.0.3.0/24 | 无出站互联网访问 |#### 部署内容：- WebSubnet 中部署了一个 **Application Load Balancer（ALB）**，监听 443（HTTPS） - AppSubnet 中部署了若干 **EC2 实例**，运行 Web 应用，监听端口 5000 - DBSubnet 中部署了一个 **RDS 数据库实例**，监听端口 3306 - 所有子网都在同一个 AZ 中（us-east-1a）#### 其他要求：- ALB 应对公网开放 - App 层 EC2 必须只接受来自 ALB 的流量 - 数据库必须只接受来自 App 层的连接 - 开发人员通过 Bastion Host（另一个子网）远程 SSH 访问 App 层 - App 层可以需要访问互联网更新软件------### 💬 问题：#### **1. [3 分]**你需要创建几个 Security Group？它们分别对应哪些组件？（请列出名称和用途）三个Security Group。第一个WebSubnetSG：对应WebSubnet，允许对应公网HTTP443访问入站，允许WebSubnet在公网上的网络进出第二个AppSubnetSG：对应AppSubnet，允许AppSubnet出站并且允许AppSubnet监听5000端口，允许AppSubnet的公网出站和监听ALB的5000端口，同时允许开发人员SSH访问AppSubnet第三个DBSubnetSG：对应DBSubnet，只允许AppSubnet和DBSubnet进行交互并且对应连接修改RDS数据库，允许AppSubnet通过相关操作调用DBSubnet后执行数据库修改操作------#### **2. [3 分]**请为每个 Security Group 列出**Inbound Rule**，包括协议、端口范围、允许来源（IP 或 Security Group）WebSubnetSG：协议tccp，端口443，允许来源：指定公网来源，例如对应开放公网地址，如果允许全部访问应该是0.0.0.0/0。AppSubnetSG：协议SSH ，端口22，允许来源：Bastion Host的ip地址协议constom TCP ，端口5000，允许来源：WebSubnetSGDBSubnetSG：协议RDS ，端口3306，允许来源：AppSubnetSG------#### **3. [2 分]**App 层中的 EC2 实例如何访问互联网？请说明网络路径和使用的组件。EC2实例是从NAT Gateway连接到WebSubnet，然后从WebSubnet连接aws的IGW，然后从IGW进行出站，入站同理------#### **4. [2 分]**是否可以将 RDS 数据库直接暴露给公网访问？为什么？如果必须远程访问，应如何安全实现？RDS 数据库不可以直接暴露公网访问，因为RDS是按照条数计费的，暴露公网可能会造成大量数据进入，造成严重损失。如果需要远程访问，需要在Bastion Host连接AppSubnet的EC2实例后，在其中进行访问------📝 请你完成这 4 小题，你答完后我会逐题批改，继续加油！💪
很棒，你已经认真完成了 2024 年考试真题的复习！接下来我将根据你提供的 **复习指导文档（Week 13: Review and Exam Info）**，**系统性地整理和补充所有可能在考试中出现的重要知识点**，以确保你没有遗漏。内容将按模块分类，重点标注“✅已考”/“⚠️重点补充”。------# ✅ COMP5349 期末考试全范围知识点整理（基于 Week 13 复习文档）------## 📌 一、AWS Global Infrastructure（基础架构）| 知识点 | 是否出现在去年考题 | 备注 | | --------------------------------------- | ------------------- | ----------------------------------------- | | Region / Availability Zone 的定义与结构 | ✅ Question 7（VPC） | 熟悉 AWS 区域划分与隔离性 | | 全球服务 vs 区域服务 vs AZ服务 | ❌未直接考 | ⚠️建议掌握 IAM、S3 是 Global，EC2 是 Zonal | | VPC 的 CIDR 范围与子网划分 | ✅ Q7, Q9 | 熟悉 CIDR、子网不能重叠 |------## 📌 二、VPC 与网络相关（高频考点）| 知识点 | 是否出现在去年考题 | 备注 | | ----------------------------- | ------------------ | ------------------------------------------- | | Public vs Private Subnet 区别 | ✅ Q7 | 必须掌握：公网 IP、路由表、IGW/NAT | | Route Table 机制与作用 | ✅ Q7 | 熟悉 local vs 0.0.0.0/0 的配置含义 | | IGW 与 NAT Gateway 区别 | ✅ Q7 | IGW 是公网入/出，NAT 是私网出 | | 安全组 vs 网络 ACL 区别 | ❌ | ⚠️可能补考，必须掌握 stateful/stateless 区别 | | Security Group 引用另一个 SG | ✅ 复习文档举例 | WebSG -> AppSG -> DB SG 三层结构熟悉 |------## 📌 三、IAM 与权限控制（必考）| 知识点 | 是否出现在去年考题 | 备注 | | -------------------------------------------- | ------------------ | --------------------------------------------- | | IAM 身份类型（User、Role、Group、Federated） | ✅ Q6 | 熟悉各自用途与权限控制方式 | | IAM Policy 结构解析 | ✅ Q6 | JSON结构：Effect, Action, Resource, Condition | | Identity-based vs Resource-based Policy | ❌ | ⚠️复习文档有覆盖，S3/SNS常见 | | Least Privilege 最小权限原则 | ✅ 复习文档提到 | ⚠️可作为简答题或场景题考察 |------## 📌 四、存储服务（S3 / EBS / EFS）| 知识点 | 是否出现在去年考题 | 备注 | | ----------------------------------------- | ------------------ | ---------------------------------------- | | S3 Bucket 的结构、Key、URL 组成 | ❌ | ⚠️复习文档有重点讲解，建议掌握 | | S3 的版本控制（Versioning） | ✅ 复习文档有 | Delete Marker、恢复旧版本需掌握 | | S3 跨区域复制 + Delete Marker 是否同步 | ❌ | ⚠️可能出简答题 | | S3 权限控制（Bucket Policy / IAM Policy） | ✅ Q6 涉及 | public bucket vs private bucket 机制理解 | | EBS 区别于 S3（块 vs 对象） | ❌未考 | 复习文档有列出，建议了解使用场景 |------## 📌 五、EC2 与虚拟化（计算资源）| 知识点 | 是否出现在去年考题 | 备注 | | ---------------------------------------------- | ---------------------- | --------------------------------------- | | EC2 实例部署与网络配置 | ✅ Q7 | PublicSubnet 配置、SecurityGroup 配置等 | | IAM Role 赋予 EC2 权限访问 S3 | ✅ 复习文档中代码有示例 | ⚠️可出场景题 | | EC2 启动时通过 UserData 安装软件 | ❌ | ⚠️可能以“如何自动部署 Web Server”出题 | | Nitro 系统 / 虚拟化技术（Xen vs KVM vs Nitro） | ✅ Q3 | 熟悉 HW-assisted virtualization 结构 |------## 📌 六、CloudFormation（基础设施即代码）| 知识点 | 是否出现在去年考题 | 备注 | | --------------------------------------------- | ------------------ | -------------------------------- | | YAML 模板结构：Resources、Parameters、Outputs | ✅ Q7 | 熟悉资源逻辑关系和引用语法 | | DependsOn 的作用 | ✅ Q7 | 控制资源部署顺序 | | 子网、路由、安全组如何通过 CF 管理 | ✅ Q7 | 实例分配子网、安全组、KeyName 等 |------## 📌 七、数据库服务（RDS / Aurora）| 知识点 | 是否出现在去年考题 | 备注 | | ------------------------------------- | ------------------ | --------------------------------------- | | RDS 单 AZ / 多 AZ / Read Replica 区别 | ✅ Q9 | 熟悉同步 vs 异步复制，恢复机制 | | Aurora 结构（分层、PG、LSN、CPL/VDL） | ✅ Q9 | **重点复习内容**，Aurora 是高频出题对象 | | EC2 访问 RDS 的权限结构 | ✅ 复习文档 | EC2 需要数据库凭证，非 IAM 控制 |------## 📌 八、Serverless 架构（Lambda / S3 / SNS）| 知识点 | 是否出现在去年考题 | 备注 | | ------------------------------------- | ------------------ | ----------------------------------- | | Lambda 与 S3 集成（由谁触发、谁授权） | ✅ 复习文档代码 | ⚠️资源型 vs 身份型策略，谁 assume 谁 | | SNS / SQS 的区别 | ❌ | ⚠️常考理论题：Pub/Sub vs Queue | | Event Driven 架构 | ✅ 复习文档 | Lambda + SNS + SQS 的组合理解 | | Lambda 使用 Execution Role | ✅ | 无需 profile，直接绑定 IAM Role |------## 📌 九、可扩展性与弹性（Elasticity）| 知识点 | 是否出现在去年考题 | 备注 | | --------------------------------- | ------------------ | ------------------------------------- | | Auto Scaling Group（ASG）工作原理 | ✅ Q5 | **带有“elastic”关键词的服务**都需掌握 | | Elastic Load Balancer 与 AZ 分布 | ✅ Q7 可涉及 | 多 AZ 下负载均衡与健康检查作用 | | Scaling 策略（schedule/dynamic） | ❌ | ⚠️可能作为简答题出 |------## 📌 十、监控与日志（可能涉及）| 知识点 | 是否出现在去年考题 | 备注 | | -------------------------- | ------------------ | --------------------------- | | CloudWatch Metrics / Alarm | ❌ | ⚠️复习文档未提但考试可能涉及 | | CloudTrail / Logs | ❌ | ⚠️了解即可，可作为附加知识 |------# ✅ 总结：推荐重点复习补充区域| 模块 | 是否出现在真题 | 建议 | | ------------------------- | -------------- | ------------------------ | | ✅ CloudFormation 模板结构 | 是 | 多练习 | | ✅ IAM 策略结构、权限控制 | 是 | 熟练掌握 | | ✅ VPC 网络配置、安全组 | 是 | 注重子网与路由逻辑 | | ✅ Aurora 架构及概念 | 是 | 深度掌握 CPL/VDL/VCL | | ⚠️ 安全组 vs 网络 ACL 对比 | 否 | 建议掌握 | | ⚠️ SNS/SQS/Lambda 事件流 | 否 | 建议理解流程图及触发机制 | | ⚠️ EBS vs S3 vs EFS 区别 | 否 | 了解存储类型和适用场景 | | ⚠️ Auto Scaling 策略 | 否 | 可结合弹性服务复习 |------如果你想我为以上模块制作一套“最后冲刺题单”或“小测练习”，欢迎告诉我：👉 「请出一套最后冲刺练习题」 👉 「请出一套 Aurora 重点题」 👉 「请出一套 IAM 真题风格题」继续加油！你已经非常接近万无一失的准备状态了 💪
好的！以下是一道**针对存储服务模块（S3 / EBS / EFS）\**设计的\**大题练习**，结构和难度参考 COMP5349/4349 期末考试中 **Question 5–9 的风格**，包括场景 + 多子题，涵盖对象存储、块存储、权限控制、跨区域复制、使用场景等核心考点。------## ✅ 存储服务大题（场景题）**模块：S3 / EBS / EFS** **总分：15 分**------### 📘 场景描述：你正在为一个媒体处理平台设计存储方案。该平台包括如下几个关键组件：- 一组 EC2 实例用于处理用户上传的视频。这些实例运行在 Auto Scaling Group 中。 - 视频文件首先上传到一个 S3 存储桶 `video-upload-bucket`。 - 处理完成的视频需要存储在另一个 S3 存储桶 `video-processed-bucket`，并通过 CloudFront 分发到全球。 - EC2 实例在处理过程中需要使用暂存空间存放中间文件（如解压缩文件、日志等）。 - 用户希望上传文件时自动触发媒体处理流程（使用 Lambda）。 - 公司计划将所有最终处理结果同步一份到东京区域（`ap-northeast-1`）作为灾备。------## 💬 问题（共 15 分）------### **1. [3 分]**请说明 `video-upload-bucket` 与 `video-processed-bucket` 应分别使用哪种类型的 AWS 存储服务（S3 / EBS / EFS），并解释理由。------### **2. [3 分]**中间处理文件（临时文件）应使用哪种存储服务？请说明为何该服务适合这个场景。------### **3. [2 分]**为实现“用户上传文件后自动触发 Lambda 处理”的功能，应在 S3 中配置什么机制？是否需要附加权限？请简要说明。------### **4. [3 分]**为实现“跨区域灾备”，应如何配置 `video-processed-bucket`？请指出所使用的机制、注意事项（如版本控制等）。------### **5. [4 分]**EC2 实例需要从 `video-upload-bucket` 读取文件，并将处理结果写入 `video-processed-bucket`。请写出一个合理的 IAM Policy（JSON 简化版），以授权 EC2 完成该任务。你可以假设 EC2 已通过 IAM Role 绑定了该 Policy。------📝 完成后可回复：“请帮我批改这道存储服务题” 获取逐题评分与讲解。 如需标准答案，也可直接回复：“请给出参考答案”。祝你练习顺利！💪
明白了！你是希望我像 Week 13 Revision Tutorial 那样，每次给你一个完整的大题（场景题 + 多个子问题），然后你做完后我来批改。👍那我们就从 **模拟题一（S3 场景题）** 开始，整体形式和你之前看到的 **S3 那一大题完全一致**，但内容是新的。------## ✅ 模拟题一：S3 版本控制 + CRR 场景题（共 5 小问）------### 📘 场景描述：你所在的组织使用一个名为 `research-data` 的 Amazon S3 桶，位于 **`ap-southeast-2`（悉尼）** 区域。该桶：- 已启用 **版本控制** - 配置了默认设置的 **跨区域复制（CRR）**，目标桶为 `research-data-backup`，位于 **`us-west-1`（加州）** - 两个桶都开启了版本控制以下是对象 `results.csv` 的操作记录：| 日期 | 操作 | | ----- | ------------------------------------------------------ | | Day 1 | 首次上传 `results.csv` → Version X 创建 | | Day 2 | 更新 `results.csv` → Version Y 创建 | | Day 3 | 删除 `results.csv`（使用默认方式删除） | | Day 4 | 恢复 `results.csv`（即上传一个新版本）→ Version Z 创建 |------### 💬 问题：#### **1. [2 分]**Day 1 结束时，`research-data` 桶中有多少个版本的 `results.csv`？`research-data-backup` 桶中有几个版本？分别是哪一版本？research-data有一个版本，是version X，research-data-backup有一个版本，是version X#### **2. [3 分]**Day 3 结束后，`research-data` 桶中有哪些版本？是否包含删除标记？`research-data-backup` 桶中是否有删除标记？说明原因。research-data中有三个版本，Version X,Y和delete mark，但是research-data-backup中不会有delete mark，因为删除标记不会跨区域复制#### **3. [2 分]**在 Day 3 结束时，如果你对源桶执行未指定版本的 GET 请求，会返回什么？会返回delete mark，并且不会返回文件，因为day 3结束时文件已经被删除了，此时是取最新的文件。#### **4. [2 分]**Day 4 上传 Version Z 后，再次执行未指定版本的 GET 请求，会返回哪个版本？为什么？会返回Version Z，并且会返回文件，因为day 4结束时如果未指定版本，此时是取最新的文件。#### **5. [3 分]**如果你希望将删除操作也复制到备份桶，需要如何修改 CRR 设置？是否可以保留删除历史？需要加一条，将删除操作视为一个空文件。如果这样的话，删除操作可以保留，因为这样实质上是空文件的数目------📝 请你完成这 5 个小问的作答，我会一题一题为你批改并讲解。 准备好后直接贴上你的答案即可，我们开始吧！💪
## ✅ CloudFormation 模拟题（二）------### 📘 场景设定：你正在审阅以下 CloudFormation 模板片段，用于部署一个典型的三层架构网络环境，其中包含用于公网访问的 BastionHost 和部署在私有子网中的应用服务器。```yaml Parameters: KeyName: Type: AWS::EC2::KeyPair::KeyName Default: mykeyResources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.20.0.0/16IGW: Type: AWS::EC2::InternetGatewayVPCGatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: VpcId: !Ref VPC InternetGatewayId: !Ref IGWPublicSubnet: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: 10.20.1.0/24 MapPublicIpOnLaunch: truePrivateSubnet: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: 10.20.2.0/24PublicRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPCPublicRoute: Type: AWS::EC2::Route DependsOn: VPCGatewayAttachment Properties: RouteTableId: !Ref PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref IGWPublicSubnetAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref PublicSubnet RouteTableId: !Ref PublicRouteTableEIP: Type: AWS::EC2::EIPNATGateway: Type: AWS::EC2::NatGateway Properties: SubnetId: !Ref PublicSubnet AllocationId: !GetAtt EIP.AllocationIdPrivateRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPCPrivateRoute: Type: AWS::EC2::Route Properties: RouteTableId: !Ref PrivateRouteTable DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref NATGatewayPrivateSubnetAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref PrivateSubnet RouteTableId: !Ref PrivateRouteTableBastionSG: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow SSH from anywhere VpcId: !Ref VPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0AppSG: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow SSH from Bastion VpcId: !Ref VPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 SourceSecurityGroupId: !Ref BastionSGBastionHost: Type: AWS::EC2::Instance Properties: InstanceType: t3.micro SubnetId: !Ref PublicSubnet KeyName: !Ref KeyName SecurityGroupIds: - !Ref BastionSG ImageId: ami-0c101f26f147fa7fdAppServer: Type: AWS::EC2::Instance Properties: InstanceType: t3.micro SubnetId: !Ref PrivateSubnet KeyName: !Ref KeyName SecurityGroupIds: - !Ref AppSG ImageId: ami-0c101f26f147fa7fd ```------## 💬 问题（满分 15 分）------### **1. [2 分]**这段模板创建了几个 EC2 实例？分别部署在哪个子网中？是否可以从公网直接访问它们？2个实例，BastionHost在PublicSubnet中，AppServer在PrivateSubnet中。BastionHost：可以，因为其子网是PublicSubnet，在这个子网中有MapPublicIpOnLaunch: true，表示分配ip。并且这个实例在vpc下，vpc连接了aws的IGW，因此公网可以通过PublicSubnet的分配ip进行访问。AppServer：不可以，因为其子网PrivateSubnet没有分配ip地址。------### **2. [3 分]**解释为什么 NAT 网关必须部署在 PublicSubnet 中？该 NAT 网关是否具备公网 IP？因为NAT网关需要对外连接，根据设计，PublicSubnet 是对外连接并分配了一个ip地址的，而PrivateSubnet没有ip地址。具备公网ip，因为其设置中有AllocationId: !GetAtt EIP.AllocationId，分配了ip。------### **3. [3 分]**AppServer 是否可以访问互联网（如执行 yum/apt 命令）？请说明理由，并指出实现机制。可以访问互联网。因为它绑定了PrivateSubnet子网，子网的PrivateRoute连接了NATGateway并且它们都在一个vpc中。因此，AppServer可以在PrivateSubnet中通过NATGateway再通过IGW进行出站访问，可以访问外网，但是外网无法访问AppServer。------### **4. [2 分]**是否可以从 BastionHost SSH 登录到 AppServer？为什么？可以，因为BastionHost和AppServer在同一个vpc下，并且AppServer的安全组是AppSG，允许BastionSG的实例入站，而BastionHost SS在BastionSG中，因此可以通过vpc进行访问。------### **5. [3 分]**> 假设现在需要让公网用户通过 HTTP（端口 80）访问 AppServer，你需要修改哪些配置？简要说明。 > > 首先需要用户的ip地址，然后在AppServer的安全组AppSG中添加80http和用户对应ip地址的入站规则，然后给PrivateSubnet分配ip地址。这样用户可以通过PrivateSubnet的ip对应访问。你的思路是**通过直接给 PrivateSubnet 分配 IP 并开放端口**，这在 AWS 实践中不可行：- ❌ **私有子网无法自动分配公网 IP**，即使你“手动配置”，也不是推荐做法 - ❌ AWS 不支持一个实例绑定多个子网 - ✅ 正确做法应是：使用负载均衡（ALB）部署在 PublicSubnet，转发到 AppServer❗️**扣 2 分，给 1 分鼓励表达思路**✅ **得分：1 / 3**------### **6. [2 分]**指出模板中存在的一个潜在安全风险，并提出改进建议。安全组BastionSG的入站规则是所有ip(0.0.0.0/0)，这很不安全，易受攻击并且容易产生高昂计费。
好的！以下是一道**仿照期末考试 Question 6 风格**的 IAM Policy 分析题，考察你对 IAM 策略结构、条件（`Condition`）、资源限定（`Resource`）、操作（`Action`）等要素的理解。------## ✅ IAM Policy 模拟题（Q6 类似）------### 📘 题目背景：你在审查如下 IAM 策略，该策略被绑定到一个 IAM 用户或角色上。```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": "t3.micro", "aws:ResourceTag/Project": "CloudLab" } } }, { "Effect": "Deny", "Action": "ec2:TerminateInstances", "Resource": "*" } ] } ```------### 💬 问题（总分 8 分）------### **1. [2 分]**这个策略允许用户对哪些 EC2 实例执行哪些操作？是否有前提条件？请简要说明。允许进行开始实例StartInstances，结束实例StopInstances。只可以操作t3.micro类型，aws:ResourceTag/Project:值为"CloudLab"下面的实例。------### **2. [2 分]**这个策略是否允许用户终止（terminate）任何 EC2 实例？请说明理由。不允许，因为策略中有显式拒绝：Deny，TerminateInstances，并且"Resource": "*"，代表无法终止所有实例。------### **3. [2 分]**如果有一个 EC2 实例，类型为 `t3.micro`，且打了标签 `"Project": "CloudLab"`，请问用户能否停止它？能否终止它？为什么？可以停止，但是不能终止，原因是因为它满足停止条件，但是用户因为显示拒绝无法终止------### **4. [2 分]**如果用户尝试启动一个类型为 `t2.micro` 的实例，但该实例也打了 `"Project": "CloudLab"` 标签，是否允许？请说明。不允许，因为用户的开始和停止权限只能操作类型t3.micro的实例------📝 请尝试回答这 4 个问题，完成后可回复：“请帮我批改 IAM 模拟题” 来获取评分与解析。 如需参考答案，也可以直接回复：“请给出 IAM 模拟题答案”。祝你练习顺利！💪