

AWS App Runner 从 2026 年 4 月 30 日起，将不再向新客户开放。如果您想使用 App Runner，请在该日期之前注册。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [AWS App Runner 可用性变更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为 App Runner 开发应用程序代码
<a name="develop"></a>

本章讨论在开发或迁移要部署到的应用程序代码时应考虑的运行时信息和开发指南 AWS App Runner。

## 运行时信息
<a name="develop.considerations"></a>

无论您是提供容器镜像还是 App Runner 为您构建容器镜像，App Runner 都会在容器实例中运行您的应用程序代码。以下是容器实例运行时环境的几个关键方面。
+ **框架支持** — App Runner 支持任何实现 Web 应用程序的图像。它与您选择的编程语言以及您使用的 Web 应用程序服务器或框架（如果有的话）无关。为方便起见，我们为各种编程平台提供特定于平台的托管运行时，以简化应用程序构建过程和抽象图像创建。
+ **网络请求** — App Runner 为容器实例提供对 HTTP 1.0 和 HTTP 1.1 的支持。有关配置服务的更多信息，请参阅[配置 App Runner 服务](manage-configure.md)。您无需实现对 HTTPS 安全流量的处理。App Runner 会将所有传入的 HTTP 请求重定向到相应的 HTTPS 您无需配置任何设置即可重定向 HTTP Web 请求。App Runner 会在向您的应用程序容器实例传递请求之前终止 TLS。
**注意**  
HTTP 请求总共有 120 秒的请求超时限制。120 秒包括应用程序读取请求（包括正文）和完成 HTTP 响应的写入所花费的时间。
请求读取和响应超时限制取决于您使用的应用程序。这些应用程序可能有自己的内部超时，例如 Python 的 HTTP 服务器 Gunicorn 有 30 秒的默认超时限制。在这种情况下，应用程序的超时限制会覆盖 App Runner 的 120 秒超时限制。
您无需配置 TLS 密码套件或任何其他参数，因为 App Runner 是一项完全托管的服务，可以为您管理 TLS 终止。
+ **无状态应用程序**-当前 App Runner 不支持有状态的应用程序。因此，App Runner 不保证状态持续时间超过处理单个传入 Web 请求的持续时间。
+ **存储** — App Runner 会根据传入的流量自动向上或向下扩展 App Runner 应用程序的实例。您可以为 [App Runner 应用程序配置自动缩放选项](manage-autoscaling.md)。由于处理 Web 请求的当前活动实例数量取决于传入的流量，因此 App Runner 无法保证这些文件在处理单个请求后仍能持续存在。因此，App Runner 将容器实例中的文件系统实现为临时存储，这意味着文件是瞬态的。例如，当您暂停和恢复 App Runner 服务时，文件不会保留。

  App Runner 为您提供 3 GB 的临时存储空间，并将 3 GB 临时存储空间的一部分用于实例上的拉取、压缩和未压缩容器映像。剩余的临时存储空间可供您的 App Runner 服务使用。但是，由于其无国籍性质，这*不是永久存储*。
**注意**  
在某些情况下，存储文件确实会跨请求保留。例如，如果下一个请求落在同一个实例上，则存储文件将保留。在某些情况下，跨请求存储文件的持久性可能很有用。例如，在处理请求时，您可以缓存应用程序下载的文件（如果将来的请求可能需要这些文件）。这可能会加快 future 请求的处理速度，但不能保证速度的提高。您的代码不应假设在之前的请求中下载的文件仍然存在。  
要使用高吞吐量、低延迟的内存数据存储保证缓存，请使用诸如 [Amazon ElastiCache](https://aws.amazon.com/elasticache/) 之类的服务。
+ **环境变量**-默认情况下，App Runner 使`PORT`环境变量在您的容器实例中可用。您可以使用端口信息配置变量值，也可以添加自定义环境变量和值。您也可以将存储在*AWS Secrets Manager*或*AWS Systems Manager 参数存储*中的敏感数据引用为环境变量。有关创建环境变量的更多信息，请参阅[引用环境变量](env-variable.md)。
+ **实例角色**-如果您的应用程序代码使用 AWS 服务 APIs 或其中一项调用任何服务 AWS SDKs，请使用 AWS Identity and Access Management (IAM) 创建实例角色。然后，在创建 App Runner 服务时将其附加到该服务。在您的实例角色中包含您的代码所需的所有 AWS 服务操作权限。有关更多信息，请参阅 [实例角色](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service.instance)。

## 代码开发指南
<a name="develop.tips"></a>

在为 App Runner Web 应用程序开发代码时，请考虑这些准则。
+ **修补容器镜像**-在提供容器镜像时，你有责任定期更新和修补这些镜像。在 App Runner 管理基础设施的同时，您应确保所提供的容器镜像的安全性和 up-to-date状态。有关更多信息，请参阅 [AWS 应用程序运行器文档](security-shared-responsibility.md#security-shared-responsibility.patch-images)
+ **设计无状态代码**-将部署到 App Runner 服务的 Web 应用程序设计为无状态。您的代码应假设任何状态都不会持续超过处理单个传入的 Web 请求的持续时间。
+ **删除临时文件**-创建文件时，它们存储在文件系统中，占用服务的部分存储分配。为避免 out-of-storage错误，请勿长时间保留临时文件。做出文件缓存决策时，请平衡存储大小和请求处理速度。
+ **实例启动** — App Runner 提供五分钟的实例启动时间。您的实例必须在其配置的侦听端口上侦听请求，并在启动后的五分钟内恢复正常。在启动期间，将根据您的 vCPU 配置为 App Runner 实例分配虚拟 CPU (vCPU)。有关可用 vCPU 配置的更多信息，请参阅。[App Runner 支持的配置](architecture.md#architecture.vcpu-memory)

  实例成功启动后，它将进入空闲状态并等待请求。您根据实例启动持续时间付费，每次启动实例的最低费用为一分钟。有关定价的信息，请参阅 [AWS App Runner 定价](https://aws.amazon.com/apprunner/pricing)。