

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

# 将 GitHub （通过 OAuth 应用程序）源操作更新为 GitHub （通过 GitHub 应用程序）源操作
<a name="update-github-action-connections"></a>

在中 AWS CodePipeline，有两个支持的 GitHub 源操作版本：
+ **推荐：** GitHub （通过 GitHub 应用程序）操作使用资源支持的基于 Github 应用程序的身份验证。[CodeStarSourceConnection 适用于 Bitbucket Cloud GitHub、、 GitHub 企业服务器、 GitLab .com 和 GitLab 自我管理操作](action-reference-CodestarConnectionSource.md)它会在您的 GitHub 组织中安装 C AWS CodeStar onnections 应用程序，以便您可以管理中的访问权限 GitHub。
+ **不推荐：** GitHub （通过 OAuth 应用程序）操作使用 OAuth 令牌进行身份验证， GitHub 并使用单独的 webhook 来检测更改。这不再是建议方法。

**注意**  
亚太地区（香港）、亚太地区（海得拉巴）、亚太地区（雅加达）、亚太地区（墨尔本）、亚太地区（墨尔本）、亚太地区（大阪）、非洲（开普敦）、中东（巴林）、中东（阿联酋）、欧洲（西班牙）、欧洲（苏黎世）、以色列（特拉维夫） AWS GovCloud 或（美国西部）地区不可用。要参考其他可用操作，请参阅 [产品和服务与 CodePipeline](integrations.md)。有关在欧洲地区（米兰）区域使用此操作的注意事项，请参阅[CodeStarSourceConnection 适用于 Bitbucket Cloud GitHub、、 GitHub 企业服务器、 GitLab .com 和 GitLab 自我管理操作](action-reference-CodestarConnectionSource.md)中的说明。

使用 GitHub （通过 GitHub 应用程序）操作而不是（通过应用程序）操作有一些重要的优点： GitHub OAuth 
+ 有了连接，就 CodePipeline 不再需要 OAuth 应用程序或个人访问令牌来访问您的存储库。创建连接时，需要安装一个管理 GitHub 仓库身份验证并允许组织级别权限的 GitHub 应用程序。您必须以用户身份授权 OAuth 令牌才能访问存储库。有关 OAuth基于应用程序的访问与基于应用程序 GitHub 的 GitHub 访问对比的更多信息，请参阅[https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps](https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps)。
+ 当你在 CLI 或 GitHub （通过 GitHub 应用程序）中管理操作时 CloudFormation，你不必再将个人访问令牌作为密钥存储在 Secrets Manager 中。您不再需要在 CodePipeline 操作配置中动态引用存储的密钥。而是将连接 ARN 添加到操作配置中。有关示例操作配置，请参阅[CodeStarSourceConnection 适用于 Bitbucket Cloud GitHub、、 GitHub 企业服务器、 GitLab .com 和 GitLab 自我管理操作](action-reference-CodestarConnectionSource.md)。
+ 在中创建用于您的 GitHub （通过 GitHub 应用程序）操作的连接资源时 CodePipeline，您可以使用相同的连接资源将其他支持的服务（例如 CodeGuru Reviewer）与您的存储库关联。
+ 在 Github（通过 GitHub 应用程序）中，您可以克隆存储库以在后续 CodeBuild 操作中访问 git 元数据，而在 Github（通过 OAuth 应用程序）中，您只能下载源代码。
+ 管理员将为组织的存储库安装应用程序。您不再需要跟踪依赖于创建 OAuth 令牌的个人的代币。

