0

我使用 Spring Cloud 开发了一个使用多个微服务的后端服务器。我有发现服务、配置服务和其他不同的服务。现在出于测试目的,我使用 docker-compose 以正确的顺序运行它们。现在我决定在 AWS 上部署我的应用程序。

我想过使用使用 Fargare 的 ECS 运行它们,但我无法理解如何定义我的任务之间的依赖关系。

我发现这篇文章https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_dependson 它定义了同一任务中容器之间的依赖关系。

但是我不认为我可以只用一项任务来运行我的所有服务,因为分配 vCPU 会很复杂,即使我使用 4vCPU 和巨大的内存,我也不确定我的容器运行得有多好。之后缩放它们将是另一个问题。总体而言,拥有如此巨大的 vCPU 和内存也会产生大量成本。

有没有办法定义 ECS 任务之间的依赖关系?

4

1 回答 1

0

CloudFormation支持DepeendsOn属性,该属性允许您控制部署顺序(您基本上在需要时为有序部署权衡并行速度)。

假设您的任务是作为 ECS 服务的一部分启动的,您可以将其设置DependsOn为需要首先启动的服务。

例如

Resources:
  WebService:
    DependsOn:
    - AppService
    Properties:
  ....
  ....

出于好奇,您是如何从 Compose 迁移到 CloudFormation 的?仅供参考,我们一直在与 Docker 合作,将功能添加到 Docker 工具集中以直接部署到 ECS(基本上将 docker compose 文件转换为 CloudFormation IaC)。有关更多背景信息,请参见此处。顺便说一句,这种机制尊重 compose 依赖链。也就是说,如果您在 compose 中设置一个服务依赖于另一个服务,则生成的 CFN 模板将使用DependsOn我上面描述的属性。

于 2021-10-10T19:17:52.173 回答