【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?

CLICommand 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 是否为 RUNNINGhealthStatus 是否为 HEALTHY(如果配置了健康检查)。

控制台操作

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

====

总结

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

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

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

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

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

====

相关推荐
切糕师学AI6 小时前
成本治理(Cloud Cost Governance)是什么?
云原生·云计算
微风中的麦穗19 小时前
【SQL Server 2019】企业级数据库系统—数据库SQL Server 2019保姆级详细图文下载安装完全指南
大数据·数据库·sqlserver·云计算·个人开发·运维必备·sqlserver2019
大梦想家~1 天前
在职牛马,因为考过阿里云ACP,浅说下一次过的强度
运维·云计算·网络工程师·阿里云acp·云计算工程师·阿里云acp考试·阿里云acp备考
王da魔1 天前
Haproxy七层代理
云原生·云计算
七夜zippoe1 天前
分布式系统弹性设计实战:Hystrix与Sentinel熔断降级深度解析
java·hystrix·sentinel·aws·分布式系统
vortex52 天前
MinIO 与 mc 客户端完整使用指南
aws·minio·云技术
代码N年归来仍是新手村成员2 天前
OpenClaw本地部署 + AWS Bedrock Claude 4.5 模型
后端·云计算·aws
量化分析2 天前
腾讯云迁移上云功能
linux·云计算·腾讯云