2025年度地方技能竞赛任务 工种名称 云计算 任务名称 比赛时间 4小时 编号 Solution Architecture 任务编号 评委 确 认 第1任务 (签章) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1. 需求 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 作为云工程师,需要将公司服务部署到 AWS 环境。请根据给定需求,并综合考虑高可用性、运营效率等云设计原则来构建系统。 软件栈 AWS | 应用 - VPC | - Golang - ECR | - ECS | - ELB | - CloudMap | - DynamoDB | - CloudWatch | 云计算 第1任务 5 - 1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2. 选手注意事项 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ※ 请在完成需求时注意以下事项。 1) 使用机械及工具等时请注意安全,必要时请佩戴安全装备和服装,预防事故。 2) 作业中请注意预防烧伤、触电、擦伤等安全事故,使用工具时请佩戴安全防护用具,遵守安全守则。 3) 作业中请注意工具的使用,遵守安全守则,预防事故。 4) 比赛开始前请通过轻度拉伸等放松紧张,使用作业工具时请注意安全。 5) 题目中的尖括号 <> 表示变量,选手须适当更改后使用。 6) Security Group 的 80/443 outbound 请设置为 anyopen 使用。 7) Bastion EC2 用于评分,请确保服务器连接没有问题,以免评分时受到不利影响。 8) 任务结束前请停止所有运行中的测试和负载,确保服务器没有问题。 9) 请注意 Tag 信息正确、权限正常,避免无法评分。 10) 需要设置 Region 的资源全部配置在首尔地区(ap-northeast-2)。 云计算 第1任务 5 - 2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3. 网络构成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (原文件此处为 draw.io 架构图数据,学习页中以文本展示) 使用 AWS VPC 配置 Public、Private 子网。子网应使用 A 区和 C 区构建高可用,子网掩码可自由配置。 Public 子网可从互联网直接访问;Private 子网访问互联网时通过 NAT Gateway 访问。 在 Public 子网创建 1 个可接收外部用户请求的 ALB。 - VPC 名称(tag):ws-vpc - VPC CIDR:10.101.0.0/16 - 子网(tag):ws-pub-a, ws-pub-c, ws-priv-a, ws-priv-c - 路由表(tag):ws-pub-rt, ws-priv-rt-a, ws-priv-rt-c - ALB 名称(tag):gateway-alb-pub ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4. Bastion(跳板机) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 使用 EC2 配置 Bastion 服务器。必须可从互联网访问,并使用 EIP 让服务器重启后 IP 不变。 Bastion 用于评分,必须确保 SSH 连接和权限没有问题。 - EC2 类型:t3.micro - 镜像:Amazon Linux2 - 软件包:awscli, curl, docker, jq - Tag:ws-bastion ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5. Application(应用) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Gateway 服务器与位于 Public 子网的 ALB 连接,负责将外部请求转发到 VPC 内部的端点。 可以使用 NGINX 等 Web 服务器或自行开发来构建 Gateway 服务器。 除 API 转发外,HTTP /health 请求必须返回 200 状态码。 Product 应用接收 REST API 请求,对 DynamoDB 进行数据的保存和读取。 来自外部用户的请求经由 Gateway 服务器转发。 - 绑定端口:8080 - Product 应用 API: | API | 参数 | 响应 | |-----|------|------| | POST /v1/item | {"name": "jean", "owner": "kim"} | {"result": "added", "uuid": "xxxx"} | | GET /v1/item?uuid=xxxx | — | {"uuid": "xxxx", "name": "jean"} | | GET /health | — | {"status": "OK", "app": "product"} | 云计算 第1任务 5 - 3 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6. ECR ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 将包含应用的容器镜像上传到 ECR 进行管理。配置私有 registry 并进行安全配置。 上传时必须进行扫描,镜像中不得存在漏洞。若已存在相同名称的镜像标签,则不允许上传; 镜像必须加密存储。为进行测试,向 ECR 上传一个带 v1.0.0 标签的镜像。 - ECR 名称:gateway, product - 已安装软件包:curl ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7. ECS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 使用以下信息,通过 ECS 配置(provisioning)容器。容器运行在 EC2 上。 配置为可从容器内部通过 SHELL 访问。注意:生产环境不得使用 latest 标签部署 task。 另外,Gateway 调用 Product 时使用 ECS Service Connect。 Service Connect 的环境变量分别使用 CONN_GATEWAY、CONN_PRODUCT。 通过 SHELL 进入 Gateway 容器后,用 curl 调用 http://product 应能访问。 用于 SHELL 访问的 Gateway 容器命名为 gateway,须能从 Bastion 通过 ECS EXEC 进入 SHELL。 - ECS 集群名称:ws-cluster - ECS 服务名称:gateway-svc, product-svc - ECS 任务定义名称:gateway-td, product-td - EC2 类型:t3.small ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8. DynamoDB ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Product 应用使用 DynamoDB 处理数据。建表时使用 PAY_PER_REQUEST 模式, 使用 uuid、name、owner 作为表的键。为应对数据丢失,启用 DynamoDB Encryption 和基于 Arn 的备份及 PITR,并配置表的删除保护。为实现 Encryption at rest, 使用 CMK 配置 SSE 级别的表加密。 - 表名:product - 键:uuid, name, owner - 模式:PAY_PER_REQUEST 云计算 第1任务 5 - 4 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9. CloudWatch ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 构建名为 "Product Service" 的 Dashboard,包含可查看 ECS 所用 EC2 的 CPU、 Network In/Out bytes 以及 ALB 4xx、5xx 错误的图表。 配置:若 5 分钟内发生 10 个以上 4xx 错误则触发告警。 另外,启用 ECS 的 Container Insights,以便查看集群中 Task 的 CPU Utilization、 Memory Utilization,并在 CloudWatch Logs 中查看 task 输出到 console 的所有日志。 - Dashboard 名称:Product Service - Dashboard 指标:EC2 CPU, EC2 Network, ALB 4xx error, ALB 5xx error - 日志组名称:/ws/ecs/gateway, /ws/ecs/product 云计算 第1任务 5 - 5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【中文翻译说明】本文由 AI 从韩文原文翻译,术语保留英文原名以便对照评分标准。 原文件:2025_jibang_day1_day1_mission.txt ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━