在 Express Mode 之外更新资源 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Express Mode 之外更新资源

Express Mode 通过代表您自动预置和管理 Amazon 资源来简化部署,但了解责任模型很重要。虽然 Express Mode 会创建和配置诸如 Amazon ECS 服务、负载均衡器和自动扩缩策略之类的资源,但所有资源都保留在您的 Amazon 账户中,并且可以完全以进行直接管理。您可以使用 Amazon 控制台、Amazon CLI 或 API 在 Express Mode 之外修改这些资源,但这样做可能会影响 Express Mode 管理服务的能力。本节介绍 Express Mode 管理哪些资源、如何在 Express Mode 之外安全地进行更改以及操作时会发生什么情况。

了解责任共担模式

Express Mode 中的责任界限由 API 使用情况定义。Express Mode API 会代表您管理资源,并在多个 Amazon 服务之间进行协调更新。标准 Amazon 服务 API 使您能够直接控制各个资源。这允许您超越 Express Mode 为配置提供的参数集,并使您可以控制每个资源的每个参数。这两组 API 都在您的账户中的相同底层基础设施上运行,并且都将执行您请求的操作。Amazon 负责执行您请求的操作。Express Mode 不会验证使用直接 API 进行的资源修改是否与 Express Mode 配置冲突,也不会阻止可能中断服务功能的更改。这也意味着您有能力进行更改,并且这些更改将会保留下来。除非作为 Express Mode 更新的一部分提出请求,否则 Express Mode 不会覆盖更改。您有责任了解使用直接 API 进行的修改如何与 Express Mode 的配置交互,并负责解决由此产生的任何冲突或服务问题。

有关 Express Mode 设置的默认值及其编排的资源的更多详细信息,请参阅由 Amazon ECS Express Mode 服务创建的资源

在我的 Express Mode 服务中使用 Amazon ECS 功能之前,我需要做些什么吗?

不,Express Mode 没有毕业路径或紧急机制。您的 Express Mode 服务始终可以使用整个 Amazon ECS 功能集。如果您想确保您的服务无法进行进一步 Express Mode 更新,有几种方法可以选择。移除资源上的托管标签后,Amazon ECS 无法再将其识别为 Express Mode 服务并对其进行操作。或者,您也可以使用 IAM 限制用户对 Express Mode API 的权限。

Express Mode 之外的更新示例

向 Express Mode 服务添加 sidecar

您可以向您的服务添加任何 sidecar 容器。此示例展示了如何添加 Fluent Bit 日志记录 sidecar。

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择集群

  3. 选择 Express Mode 服务所在的集群,然后在服务面板中选择它。

  4. 转到资源选项卡并选择任务定义。

  5. 选择 JSON 选项卡,然后在顶部标有创建新修订的按钮中选择向下箭头。在这里,您将找到一个名为使用 JSON 创建新修订的操作。

  6. 在主容器定义之前或之后添加 sidecar 容器。有关更多信息,请参阅Amazon ECS 任务定义示例:将日志路由到 FireLens

  7. 如果您有类似于此示例的日志记录 sidecar,则需要更改主容器中的 logDriver

    "logConfiguration": { "logDriver": "awsfirelens" }
  8. 假设使用 Express Mode 服务的默认设置,将主容器 memoryReservation 设置为 1998,将 Fluent Bit 容器 memoryReservation 设置为 50。这样可以确保两个容器的总内存预留量不会超过您在 Fargate 任务上运行的内存量(默认 Express Mode 服务为 2048)。

  9. 创建您的新修订。

  10. 单击部署下拉列表并选择更新服务

  11. 选择要更新的集群服务,然后选择强制实施新部署。应自动选择您刚刚创建的任务定义修订。选择更新

  12. 观察您的部署情况。此服务中的任务现在将有两个容器。通过 Express Mode 控制台或 API 进行的其他更新不会覆盖对任务定义的更改,除非它们直接冲突,例如,在这种情况下,如果您为 Express Mode 提供了一个新的日志组和日志流名称,则 logDriver 将更新回 awslogs

向服务添加自定义域

先决条件:本指南假设您的域是由 Route 53 管理且具有 ACM 证书的托管区。如果您的域托管在其他位置,则需要使用 CNAME 来指向应用程序负载均衡器 DNS 记录。

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择集群

  3. 选择 Express Mode 服务所在的集群,然后在服务面板中选择它。

  4. 转到资源选项卡并选择侦听器规则。

  5. 选择操作编辑规则

  6. 复制当前主机标头值(您的应用程序 URL),然后移除规则,因为每种类型只能有一个。

  7. 添加主机标头类型的条件,将您的应用程序 URL 作为主机标头条件值粘贴回去。

  8. 单击添加 OR 条件值

  9. 在此处输入您的自定义域。

  10. 单击下一步保存更改

  11. 现在选择应用程序负载均衡器侦听器的证书选项卡。

  12. 单击添加证书。在这里,您可以将证书导入侦听器。

  13. 在您的 Route 53 托管区中,单击创建记录为您的服务创建路由记录。

  14. 选择一个简单路由记录。

  15. 添加记录名称。

  16. 选择一种记录类型。

  17. 将流量路由到应用程序和经典负载均衡器的别名

  18. 选择您的区域。

  19. 选择您的 Express Mode 服务使用的负载均衡器。

传播几分钟后,您的服务将开始在自定义域上接收流量。如果要向应用程序负载均衡器添加许多证书,或者从应用程序负载均衡器为许多 Express Mode 服务提供服务,您可能需要考虑提高应用程序负载均衡上证书的服务限制。