

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

# 拉取请求的 Web 预览
<a name="pr-previews"></a>

Web 预览为开发和质量保证 (QA) 团队提供了一种在将代码合并到生产或集成分支之前预览拉取请求 (PRs) 中更改的方法。拉取请求可以让您将已推送到存储库中某个分支的更改告诉给其他人。打开拉取请求后，您可以与合作者讨论和查看潜在的更改，并在更改合并到基础分支之前添加后续提交。

Web 预览会将向存储库发出的每个拉取请求部署到一个唯一的预览网址，该网址与您的主网站使用的网址完全不同。对于使用 Amplify CLI 或 Amplify Studio 配置了后端环境的应用程序，每个拉取请求（**仅限私有 Git 存储库**）都会创建一个临时后端，该后端在 PR 关闭时会被删除。

当您的应用开启 Web 预览时，每个 PR 都会计入每个应用程序 50 个分支的 Amplify 配额。为避免超过此配额，请务必关闭您的 PRs。有关限额的更多信息，请参阅[Amplify 托管服务限额](quotas-chapter.md)。

**注意**  
当前，当 AWS CodeCommit 用作存储库提供者时，`AWS_PULL_REQUEST_ID`环境变量不可用。

**Web 预览安全性**

为确保安全，您可以在所有使用私有存储库的应用程序上启用 Web 预览，但不能在所有使用公有存储库的应用程序上启用 Web 预览。如果您的 Git 存储库是公开的，则只能为不需要 IAM 服务角色的应用程序设置预览。例如，带有后端的应用程序和部署到 `WEB_COMPUTE` 托管平台的应用程序需要一个 IAM 服务角色。因此，如果这些类型的应用程序存储库是公开的，则无法为其启用 Web 预览。Amplify 强制执行此限制是为了防止第三方提交使用您的应用程序的 IAM 角色权限运行的任意代码。

使用 SSR 计算角色为公有存储库中的应用程序启用 Web 预览后，您需要仔细管理有权访问该角色的分支。我们建议不要使用应用程序级别的角色，而应在分支级别附加计算角色。这可让您仅向需要访问特定资源的分支授予访问权限。有关更多信息，请参阅 [添加 SSR 计算角色以允许访问资源 AWS](amplify-SSR-compute-role.md)。

## 为拉取请求启用 Web 预览
<a name="enable-web-previews"></a>

对于存储在存储 GitHub 库中的应用程序，网络预览使用 Amplify GitHub 应用程序访问存储库。如果您要在之前使用存储库部署的现有 Amplify 应用程序上启用网页预览，则必须先将该应用程序迁移为 OAuth 使用 Amplify 应用程序。 GitHub GitHub 有关迁移说明，请参阅 [将现有OAuth应用程序迁移到 Amplif GitHub y 应用程序](setting-up-GitHub-access.md#migrating-to-github-app-auth)。

**为拉取请求启用 Web 预览**

1. 选择**托管**，然后选择**预览**。
**注意**  
只有将应用程序设置为持续部署并连接到 git 存储库时，**预览**才会显示在**应用程序设置**菜单中。有关此类部署的说明，请参阅[现有代码入门](getting-started.md)。

1. 仅限 GitHub 存储库，请执行以下操作在您的账户中安装和授权 Amplify GitHub 应用程序：

   1. 在 “**安装 GitHub 应用程序以启用预览**” 窗口中，选择 “**安装 GitHub 应用程序**”。

   1. 选择要在其中配置 Amplify 应用程序 GitHub的 GitHub 账户。

   1. GitHub.com 打开一个页面，用于为您的账户配置存储库权限。

   1. 请执行以下操作之一：
      + 要将安装应用于所有存储库，请选择**所有存储库**。
      + 要将安装限于您所选择的特定存储库，请选择**仅选择存储库**。确保在您选择的存储库中包含您要为其启用 Web 预览的应用程序的存储库。

   1. 选择**保存**

1. 为存储库启用预览后，返回 Amplify 控制台为特定分支启用预览。在**预览**页面上，从列表中选择一个分支，然后选择**编辑设置**。

1. 在**管理预览设置**页面中，启用**拉取请求预览**。然后，选择 **Confirm（确认）**。

1. 对于全栈应用程序，执行以下操作之一：
   + 选择**为每个拉取请求创建新的后端环境**。此选项使您能够在不影响生产的情况下测试更改。
   + 选择**将此分支的所有拉取请求指向现有环境**。

1. 选择**确认**。

下次您为分支提交拉取请求时，Amplify 会构建您的 PR 并将其部署到预览网址。拉取请求关闭后，将删除预览网址，并删除与拉取请求关联的所有临时后端环境。仅限 GitHub 仓库，您可以直接通过 GitHub 账户中的拉取请求访问网址的预览。

## 使用子域名进行 Web 预览访问
<a name="web-preview-access-on-subdomains"></a>

对于连接到 Amazon Route 53 管理的自定义域名的 Amplify 应用程序，可以使用子域名访问拉取请求的 Web 预览。拉取请求关闭后，与拉取请求关联的分支和子域名会被自动删除。在为应用程序设置基于模式的功能分支部署后，这是 Web 预览的默认行为。有关设置自动子域的说明，请参阅 [为 Amazon Route 53 自定义域设置自动子域](to-set-up-automatic-subdomains-for-a-Route-53-custom-domain.md)。