44 lines
1.9 KiB
Markdown
44 lines
1.9 KiB
Markdown
---
|
||
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 容器形式运行
|