【AWS】【ECS】部署流程

目录

■简介:什么是ECS

■控制台操作

[■AWS ECS 【CLI】的具体操作部分(三个步骤)](#■AWS ECS 【CLI】的具体操作部分(三个步骤))

[什么是 CLI?](#什么是 CLI?)

[1. 注册新任务定义 (Register New Task Definition)](#1. 注册新任务定义 (Register New Task Definition))

[使用 AWS CLI 注册](#使用 AWS CLI 注册)

[2. 更新服务使用新任务定义 (Update Service with New Task Definition)](#2. 更新服务使用新任务定义 (Update Service with New Task Definition))

[使用 AWS CLI 更新](#使用 AWS CLI 更新)

[3. 查询服务状态验证部署 (Verify Deployment Status)](#3. 查询服务状态验证部署 (Verify Deployment Status))

[使用 AWS CLI 查询](#使用 AWS CLI 查询)

总结


================

■简介:什么是ECS

  • 集群 (Cluster) :您容器应用运行的基础设施集合,可以是一组 EC2 实例(需要您管理服务器),也可以使用AWS Fargate 这种无服务器模式(无需管理服务器,只需为资源付费)。

  • 任务定义 (Task Definition):一份描述您的应用如何运行的"蓝图",类似于 Docker Compose 文件。它定义了使用哪个镜像、需要多少 CPU 和内存、开放哪些端口以及环境变量等。

  • 服务 (Service):负责确保指定数量的任务(即基于任务定义运行的容器实例)始终处于运行状态。它还会与负载均衡器集成,实现流量分发和滚动更新

==========

■控制台操作

=================

==========

============

==========

■AWS ECS 【CLI】的具体操作部分(三个步骤)

什么是 CLI?

CLI 是 Command Line Interface (命令行界面)的缩写。它是一种基于文本的交互工具,允许用户通过输入命令来与操作系统或云服务进行交互。在 AWS 中,AWS CLI 是一个官方提供的命令行工具,您可以在本地终端或 CI/CD 环境中使用它来管理 AWS 资源(如 ECS、EC2、S3 等),而无需登录 AWS 管理控制台。使用 CLI 可以实现自动化、可重复的部署操作。

1. 注册新任务定义 (Register New Task Definition)

任务定义是部署到 ECS 的"蓝图",它描述了您的容器应用如何运行,包括:

  • 容器镜像地址(如您的 Liberty 镜像)

  • 容器所需的 CPU 和内存

  • 端口映射

  • 环境变量

  • 启动命令等

当您修改了应用配置或镜像版本时,就需要创建一个新版本的任务定义。

使用 AWS CLI 注册

首先,准备一个 JSON 文件(例如 task-definition.json),内容类似:

javascript 复制代码
json
{
    "family": "my-liberty-app",
    "networkMode": "awsvpc",
    "requiresCompatibilities": ["FARGATE"],
    "cpu": "1024",
    "memory": "3072",
    "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
    "containerDefinitions": [
        {
            "name": "liberty-container",
            "image": "icr.io/appcafe/websphere-liberty:25.0.0.12-full-java21-openj9-ubi-minimal",
            "portMappings": [
                {
                    "containerPort": 9080,
                    "protocol": "tcp"
                }
            ],
            "essential": true
        }
    ]
}

然后执行命令:

bash 复制代码
aws ecs register-task-definition --cli-input-json file://task-definition.json

成功后,AWS 会返回新注册的任务定义 ARN 和版本号(如 my-liberty-app:3)。

控制台操作 :

进入 ECS → 任务定义 → 创建新任务定义,填写相关信息后保存,会自动生成一个新版本。

======================

2. 更新服务使用新任务定义 (Update Service with New Task Definition)

服务负责维护指定数量的任务实例。当您需要发布新版本时,只需更新服务引用的任务定义版本,ECS 会自动执行滚动更新(逐步停止旧任务、启动新任务)。

使用 AWS CLI 更新

bash 复制代码
aws ecs update-service \
    --cluster MyCluster \
    --service MyService \
    --task-definition my-liberty-app:3 \
    --force-new-deployment

===

控制台操作 :

进入集群 → 选择服务 → 点击"更新 (Update)",在"任务定义"下拉列表中选择新版本,然后按照向导完成更新。

===

3. 查询服务状态验证部署 (Verify Deployment Status)

更新服务后,您需要监控部署进度,确保新版本任务正常运行,且旧版本任务已终止。

使用 AWS CLI 查询

查看服务状态:

bash 复制代码
aws ecs describe-services --cluster MyCluster --services MyService

===

  • services[].deployments:列出正在进行的部署,包括任务定义、状态(PRIMARY/ACTIVE)、滚动更新的统计(如 runningCount, desiredCount)。

  • services[].events:最近的服务事件日志,包含任务启动/停止信息。

  • services[].runningCount:当前运行的任务数,应等于 desiredCount。

====

查看具体任务列表:

bash 复制代码
aws ecs list-tasks --cluster MyCluster --service-name MyService

查看单个任务详情:

bash 复制代码
aws ecs describe-tasks --cluster MyCluster --tasks <task-arn>

可以检查任务的 lastStatus 是否为 RUNNING,healthStatus 是否为 HEALTHY(如果配置了健康检查)。

控制台操作 :

进入集群 → 选择服务 → 查看"部署"标签页和"事件"标签页,可以看到正在进行的部署进度和最新事件;点击"任务"标签页可以查看所有任务实例的状态。

====

总结

这三个步骤构成了 ECS 应用更新的核心循环:

  1. 注册新任务定义(记录应用新版本配置)

  2. 更新 服务引用该新版本(触发滚动部署) // 注册后跟新,才能生效

  3. 查询 服务状态确保部署成功(监控并验证) // 并非必须操作

您可以将这些命令集成到 CI/CD 流水线(如 Jenkins、GitHub Actions)中,实现全自动化的持续部署。如果过程中遇到权限不足等问题,请检查 IAM 角色是否包含 ecs:RegisterTaskDefinition、ecs:UpdateService、ecs:DescribeServices 等权限。

====

相关推荐
知已难寻15 小时前
第 5 篇 · 云原生生态与实践:微服务、DevOps、可观测性与 Serverless
大数据·linux·服务器·微服务·云原生·云计算·devops
Vitaliy Kostrov(柯维远)16 小时前
Multi-CDN 决策闭环:QoE、成本、安全与内容正确性如何进入同一个策略引擎?
安全·网络安全·云计算·音视频·负载均衡·cdn
长不大的杨瑞杰17 小时前
OpenCode v2 远程开发实战:Web UI、Pair、SSH 隧道与 OpenTunnel 安全接入
人工智能·安全·云计算·软件工程·devops
T量子永生17 小时前
Android SISO 分布式编译集群配置方案
android·分布式·云计算·源代码管理
whyutianict_vv20 小时前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
知已难寻1 天前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
Lvan的前端笔记1 天前
阿里云CDN
阿里云·云计算
李兆龙的博客2 天前
从一到无穷大 #105:OpenAI Habitat II——多租户演进、全球读取优化与 CDC 平台
云计算·存储
yyuuuzz2 天前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
Maynor9964 天前
免费 Cloudflare 只有 10 个 D1?满了之后的「穷鬼打法」:表前缀复用同一个库
数据库·后端·云计算·cloudflare