安装到组织的所有应用程序都可以访问同一组存储库。要更改谁可访问每个存储库，请修改每个连接的 IAM 策略。有关示例，请参阅[示例：将连接用于指定存储库的范围缩小策略](https://docs.aws.amazon.com/dtconsole/latest/userguide/security_iam_id-based-policy-examples-connections.html#security_iam_id-based-policy-examples-connections-reposcope)。

您可以使用本主题中的步骤从 CodePipeline 控制台中删除您的 GitHub （通过 OAuth 应用程序）源操作并添加 GitHub （通过 GitHub 应用程序）源操作。

**Topics**
+ [第 1 步：替换您的（通过 OAuth 应用程序） GitHub 操作](#connections-pipelines-github-action)
+ [步骤 2：创建与的连接 GitHub](#connections-pipelines-github-create)
+ [第 3 步：保存 GitHub 源操作](#connections-pipelines-github-save)

## 第 1 步：替换您的（通过 OAuth 应用程序） GitHub 操作
<a name="connections-pipelines-github-action"></a>

使用管道编辑页面将您的（通过 OAuth 应用程序） GitHub 操作替换为 GitHub （通过 GitHub 应用程序）操作。

**替换您的（通过 OAuth 应用程序） GitHub 操作**

1. 登录 CodePipeline 控制台。

1. 选择管道，然后选择**编辑**。在源阶段中，选择**编辑阶段**。将显示一条消息，建议您更新操作。

1. 在**操作提供者**中，选择 **GitHub （通过 GitHub 应用程序）**。

1. 请执行以下操作之一：
   + 在 “**连接**” 下，如果您尚未创建与提供商的连接，请选择 “**连接到**” GitHub。继续步骤 2：创建与的连接 GitHub。
   + 在**连接**下，如果您已创建到提供程序的连接，请选择该连接。继续执行步骤 3：保存连接的源操作。

## 步骤 2：创建与的连接 GitHub
<a name="connections-pipelines-github-create"></a>

选择创建连接后，将显示 “**Connect** t GitHub o” 页面。

**要创建与的连接 GitHub**

1. 在 **“GitHub 连接设置”** 下，您的连接名称显示在 “**连接名称**” 中。

   在 “**GitHub 应用程序**” 下，选择应用程序安装或选择 “**安装新应用程序**” 来创建一个。
**注意**  
您可以为与特定提供程序的所有连接安装一个应用程序。如果您已经安装了该 GitHub 应用程序，请选择它并跳过此步骤。

1. 如果 GitHub 显示的授权页面，请使用您的凭据登录，然后选择继续。

1. 在应用程序安装页面上，一条消息显示该 AWS CodeStar 应用程序正在尝试连接到您的 GitHub 帐户。
**注意**  
您只需为每个 GitHub 账户安装一次该应用程序。如果您之前已安装了应用程序，则可以选择**配置**，继续进入应用程序安装的修改页面，也可以使用后退按钮返回到控制台。

1. 在**安装 AWS CodeStar** 页面上，选择**安装**。

1. 在 “**Connect t** o GitHub” 页面上，将显示新安装的连接 ID。选择**连接**。

## 第 3 步：保存 GitHub 源操作
<a name="connections-pipelines-github-save"></a>

在**编辑操作**页面上完成更新以保存新的源操作。

**保存您的 GitHub 源代码操作**

1. 在**存储库**中，输入第三方存储库的名称。在**分支**中，输入您希望管道在其中检测源更改的分支。
**注意**  
在**存储库**中键入 `owner-name/repository-name`，如以下示例所示：  

   ```
   my-account/my-repository
   ```

1. 在**输出构件格式**中，为构件选择格式。
   + 要使用默认方法存储 GitHub 操作的输出对象，请选择**CodePipeline 默认**。该操作访问存储库中的文件，并将工件 GitHub 存储在管道工件存储区的 ZIP 文件中。
   + 要存储包含存储库的 URL 引用的 JSON 文件，以便下游操作可以直接执行 Git 命令，请选择**完全克隆**。此选项只能由 CodeBuild 下游操作使用。

     如果选择此选项，则需要更新 CodeBuild 项目服务角色的权限，如所示[添加连接 Bitbucket、 GitHub、En GitHub terprise Server 或 GitLab .com 的 CodeBuild GitClone 权限](troubleshooting.md#codebuild-role-connections)。如需查看教程以了解如何使用**完整克隆**选项，请参阅[教程：使用带有 GitHub 管道源的完整克隆](tutorials-github-gitclone.md)。

1. 在**输出构件**中，可以保留此操作的输出对象的名称，例如 `SourceArtifact`。选择**完成**以关闭**编辑操作**页面。

1. 选择**完成**以关闭阶段编辑页面。选择**保存**以关闭管道编辑页面。