--- title: "ECS Deploy Runner" type: concept tags: [Terraform, ECS, Deployment, IaC, Docker, CI/CD] sources: - ctp-topic-16-cross-account-terraform-modules.md last_updated: 2026-05-15 --- ## Overview ECS Deploy Runner(EDR)是运行在 AWS ECS 上的 Docker 容器,负责在跨账号 Terraform 部署流水线中执行 `terraform plan` 和 `terraform apply` 命令。它是流水线的实际执行单元。 ## How It Works 1. **触发**:Jenkins(托管在 [[Shared-Account]])检测到模块目录中的 `cross-account.json` 标记文件 2. **启动**:ECS Deploy Runner 在 Shared Account 的 ECS 集群中启动 3. **Assume Role**:通过 Assume Role 获取两个目标账号 IAM 角色的临时凭证: - `[[TF-State-Bucket-Accessor]]`:读取目标账号的 Terraform 状态文件 - `[[Cross-account-ECS-Deploy-Runner-Role]]`:在目标账号中执行资源部署 4. **执行**:运行 Terraform CLI 命令完成部署 ## Key Characteristics - **容器化**:运行在 Docker 容器中,环境一致性好 - **按需启动**:每次部署触发一次容器启动,无长期占用 - **临时凭证**:通过 Assume Role 获取的短期凭证,最小化密钥暴露时间 - **与 Terragrunt 配合**:Terragrunt HCL 文件配置角色切换逻辑 ## Local vs CI/CD Difference | 环境 | 角色处理 | |------|---------| | 本地开发 | Terragrunt 自动处理角色切换,无需手动 Assume Role | | Jenkins CI/CD | EDR 通过 Assume Role 获取两个专用角色的临时凭证 | ## Relationships - [[CI/CD Pipeline]]:EDR 是 CI/CD 流水线的执行层 - [[Cross-account-Terraform-Modules]]:EDR 是跨账号 Terraform 模块方案的核心执行组件 - [[Shared-Account]]:EDR 运行在 Shared Account 的 ECS 集群中 - [[Assume-Role]]:EDR 通过 Assume Role 获取跨账号权限 - [[Docker-Containerization]]:EDR 以 Docker 容器形式运行