跳至主要内容

AWS 解决方案库

Amazon ECS 中队列处理工作负载的金丝雀部署指南

通过监控和即时回滚实现零停机时间部署

概览

本指南介绍如何在不使用负载均衡器的情况下为后端或队列处理工作负载实施金丝雀部署。通过使用 AWS CodePipeline,您可以编排一个工作流程,首先将金丝雀版本部署到低容量服务实例进行测试,然后将其传播到高容量服务实例以完成部署。此外,您还可以使用 AWS 监控功能和警报来自动启动回滚,从而在对应用程序部署新变更时更好地实施安全部署。

重要:本指南要求使用 AWS CodeCommit,新客户不再可用。AWS CodeCommit 的现有客户可以继续照常使用和部署本指南。

工作原理

此架构图显示了如何在没有负载均衡器的情况下为亚马逊弹性容器服务 (Amazon ECS) 中的后端或队列处理工作负载实施金丝雀部署。

Well-Architected 支柱

上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。

CodePipelineCodeBuild 可自动执行 CI/CD 流程,用于构建和部署新代码变更。本指南部署了 A mazon ECS AWS Fargate 的变更,这些完全托管的无服务器服务可帮助您减轻运营开销任务,例如升级、修补和扩展各种计算资源。

阅读卓越运营白皮书

本指南中的所有服务均使用 AWS 身份和访问管理 (IAM) 进行身份验证和授权。IAM 角色和策略可授予短期访问凭证,保护 AWS 资源,并管理访问权限。通过将 IAM 策略限定在所需的最低权限范围内,您可以限制对资源的未经授权访问。

阅读安全白皮书

本指南默认在多个可用区(AZ)部署 Amazon ECSFargate 任务、Amazon SQS 队列和 Lambda 函数,帮助您实现高可用性。此外,Amazon SQS 队列实现了应用程序组件之间的解耦,而 DLQ 则可以捕获任何处理故障,以便进行调查和重试。

阅读可靠性白皮书

CodePipelineCodeBuild 可在您需要将新代码变更推送到 CodeCommit 存储库时,实现 CI/CD 流程。亚马逊 ECS 使用应用程序自动扩展根据亚马逊 SQS 队列深度自动调整集群中运行的 Amazon EC S Fargate 任务的数量。

阅读性能效率白皮书

本指南使用的所有服务都是无服务器服务,因此您无需预置或管理服务器即可运行代码,而且只需为使用量付费。CodeBuild 提供按需计算能力,按代码构建持续时间计费,而 CodePipeline 则按每月管道数量计费。此外,CodeBuild 负责构建应用程序代码。应用程序自动扩缩会自动调整集群中运行的 Amazon ECSFargate 任务的数量,以满足需求,从而最大限度地降低总体计算成本。此外,您还可以选择 ARM64 CPU 架构、竞价型容量和计算类节省计划,以进一步降低计算成本。例如,如果工作负载可以容忍中断,则可以使用 Fargate Spot

阅读成本优化白皮书

本指南使用无服务器服务,您无需预置或管理服务器即可运行代码。这些服务可以根据您的工作负载进行扩展,从而避免过度预置资源,最终减少碳足迹。例如,应用程序自动扩缩可自动调整运行的 Amazon ECSFargate 任务数量,以满足需求,从而最大限度地减少计算量。您还可以在 ARM64 架构上运行 Fargate,以进一步降低功耗。

阅读可持续发展白皮书

实施资源

示例代码为起点。它经过行业验证,是规范性但不是决定性的,可以帮助您开始。
GitHub 上的开放示例代码

免责声明

示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。

找到今天要查找的内容了吗?

请提供您的意见,以便我们改进网页内容的质量。