本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS Fargate WaitCondition 挂钩结构协调资源依赖关系和任务执行
由 Stan Fan 创作 (AWS)
摘要
此模式描述了 WaitCondition hook (waitcondition-hook-for-aws-fargate-task
) npm 包,这是一种云原生解决方案,专为在亚马逊弹性容器服务 (Amazon) 集群AWS Fargate中编排任务而设计。ECS
WaitCondition 钩子是专门为与集成而量身定制的 AWS Cloud Development Kit (AWS CDK) 结构 AWS CloudFormation。该 WaitCondition 挂钩提供以下关键功能:
充当等待条件机制,暂停 CloudFormation 堆栈执行直到指定的 Fargate 任务完成,这有助于有序部署和资源配置。
支持 TypeScript 和 Python,使其成为 AWS CDK 项目的理想之选。
允许开发人员和架构师通过协调容器化应用程序的任务完成和资源管理来协调部署。 AWS
允许在 CloudFormation 生命周期中嵌入一个或多个容器的情况下运行 Fargate 任务。并且可以处理任务失败并在任务失败后回滚 CloudFormation 堆栈。
允许灵活地在资源和 Fargate 任务执行结果之间添加依赖关系,从而启用自定义任务或调用其他端点。例如,您可以暂停 CloudFormation 堆栈并等待数据库迁移(由 Fargate 任务完成),然后配置其他可能取决于数据库迁移成功与否的资源。
先决条件和限制
先决条件
活跃 AWS 账户的.
AWS Cloud Development Kit (AWS CDK) 命令行界面 (CLI) 安装在本地工作站上。有关更多信息,请参阅 AWS CDK 文档中的AWS CDK CLI参考资料。
节点包管理器 (npm),安装在本地工作站上并配置为AWS CDK 中。 TypeScript有关更多信息,请参阅 npm 文档中的下载和安装 Node.js 和 npm
。 Yarn 安装在本地工作站上。有关更多信息,请参阅 Yarn 文档中的安装
。
限制
此解决方案已部署到单个 AWS 账户。
容器的预期返回码是成功
0
的。任何其他返回代码都表示失败, CloudFormation 堆栈将回滚。有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅AWS 服务 按地区划分
。有关特定终端节点,请参阅服务终端节点和配额,然后选择服务的链接。
架构
下图显示了构造架构。
该图显示了以下工作流程waitcondition-hook-for-aws-fargate-task
:
WaitCondition
并WaitConditionHandler
被设置为监听 AWS Lambda 函数的响应。根据任务的结果,要么由 Fargate 任务的完成触发。
CallbackFunction
ErrorHandlerFunction
Lambda 函数向发送SUCCEED或FAILURE信号。
WaitConditionHandler
WaitConditionHandler
如果 Fargate 任务的执行结果成功,则继续配置资源;如果任务失败,则回滚堆栈。
下图显示了执行数据库迁移的工作流程示例。
示例工作流使用该waitcondition-hook-for-aws-fargate-task
结构执行数据库迁移,如下所示:
已配置亚马逊关系数据库服务 (AmazonRDS) 实例。
该
waitcondition-hook-for-aws-fargate-task
构造运行数据库迁移任务,并将堆栈作为亚马逊弹性计算云 (AmazonEC2) 实例暂停。如果迁移任务成功完成,则会向发送成功信号 CloudFormation。否则,它会向堆栈发送 Fail 信号,然后回滚堆栈。 CloudFormation
工具
AWS 服务
AWS Cloud Development Kit (AWS CDK)是一个软件开发框架,可帮助您在代码中定义云基础架构并通过它进行配置 AWS CloudFormation。
AWS CloudFormation帮助您设置 AWS 资源,快速一致地配置资源,并在和的整个 AWS 账户 生命周期中对其进行管理 AWS 区域。
Amazon CloudWatch 可帮助您实时监控您的 AWS 资源和运行的应用程序 AWS 的指标。
Amazon 弹性容器服务 (AmazonECS) 是一项快速且可扩展的容器管理服务,可帮助您在集群上运行、停止和管理容器。
AWS Fargate无需管理服务器或 Amazon EC2 实例,即可帮助您运行容器。它与 Amazon 配合使用ECS。
AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。
AWS Lambda 是一项计算服务,可帮助您运行代码,无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。
AWS Step Functions是一项无服务器编排服务,可帮助您组合 AWS Lambda 功能和其他功能 AWS 服务 来构建关键业务应用程序。
Amazon Virtual Private Cloud(亚马逊VPC)可帮助您将 AWS 资源启动到您定义的虚拟网络中。此虚拟网络类似于您在自己的数据中心中运行的传统网络,其优点是使用的可扩展基础架构。 AWS
其他工具
代码存储库
此模式的代码可在 GitHub waitcondition-hook-for-aws-fargate-
最佳实践
在构建 AWS CDK 应用程序时,请按照 AWS CDK v2 文档 AWS CDK中的开发和部署云基础架构的最佳实践进行操作。
对于此 AWS Fargate 任务,请遵循亚马逊ECS文档中的亚马逊ECS容器镜像最佳实践。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
创建CDK项目。 | 使用您喜欢的语言创建CDK项目。此模式使用 TypeScript. 要使用创建CDK项目 TypeScript,请运行以下命令:
| 云架构师 |
安装 软件包。 |
| 云架构师 |
构建您的CDK应用程序和 Amazon ECS 组件。 | 构建您的CDK项目。Amazon ECS 任务定义资源是必需的。有关创建任务定义的信息,请参阅亚马逊ECS文档中的亚马逊ECS任务定义。 以下示例使用此构造:
| 云架构师 |
合成并启动CDK应用程序。 |
该 | 云架构师 |
任务 | 描述 | 所需技能 |
---|---|---|
清理资源。 | 要清理上一步中配置的资源,请运行以下命令:
| 云架构师 |
故障排除
事务 | 解决方案 |
---|---|
一般 CloudFormation 堆栈故障 | 要帮助排除一般 CloudFormation 堆栈故障,请添加
此命令将暂停 CloudFormation 堆栈回滚,从而为您提供故障排除资源。有关更多信息,请参阅 AWS CloudFormation 文档中的选择配置资源时如何处理故障。 |
AWS Step Functions 失败 | AWS Step Functions 状态机可能由于不同的原因而无法执行。
有关更多信息,请参阅 AWS Step Functions 文档中的 Step F unctions 中的问题疑难解答和在 Step Functions 控制台中查看执行详情。 |
AWS Lambda 功能失败 | 此构造预置了两个 Lambda 函数:
有关更多信息,请参阅文档中的 Lambda 问题疑难解答。 AWS Lambda |
相关资源
AWS 文档
其他资源
AWS Fargate 任务的等待条件挂钩
(npm) waitcondition-hook-for-aws-fargate-task
1.0.6 (pypi.org)