

AWS App Runner 不再向新客户开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [AWS App Runner 可用性变更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

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

# 将新的应用程序版本部署到 App Runner
<a name="manage-deploy"></a>

在中[创建服务](manage-create.md)时 AWS App Runner，需要配置应用程序源，即容器映像或源存储库。App Runner 会配置资源来运行您的服务，并将您的应用程序部署到这些资源中。

本主题介绍在新版本可用时将应用程序源重新部署到 App Runner 服务的方法。这可以是镜像仓库中的新镜像版本，也可以是代码仓库中的新提交。App Runner 提供了两种部署到服务的方法：*自动*和*手动*。

## 部署方法
<a name="manage-deploy.methods"></a>

App Runner 提供了以下方法来控制应用程序部署的启动方式。

**自动部署**  
如果您想让服务实现持续集成和部署 (CI/CD) 行为，请使用自动部署。App Runner 会监控您的图像或代码存储库中是否有更改。  
**图像存储库** — 每当您将新的图像版本推送到图像存储库或向代码存储库推送新的提交时，App Runner 都会自动将其部署到您的服务，而无需您采取进一步的行动。  
**代码存储库** — 每当您将新的提交推送到代码存储库并在[源目录](service-source-code.md#service-source-code.source-directory)中进行更改时，App Runner 都会部署您的整个存储库。由于*只有源目录中的更改才*会触发自动部署，因此了解源目录位置如何影响自动部署的范围非常重要。  
+ *顶级目录（存储库根目录）*-这是创建服务时为源目录设置的默认值。如果您的源目录设置为该值，则意味着整个存储库都在源目录中。因此，在这种情况下，您推送到源存储库*的所有提交都*将触发部署。
+ *任何不是存储库根目录的目录路径（非默认）*-由于*只有在源目录中推送的更改才*会触发自动部署，因此任何推送到存储库*但不*在源目录中的更改都不会触发自动部署。因此，必须使用手动部署来部署推送到源目录之外的更改。
App Runner 不支持自动部署 Amazon ECR 公共镜像，也不支持自动部署 Amazon ECR 存储库中与您的服务所在 AWS 账户不同的账户。

**手动部署**  
如果要明确启动对服务的每次部署，请使用手动部署。如果您为服务配置的存储库有要部署的新版本，则可以启动部署。有关更多信息，请参阅 [手动部署](#manage-deploy.manual)。  
当您运行手动部署时，App Runner 会部署来自完整存储库的源代码。

您可以通过以下方式为服务配置部署方法：
+ *控制台*-对于您正在创建的新服务或现有服务，在**源和部署配置页面的部署****设置**部分，选择**手动**或**自动**。  
![App Runner 部署方法配置](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/manage-deploy.methods.config.png)
+ *API 或 AWS CLI* — 在调用[CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html)或[UpdateService](https://docs.aws.amazon.com/apprunner/latest/api/API_UpdateService.html)操作时，将[SourceConfiguration](https://docs.aws.amazon.com/apprunner/latest/api/API_SourceConfiguration.html)参数的`AutoDeploymentsEnabled`成员设置为，`False`用于手动部署或`True`自动部署。

**比较自动部署和手动部署**  
自动部署和手动部署的结果都是一样的：这两种方法都部署了完整的存储库。  
这两种方法的区别在于触发机制：  
手动部署是由从控制台进行部署、调用或调用 App Runner API 来触发的。 AWS CLI接下来的[手动部署](#manage-deploy.manual)章节提供了这些操作的程序。
[源目录](service-source-code.md#service-source-code.source-directory)内容的更改会触发自动部署。

## 手动部署
<a name="manage-deploy.manual"></a>

使用手动部署，您需要明确启动对服务的每次部署。当您准备好部署应用程序映像或代码的新版本时，可以参考以下章节，了解如何使用控制台和 API 执行部署。

**注意**  
当您运行手动部署时，App Runner 会部署来自完整存储库的源代码。

使用以下方法之一部署应用程序版本：

------
#### [ App Runner console ]

**使用 App Runner 控制台进行部署**

1. 打开 [App Runner 控制台](https://console.aws.amazon.com/apprunner)，然后在 “**区域**” 列表中，选择您的 AWS 区域。

1. 在导航窗格中，选择**服务**，然后选择您的 App Runner 服务。

   控制台显示带有服务**概述的服务**仪表板。  
![显示活动列表的 App Runner 服务仪表板页面](http://docs.aws.amazon.com/zh_cn/apprunner/latest/dg/images/console-dashboard.png)

1. 选择**部署**。

   结果：开始部署新版本。在服务控制面板页面上，服务**状态**更改为**操作进行中**。

1. 等待部署结束。在服务仪表板页面上，服务**状态**应更改回**正在运行**。

1. 要验证部署是否成功，请在服务控制面板页面上选择**默认域**值，即指向服务网站的网址。检查您的 Web 应用程序或与之交互，并验证您的版本更改。
**注意**  
[为了增强 App Runner 应用程序的安全性，*\*.awsapprunner.com* 域已在公共后缀列表 (PSL) 中注册。](https://publicsuffix.org/)为了进一步提高安全性，如果您需要在 App Runner 应用程序的默认域名中设置敏感 Cookie，我们建议您使用带`__Host-`前缀的 Cookie。这将有助于保护您的域，防范跨站点请求伪造 (CSRF) 攻击。要了解更多信息，请参阅 Mozilla 开发者网络中的 [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 页面。

------
#### [ App Runner API or AWS CLI ]

要使用 App Runner API 或进行部署 AWS CLI，请调用 [StartDeployment](https://docs.aws.amazon.com/apprunner/latest/api/API_StartDeployment.html)API 操作。唯一要传递的参数是您的服务 ARN。您在创建服务时已经配置了应用程序源位置，App Runner 可以找到新版本。如果调用返回成功响应，则部署即开始。

------