AWS Fargate 常见问题

一般性问题

AWS Fargate 是一种适用于容器的无服务器计算引擎,可与 Amazon Elastic Container Service(ECS)和 Amazon Elastic Kubernetes Service(EKS)配合使用。通过 AWS Fargate 可以轻松专注于构建应用程序。使用 Fargate,您无需预置和管理服务器,而且可以为每个应用程序指定资源并为其付费,并通过设计隔离应用程序来提高安全性。

AWS Fargate 是一种无服务器、随用随付的计算引擎,可让您专注于构建应用程序,而无需管理服务器。AWS Fargate 与 Amazon ECS 和 Amazon EKS 兼容。AWS Fargate 通过将底层基础设施资源的管理工作尽可能多地转移到 AWS,使开发团队可以专注于编写解决业务问题的代码,从而轻松扩展和管理云应用程序。将服务器管理、资源分配和扩展等任务转移到 AWS 不仅可以改善您的运营状况,还可以加快云端从构思到生产的过程,并降低总拥有成本(TCO)。由于该服务支持多种 CPU 架构和操作系统,因此您可以在各种应用程序中享受到无服务器在成本、敏捷性和可扩展性方面的好处。

Amazon ECS 是一项高度可扩展、高性能的容器管理服务,Amazon EKS 则是一项完全托管的 Kubernetes 服务。这两项服务都可以将容器调度到 AWS Fargate 上,以实现自动扩展、负载均衡,并通过托管调度来优化容器可用性,从而提供一种更简单的方式来构建和运行容器化应用程序。

使用 AWS Fargate 时,每个工作负载均在自己单独使用的单租户计算实例上运行。每个工作负载都通过虚拟化边界隔离,每个 Amazon ECS 任务或 Kubernetes 容器组(pod)都在新配置的实例上运行。 有关 AWS Fargate 架构的更多详细信息,请参阅 AWS Fargate 安全白皮书

选择 AWS Fargate 用于其隔离模型和安全性用途。如果您想启动容器而不预置或管理 Amazon Elastic Compute Cloud(EC2)实例,也应选择 Fargate。AWS Fargate 内置了与 AWS 服务和第三方工具的集成,允许您监控应用程序并收集指标和日志。而且,使用 AWS Fargate,您只需为使用的计算资源付费,无需预付费用。如果您需要加强对 Amazon EC2 实例的控制或支持更广泛的定制选项,那么请使用 Amazon ECS 或 Amazon EKS,不要使用 AWS Fargate。将 Amazon EC2 用于 GPU 工作负载,目前 AWS Fargate 对此不提供支持。

可以。使用 Amazon ECS 时,AWS Fargate 允许您使用 Amazon Elastic Container Registry(Amazon ECR)中与 Arm 兼容的容器映像或多架构容器镜像来运行基于 Arm 的应用程序。您只需在 Amazon ECS 任务定义中将 CPU 架构指定为 Arm64,以基于 Arm 的 AWS Graviton 处理器提供支持的 AWS Fargate 为目标。 使用 Amazon EC2 在 Amazon EKS 上运行 Arm 工作负载,AWS Fargate 目前不支持这些工作负载。

可以。AWS Fargate 提供了一种用于运行 Windows 容器的无服务器方法。它消除了预置和管理服务器的需要,并让您能为每个应用程序指定资源并为其付费。AWS Fargate 提供任务级隔离,并处理必要的修补和更新,以帮助提供安全的计算环境。有关受支持的 Windows 服务器版本,请参阅 Windows 平台版本文档页面。

由于 AWS Fargate 是无服务器计算引擎,客户无需管理 AWS Fargate 中运行的基础计算实例。因此,AWS Fargate 将为您管理 Windows 操作系统许可证,这样做的成本已包含在 AWS Fargate 定价中。 

AWS Fargate 中的服务限额基于给定账户在给定区域使用的 vCPU 内核数量。新 AWS 账户的初始配额可能较低,并且会随着时间的推移而增加,因此可以通过标准的 AWS 服务配额增加流程请求提高这些软限制。对于需要大量扩展(10000 个内核)的工作负载,AWS 建议采用多账户策略。

我们的计算 SLA 保证 AWS Fargate 的月度正常运行时间百分比至少为 99.99%。AWS 针对所含容器服务做出了两项 SLA 承诺:(1) 多可用区所含容器服务 SLA,用于管理跨多个可用区部署的所含容器服务;(2) 单独管理所含容器服务任务和容器组的单一任务/容器组(pod)SLA,分别管理所含容器服务任务和容器组(pod)。请参阅 AWS Fargate 和 Amazon Elastic Container Service SLA 页面。

如果您运行任务的可用区不止一个,且在任意月度计费周期内,相同区域内的月度正常运行时间百分比低于 99.99%,那么根据计算 SLA 的规定,您有资格获得 AWS Fargate 的 SLA 抵扣金。如需 SLA 的所有条款与条件的完整详细信息,以及如何提交索赔的详细信息,请参阅计算 SLA 详细信息页面

使用 AWS Fargate

  • Seekable OCI(SOCI)有助于缩短 AWS Fargate 上的 Amazon ECS 任务的启动时间。SOCI 是 AWS 提供的一项开源技术,该技术通过延迟加载容器映像使容器启动速度提升。要了解如何开始使用 SOCI,请访问文档博客文章
  • 使用 zstd 压缩容器映像缩短 AWS Fargate 的启动时间。为了提高效率,容器映像的层会被压缩,默认情况下使用 gzip 格式。但是,containerd 支持一种名为“zstd”的替代格式,该格式已被证明可以更快地解压缩,从而在使用 AWS Fargate 时缩短任务启动时间。 有关如何使用 zstd 构建容器映像的更多详细信息,请参阅此博文

