GitHub アプリを使用して CodeBuild に接続できます。GitHub アプリ接続は AWS CodeConnections を通じてサポートされています。
ソースプロバイダアクセスを使用すると、CreateWebhook を使用して GitHub ウェブフックイベント をサブスクライブすることでビルドをトリガーしたり、CodeBuild で チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定 を使用したりできます。
注記
CodeConnections は、使用できるリージョンが CodeBuild よりも限られています。CodeBuild では、クロスリージョン接続を使用できます。オプトインリージョンで作成された接続は、他のリージョンでは使用できません。詳細については、「AWS CodeConnections エンドポイントとクォータ」を参照してください。
トピック
ステップ 1: GitHub アプリへの接続を作成 (コンソール)
以下のステップを使用して、CodeBuild コンソールで GitHub 内のプロジェクト用に接続を追加します。
GitHub への接続を作成するには
-
「デベロッパーツールユーザーガイド」にある「Create a connection to GitHub」の手順に従ってください。
ステップ 2: 接続を使用するために CodeBuild プロジェクト IAM ロールにアクセスを許可
CodeBuild プロジェクト IAM ロールに、接続によって提供された GitHub トークンを使用するためのアクセスを許可できます。
CodeBuild プロジェクトの IAM ロールにアクセスを許可するには
-
CodeBuild プロジェクトの CodeBuild が他の AWS のサービスとやり取りすることを許可 の手順に従って、CodeBuild プロジェクトの IAM ロールを作成します。
-
手順に従って、次の IAM ポリシーを CodeBuild プロジェクトロールに追加して、接続へのアクセスを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [
<connection-arn>
] } ] }
ステップ 3: 新しい接続を使用するように CodeBuild を設定
接続をアカウントレベルの認証情報として設定し、プロジェクトで使用できます。
AWS Management Console でアカウントレベルの認証情報として接続を設定するには
-
[ソースプロバイダー] で [GitHub] を選択します。
-
[認証情報] で、次のいずれかを実行します。
-
[デフォルトソース認証情報] を選択し、アカウントのデフォルトソース認証情報を使用して、すべてのプロジェクトに適用します。
-
GitHub に接続していない場合は、[デフォルトソース認証情報を管理] を選択します。
-
[認証情報タイプ] では、[GitHub アプリ] を選択します。
-
[接続] で、既存の接続を使用するか、新規の接続を作成するかを選択します。
-
-
[カスタムソース認証情報] を選択し、カスタムソース認証情報を使用してアカウントのデフォルト設定を上書きします。
-
[認証情報タイプ] では、[GitHub アプリ] を選択します。
-
[接続] で、既存の接続を使用するか、新規の接続を作成するかを選択します。
-
-
CodeBuild プロジェクトに複数のトークンを設定することもできます。詳細については、「複数のトークンをソースレベルの認証情報として設定」を参照してください。
GitHub アプリに関する問題のトラブルシューティング
以下の情報は、GitHub アプリの一般的な問題のトラブルシューティングに役立ちます。
トピック
望ましくないリージョンに AWS Connector for GitHub アプリをインストール
問題: GitHub Marketplace から AWS Connector for GitHub をインストールしましたが、望ましくないリージョンに接続が作成されました。GitHub ウェブサイトでアプリを再設定しようとしても、アプリが既に GitHub アカウントにインストールされているため、動作しません。
考えられる原因: アプリは GitHub アカウントに既にインストールされているため、アプリのアクセス許可のみを再設定できます。
推奨される解決策: インストール ID を使用して目的のリージョンに新しい接続を作成できます。
-
https://console.aws.amazon.com/codesuite/settings/connections
で CodeConnections コンソールを開き、AWS コンソールナビゲーションバーのリージョンセレクターを使用して目的のリージョンに移動します。 -
「デベロッパーツールユーザーガイド」にある「Create a connection to GitHub」の手順に従ってください。
注記
AWS Connector for GitHub アプリを既にインストールしているため、新しいアプリをインストールする代わりに、そちらを選択できます。
GitHub アプリ接続にリポジトリへのアクセス権限がありません。
問題: 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
」の指示に従って、インストールされたアプリを設定します。アクセス許可セクションには、アプリにウェブフックアクセス許可がないことが表示され、新しくリクエストされたアクセス許可を確認するオプションがあります。新しいアクセス許可を確認して承諾します。詳細については、「Approving updated permissions for a GitHub App 」を参照してください。 - 考えられる原因: 接続は想定どおりに機能していましたが、突然リポジトリにアクセスできなくなりました。
-
考えられる解決策: まず、「authorizations
」と「installations 」を確認してから、GitHub アプリが承認されてインストールされていることを確認します。GitHub アプリのインストールが一時停止されている場合は、一時停止を解除する必要があります。GitHub アプリが UAT (ユーザーアクセストークン) 接続に対して承認されていない場合、または IAT (インストールアクセストークン) 接続に対してインストールされていない場合、既存の接続は使用できなくなるため、新しい接続を作成する必要があります。GitHub アプリを再インストールしても、古いインストールに関連付けられた以前の接続は復元されないことに注意してください。 考えられる解決策: 接続が UAT 接続の場合は、複数の CodeBuild ビルドの同時実行で使用されているなど、接続が同時に使用されていないことを確認してください。これは、有効期限が切れるトークンが接続によって更新された場合、GitHub が以前に発行された UAT を直ちに無効にするためです。CodeBuild の複数の同時ビルドに UAT 接続を使用する必要がある場合は、複数の接続を作成し、各接続を個別に使用できます。
考えられる解決策: UAT 接続が過去 6 か月間使用されていない場合、接続は GitHub によって無効になります。これを修正するには、新しい接続を作成します。
- 考えられる原因: アプリをインストールせずに UAT 接続を使用していた可能性があります。
-
推奨される解決策: UAT 接続を作成する際に、接続を GitHub アプリのインストールに関連付ける必要はありませんが、リポジトリにアクセスできるようにするためにはインストールが必要です。手順に従ってインストールを確認
し、GitHub アプリがインストールされていることを確認します。インストールされていない場合は、GitHub アプリのページ に移動してアプリをインストールします。UAT のアクセスの詳細については、「About user access tokens 」を参照してください。
AWS のサービスの IAM ロールに必要な IAM アクセス許可がありません。
問題: 次のいずれかのエラーメッセージが表示されます。
-
Access denied to connection
<connection-arn>
-
Failed to get access token from
<connection-arn>
推奨される解決策: 通常、CodePipeline や CodeBuild などの AWS のサービスとの接続を使用します。AWS のサービスに IAM ロールを付与すると、AWS のサービスはロールのアクセス許可を使用して、ユーザーに代わって操作できます。IAM ロールに必要なアクセス許可が付与されていることを確認してください。必要な IAM アクセス許可の詳細については、「デベロッパーツールコンソールユーザーガイド」の「Grant CodeBuild project IAM role access to use the connection」および「Identity and access management for AWS CodeStar Notifications and CodeConnections」を参照してください。