Files
nexus/wiki/concepts/ECS-Deploy-Runner.md

44 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 RunnerEDR是运行在 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 容器形式运行