

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# GitHub および GitHub Enterprise Server の GitHub アプリ接続
<a name="connections-github-app"></a>

GitHub アプリを使用して CodeBuild に接続できます。GitHub アプリ接続は [AWS CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html) を通じてサポートされています。

ソースプロバイダアクセスを使用すると、[CreateWebhook](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CreateWebhook.html) を使用して [GitHub ウェブフックイベント](github-webhook.md) をサブスクライブすることでビルドをトリガーしたり、CodeBuild で [チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定](action-runner.md) を使用したりできます。

**注記**  
CodeConnections は、使用できるリージョンが CodeBuild よりも限られています。CodeBuild では、クロスリージョン接続を使用できます。オプトインリージョンで作成された接続は、他のリージョンでは使用できません。詳細については、「[AWS CodeConnections エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/codestar_connections.html)」を参照してください。

**Topics**
+ [ステップ 1: GitHub アプリへの接続を作成 (コンソール)](#connections-github-console)
+ [ステップ 2: 接続を使用するために CodeBuild プロジェクト IAM ロールにアクセスを許可](#connections-github-role-access)
+ [ステップ 3: 新しい接続を使用するように CodeBuild を設定](#connections-github-account-credential)
+ [GitHub アプリのトラブルシューティング](#connections-github-troubleshooting)

## ステップ 1: GitHub アプリへの接続を作成 (コンソール)
<a name="connections-github-console"></a>

以下のステップを使用して、CodeBuild コンソールで GitHub 内のプロジェクト用に接続を追加します。

**GitHub への接続を作成するには**
+ 「*デベロッパーツールユーザーガイド*」にある「[Create a connection to GitHub](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)」の手順に従ってください。

**注記**  
アカウントで既存の接続を作成または使用する代わりに、別の AWS アカウントから共有された接続を使用できます。詳細については、[AWS 「アカウントとの接続の共有](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-share.html)」を参照してください。

## ステップ 2: 接続を使用するために CodeBuild プロジェクト IAM ロールにアクセスを許可
<a name="connections-github-role-access"></a>

CodeBuild プロジェクト IAM ロールに、接続によって提供された GitHub トークンを使用するためのアクセスを許可できます。

**CodeBuild プロジェクトの IAM ロールにアクセスを許可するには**

1. CodeBuild プロジェクトの [CodeBuild が他の AWS サービスとやり取りすることを許可する](setting-up-service-role.md) の手順に従って、CodeBuild プロジェクトの IAM ロールを作成します。

1. 手順に従って、次の IAM ポリシーを CodeBuild プロジェクトロールに追加して、接続へのアクセスを許可します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "codeconnections:GetConnectionToken",
                   "codeconnections:GetConnection"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/Service*"
               ]
           }
       ]
   }
   ```

------

## ステップ 3: 新しい接続を使用するように CodeBuild を設定
<a name="connections-github-account-credential"></a>

接続をアカウントレベルの認証情報として設定し、プロジェクトで使用できます。

------
#### [ AWS マネジメントコンソール ]

**でアカウントレベルの認証情報として接続を設定するには AWS マネジメントコンソール**

1. [**ソースプロバイダー**] で [**GitHub**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + **[デフォルトソース認証情報]** を選択し、アカウントのデフォルトソース認証情報を使用して、すべてのプロジェクトに適用します。

     1. GitHub に接続していない場合は、**[デフォルトソース認証情報を管理]** を選択します。

     1. **[認証情報タイプ]** では、**[GitHub アプリ]** を選択します。

     1. **[接続]** で、既存の接続を使用するか、新規の接続を作成することを選択します。
   + **[カスタムソース認証情報]** を選択し、カスタムソース認証情報を使用してアカウントのデフォルト設定を上書きします。

     1. **[認証情報タイプ]** では、**[GitHub アプリ]** を選択します。

     1. **[接続]** で、既存の接続を使用するか、新規の接続を作成することを選択します。

------
#### [ AWS CLI ]

**でアカウントレベルの認証情報として接続を設定するには AWS CLI**
+ ターミナル (Linux/macOS/Unix) またはコマンドプロンプト (Windows) を開きます。 AWS CLI を使用して **import-source-credentials** コマンドを実行し、`--token`接続に `--auth-type`、`--server-type`、 を指定します。

  以下のコマンドを使用します。

  ```
  aws codebuild import-source-credentials --auth-type CODECONNECTIONS --server-type GITHUB --token <connection-arn>
  ```

------

CodeBuild プロジェクトに複数のトークンを設定することもできます。詳細については、「[複数のトークンをソースレベルの認証情報として設定](multiple-access-tokens.md#asm-source-credential)」を参照してください。

## GitHub アプリに関する問題のトラブルシューティング
<a name="connections-github-troubleshooting"></a>

以下の情報は、GitHub アプリの一般的な問題のトラブルシューティングに役立ちます。

**Topics**
+ [AWS Connector for GitHub アプリを望ましくないリージョンにインストールする](#connections-github-troubleshooting.undesired-region)
+ [GitHub アプリ接続にリポジトリへのアクセス権限がありません。](#connections-github-troubleshooting.repo-access)
+ [AWS サービスの IAM ロールに必要な IAM アクセス許可がありません。](#connections-github-troubleshooting.iam-permissions)

### AWS Connector for GitHub アプリを望ましくないリージョンにインストールする
<a name="connections-github-troubleshooting.undesired-region"></a>

**問題:** GitHub Marketplace から AWS Connector for GitHub をインストールしましたが、接続が望ましくないリージョンで作成されました。GitHub ウェブサイトでアプリを再設定しようとしても、アプリが既に GitHub アカウントにインストールされているため、動作しません。

**考えられる原因:** アプリは GitHub アカウントに既にインストールされているため、アプリのアクセス許可のみを再設定できます。

**推奨される解決策:** インストール ID を使用して目的のリージョンに新しい接続を作成できます。

1. [https://console.aws.amazon.com/codesuite/settings/connections](https://console.aws.amazon.com/codesuite/settings/connections) で CodeConnections コンソールを開き、 AWS コンソールナビゲーションバーのリージョンセレクターを使用して目的のリージョンに移動します。

1. 「*デベロッパーツールユーザーガイド*」にある「[Create a connection to GitHub](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)」の手順に従ってください。
**注記**  
 AWS Connector for GitHub アプリはインストール済みであるため、新しいアプリをインストールする代わりに選択できます。

### GitHub アプリ接続にリポジトリへのアクセス権限がありません。
<a name="connections-github-troubleshooting.repo-access"></a>

**問題:** CodeBuild や CodePipeline などの接続を使用する AWS サービスは、リポジトリにアクセスできないか、リポジトリが存在しないことを報告します。考えられるエラーメッセージには、次のようなものがあります。
+ `Authentication required for primary source.`
+ `Unable to create webhook at this time. Please try again later.`
+ `Failed to create webhook. GitHub API limit reached. Please try again later.`

***考えられる原因:** GitHub アプリを使用していて、ウェブフックのアクセス許可スコープを付与していない可能性があります。*  
**推奨される解決策:** 必要なアクセス許可スコープを付与するには、「[Navigating to the GitHub App you want to review or modify](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#navigating-to-the-github-app-you-want-to-review-or-modify)」の指示に従って、インストールされたアプリを設定します。アクセス許可セクションには、アプリにウェブフックアクセス許可がないことが表示され、新しくリクエストされたアクセス許可を確認するオプションがあります。新しいアクセス許可を確認して承諾します。詳細については、「[Approving updated permissions for a GitHub App](https://docs.github.com/en/apps/using-github-apps/approving-updated-permissions-for-a-github-app)」を参照してください。

***考えられる原因:** 接続は想定どおりに機能していましたが、突然リポジトリにアクセスできなくなりました。*  
**考えられる解決策:** まず、「[authorizations](https://docs.github.com/en/apps/using-github-apps/reviewing-and-revoking-authorization-of-github-apps)」と「[installations](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps)」を確認してから、GitHub アプリが承認されてインストールされていることを確認します。GitHub アプリのインストールが一時停止されている場合は、一時停止を解除する必要があります。GitHub アプリが [UAT (ユーザーアクセストークン)](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user) 接続に対して承認されていない場合、または [IAT (インストールアクセストークン)](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation) 接続に対してインストールされていない場合、既存の接続は使用できなくなるため、新しい接続を作成する必要があります。GitHub アプリを再インストールしても、古いインストールに関連付けられた以前の接続は復元されないことに注意してください。  
**考えられる解決策:** 接続が UAT 接続の場合は、複数の CodeBuild ビルドの同時実行で使用されているなど、接続が同時に使用されていないことを確認してください。これは、有効期限が切れるトークンが接続によって更新された場合、GitHub が以前に発行された UAT を直ちに無効にするためです。CodeBuild の複数の同時ビルドに UAT 接続を使用する必要がある場合は、複数の接続を作成し、各接続を個別に使用できます。  
**考えられる解決策:** UAT 接続が過去 6 か月間使用されていない場合、接続は GitHub によって無効になります。これを修正するには、新しい接続を作成します。

***考えられる原因:** アプリをインストールせずに UAT 接続を使用していた可能性があります。*  
**推奨される解決策:** UAT 接続を作成する際に、接続を GitHub アプリのインストールに関連付ける必要はありませんが、リポジトリにアクセスできるようにするためにはインストールが必要です。手順に従って[インストールを確認](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps)し、GitHub アプリがインストールされていることを確認します。インストールされていない場合は、[GitHub アプリのページ](https://github.com/marketplace/aws-connector-for-github)に移動してアプリをインストールします。UAT のアクセスの詳細については、「[About user access tokens](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#about-user-access-tokens)」を参照してください。

### AWS サービスの IAM ロールに必要な IAM アクセス許可がありません。
<a name="connections-github-troubleshooting.iam-permissions"></a>

**問題:** 次のいずれかのエラーメッセージが表示されます。
+ `Access denied to connection <connection-arn>`
+ `Failed to get access token from <connection-arn>`

**推奨される解決策:** 通常、CodePipeline や CodeBuild などの AWS サービスとの接続を使用します。 AWS サービスに IAM ロールを付与すると、 AWS サービスはロールのアクセス許可を使用してユーザーに代わって動作できます。IAM ロールに必要なアクセス許可が付与されていることを確認してください。必要な IAM アクセス許可の詳細については、「 *デベロッパーツールコンソールユーザーガイド*」の[「Connection and Identity and Access Management for Notifications and CodeConnections を使用するためのアクセス権を CodeBuild プロジェクト IAM ロールに付与](#connections-github-role-access)する」を参照してください。 [AWS CodeStar CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/security-iam.html) 