建议在本地或开发环境中加载测试应用程序,以了解应用程序对适当调整请求大小的要求。 AWS Compute Optimizer 可用于在工作负载过小或过大时提供建议。

在 AWS Fargate 上,每个 ECS 任务或 Kubernetes 容器组(pod)都会获得一个附加到您的虚拟私有云(VPC)专用弹性网络接口(ENI)。所有进出容器化工作负载的流量都经过此 ENI。因此,VPC 安全组VPC 网络 ACL 可用于保护 ENI,VPC 流日志则可用于监控流量。

在 AWS Fargate 上运行的每个工作负载都可以完全访问 20GiB 临时存储,以在工作负载运行时用作临时存储。工作负载停止后,存储在此 20GiB 卷中的所有数据都将被删除。此临时存储卷在 Amazon ECS 上最多可扩展到 200GiB,在 Amazon EKS 上最多可扩展到 175GiB。 Amazon Elastic File System(EFS)可用于为 AWS Fargate 上运行的工作负载提供持久存储。

从容器内部构建容器的常见方法通常需要特权模式(例如在 Docker 中使用 Docker),这些模式在 AWS Fargate 的安全模型中不可用;或者需要将 docker 套接字挂载到容器中,由于 AWS Fargate 从平台版本 1.4开始使用 containerd,因此此方法也不可用。或者,可以在 AWS Fargate 的安全模型中部署 Kaniko 等无根映像构建项目,这是构建容器映像的可行选择。

安全性与合规性

AWS Fargate 符合各种合规计划的标准,包括 PCI DSS、SOC、FIPS 140-2、FedRAMP 和 HIPAA。有关更多信息以及计划的完整列表,请参阅 AWS Cloud 范围内安全服务文档。 

可以。AWS Fargate 符合 HIPAA 要求。如果您已与 AWS 签署了商业伙伴增订合约(BAA),则可以使用部署在 AWS Fargate 上的容器处理加密的受保护健康信息(PHI)。有关更多信息,请访问我们的 HIPAA 合规性页面。 如果您打算处理、存储或传输 PHI 且尚未与 AWS 签署 BAA,请联系我们获取更多信息。 

可以。AWS Fargate 现已在 AWS GovCloud(美国)区域推出。 AWS GovCloud(美国)是 Amazon 的独立云基础设施和服务,专为满足美国政府机构、承包商、教育机构以及在云中运行敏感工作负载的其他美国客户的特殊监管与合规要求而设计。有关推出 AWS Fargate 的 AWS 区域的完整列表,请访问我们的区域表文档。 

集成

AWS Fargate 提供灵活的集成模式,包括第一方 AWS 服务和第三方 Amazon 合作伙伴网络(APN)解决方案。常见的集成机制是在 AWS Fargate 任务中运行一个可以与主应用程序容器交互的 sidecar 容器,例如与主应用程序交互的运行时系统安全代理或日志路由器,然后将数据发送到集中式系统进行分析和审查。

AWS 提供了多种工具来监控和响应 AWS Fargate 资源的各个方面,包括 Amazon CloudWatch 警报、Amazon CloudWatch Logs、Amazon CloudWatch Events、AWS CloudTrail Logs、AWS Trusted AdvisorAWS Compute Optimizer。一种常用方法是利用 CloudWatch Container Insights 来收集和分析日志,并查看操作控制面板。应用程序日志记录具有适用于 CloudWatch 和 Splunk 的内置日志驱动程序,但是,可以通过任务定义参数使用 FireLens for Amazon ECS 将日志路由到 AWS 服务或 AWS 合作伙伴网络(APN)目标位置。

定价和成本优化

使用 AWS Fargate,您只需为容器化应用程序预配置的 vCPU、内存和存储资源量付费。vCPU 和内存资源是从提取容器映像时开始计算,到 Amazon ECS 任务或 EKS 容器组(Pod)终止时停止计算,向上舍入到最接近的秒数。最低收费标准为 1 分钟。默认情况下,为所有的 AWS Fargate 任务和容器组(Pod)提供 20GB 的临时存储,您只需为配置的任何额外存储付费。 就像使用 Amazon EC2 实例一样,AWS Fargate 支持 Spot 和 Compute Savings Plan 定价选项。有关更多详情,请参阅定价页面

  • AWS 为 AWS Fargate 任务提供竞价型实例,此类实例利用备用计算容量,且价格低于按需型实例。通过使用竞价型实例,您可以运行容忍中断的 Amazon ECS 任务,最高可享受 AWS Fargate 价格 70% 的折扣。 
  • AWS 推出了 AWS Fargate 节省计划,这是一种折扣模式,可为您提供与预留实例相同的折扣,作为交换,您需要承诺在一年或三年内使用特定金额(以每小时美元计)的计算功能。 
  • AWS Graviton 处理器由 AWS 设计,旨在为在 Amazon EC2、AWS 托管容器和其他托管服务中运行的云端工作负载提供最佳性价比。与基于 x86 的同类实例相比,AWS Graviton 实现了高达 40% 的性价比提升。AWS Graviton 处理器更加节能,与同类 EC2 实例相比,在实现相同性能的情况下,能耗最多可减少 60%。 
  • AWS Fargate 包含在 AWS Compute Optimizer 中,使您可以轻松识别和修复低效配置。

AWS Graviton 处理器由 Amazon Web Services 内核定制而成,可为您的云端工作负载提供最佳性价比。与基于 Intel x86 的同类 Fargate 相比,由 AWS Graviton 处理器提供支持的 AWS Fargate 在各种工作负载(应用程序服务器、Web 服务、高性能计算和媒体处理等)可以低 20% 的成本带来高达 40% 性价比提升。您可以获得与 AWS Fargate 相同的无服务器优势,同时优化运行容器化工作负载的性能和成本。