GitHub - Amazon Kendra

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

GitHub

GitHub は、バージョン管理機能を備えたコードストレージおよび管理サービスを提供するソフトウェア開発用のウェブベースのホスティングサービスです。を使用してAmazon Kendra、GitHub Enterprise Cloud (SaaS) および GitHub Enterprise Server (オンプレミス) リポジトリファイルのインデックス作成、リクエストの発行とプル、リクエストのコメントの発行とプル、リクエストのコメントの添付ファイルの発行とプルを行うことができます。また、特定のファイルを含めるまたは除外することもできます。

注記

Amazon Kendraがアップグレードされた GitHub コネクタをサポートするようになりました。

コンソールは自動的にアップグレードされています。コンソールで新しくコネクタを作成すると、コネクタにはアップグレードされたアーキテクチャが使用されます。API を使用する場合は、GitHubConfiguration オブジェクトではなく TemplateConfiguration オブジェクトを使用してコネクタを設定する必要があります。

古いコンソールと API アーキテクチャを使用して設定されたコネクタは、引き続き設定どおりに機能します。ただし、それらを編集したり更新したりすることはできません。コネクタ設定を編集または更新する場合は、新しいコネクタを作成する必要があります。

コネクタワークフローをアップグレードされたバージョンに移行することをお勧めします。古いアーキテクチャを使用して設定されたコネクタのサポートは、2024 年 6 月までに終了する予定です。

Amazon KendraコンソールTemplateConfiguration API を使用して GitHub データソースAmazon Kendraに接続できます。

Amazon KendraGitHub データソースコネクタのトラブルシューティングについては、「」を参照してくださいデータソースのトラブルシューティング

サポートされている機能

Amazon KendraGitHub データソースコネクタは、次の機能をサポートしています。

  • フィールドマッピング

  • ユーザーアクセスコントロール

  • 包含/除外フィルター

  • 完全および増分コンテンツ同期

  • Virtual Private Cloud (VPC)

前提条件

Amazon Kendraを使用して GitHub データソースのインデックスを作成する前に、GitHub と AWSアカウントでこれらの変更を行います。

GitHub で、以下を確認してください。

  • GitHub 組織への管理者アクセス許可を持つ GitHub ユーザーを作成済み。

  • 認証情報として使用するように Git Hub で個人用アクセストークンを設定済み。個人アクセストークンの作成については、GitHub のドキュメントを参照してください

    注記

    認証情報とシークレットは、定期的に更新またはローテーションすることをお勧めします。セキュリティに必要なアクセスレベルのみを提供してください。認証情報とシークレットを、データソース、コネクタバージョン 1.0 と 2.0 (該当する場合) で再利用することは推奨しません

  • 推奨: 認証情報用の OAuth トークンを設定済み。API のスロットル制限とコネクタのパフォーマンスを向上させるには、OAuth トークンを使用してください。OAuth 認証に関する GitHub のドキュメントを参照してください。

  • 使用している GitHub サービスのタイプに対応する GitHub ホスト URL を記録済み。例えば、GitHub クラウドのホスト URL は https://api.github.com で、GitHub サーバーのホスト URL は https://on-prem-host-url/api/v3/ である可能性があります。

  • 接続する GitHub、GitHub Enterprise Cloud (SaaS) アカウント、または GitHub Enterprise Server (オンプレミス) アカウントの Organization 名前を書き留めた。組織名は、GitHub Desktop にログインし、プロファイル写真のドロップダウンから [組織] を選択して確認できます。

  • オプション (サーバーのみ): SSL 証明書を生成し、 Amazon S3バケットに保存されている証明書へのパスをコピーしました。安全な SSL 接続が必要な場合は、これを使用して GitHub に接続します。OpenSSL を使用して、任意のコンピュータで自己署名 X509 証明書を生成できます。OpenSSL を使用して X509 証明書を作成する例については、「X509 証明書の作成と署名」を参照してください。

  • 以下のアクセス許可を追加しました。

    GitHub Enterprise Cloud (SaaS) の場合

    • repo:status - パブリックおよびプライベートリポジトリのコミットステータスへの読み取り/書き込みアクセスを許可します。コードへのアクセスを許可せずに、プライベートリポジトリのコミットステータスへのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • repo_deployment – パブリックおよびプライベートリポジトリのデプロイステータスへのアクセスを許可します。コードへのアクセスを許可せずに、デプロイステータスへのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • public_repo – パブリックリポジトリへのアクセスを制限します。これには、パブリックリポジトリと組織のコード、コミットステータス、リポジトリプロジェクト、共同作業者、デプロイステータスへの読み取り/書き込みアクセスが含まれます。パブリックリポジトリのスター付けにも必要です。

    • repo:invite – リポジトリで共同作業を行うための招待を承諾/拒否することを許可します。コードへのアクセスを許可せずに、招待へのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • security_events – コードスキャン API のセキュリティイベントへの読み取りおよび書き込みアクセスを許可します。コードへのアクセスを許可せずに、セキュリティイベントへのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • read:org – 組織メンバーシップ、組織プロジェクト、チームメンバーシップへの読み取り専用アクセス。

    • user:email – ユーザーの E メールアドレスへの読み取りアクセスを許可します。Amazon Kendra が ACL をクロールするために必要です。

    • user:follow – 他のユーザーをフォローまたはフォロー解除するためのアクセス許可を付与します。Amazon Kendra が ACL をクロールするために必要です。

    • read:user – ユーザーのプロファイルデータを読み取るためのアクセス許可を付与します。Amazon Kendra が ACL をクロールするために必要です。

    • workflow – GitHub Actions ワークフローファイルを追加および更新することを許可します。同じリポジトリ内の別のブランチに同じファイル (同じパスとコンテンツの両方を持つ) が存在する場合、このスコープなしでワークフローファイルをコミットできます。

    詳細については、GitHub Docs の「Scopes for OAuth apps」を参照してください。

    GitHub Enterprise Server (On Prem) の場合

    • repo:status - パブリックおよびプライベートリポジトリのコミットステータスへの読み取り/書き込みアクセスを許可します。コードへのアクセスを許可せずに、プライベートリポジトリのコミットステータスへのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • repo_deployment – パブリックおよびプライベートリポジトリのデプロイステータスへのアクセスを許可します。コードへのアクセスを許可せずに、デプロイステータスへのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • public_repo – パブリックリポジトリへのアクセスを制限します。これには、パブリックリポジトリと組織のコード、コミットステータス、リポジトリプロジェクト、共同作業者、デプロイステータスへの読み取り/書き込みアクセスが含まれます。パブリックリポジトリのスター付けにも必要です。

    • repo:invite – リポジトリで共同作業を行うための招待を承諾/拒否することを許可します。コードへのアクセスを許可せずに、招待へのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • security_events – コードスキャン API のセキュリティイベントへの読み取りおよび書き込みアクセスを許可します。コードへのアクセスを許可せずに、セキュリティイベントへのアクセスを他のユーザーまたはサービスに許可する場合にのみこのスコープが必要になります。

    • read:user – ユーザーのプロファイルデータを読み取るためのアクセス許可を付与します。Amazon Q Business が ACL をクロールするために必要です。

    • user:email – ユーザーの E メールアドレスへの読み取りアクセスを許可します。Amazon Q Business が ACL をクロールするために必要です。

    • user:follow – 他のユーザーをフォローまたはフォロー解除するためのアクセス許可を付与します。Amazon Q Business が ACL をクロールするために必要です。

    • site_admin – サイト管理者に GitHub Enterprise Server Administration API エンドポイントへのアクセスを許可します。

    • workflow – GitHub Actions ワークフローファイルを追加および更新することを許可します。同じリポジトリ内の別のブランチに同じファイル (同じパスとコンテンツの両方を持つ) が存在する場合、このスコープなしでワークフローファイルをコミットできます。

    詳細については、GitHub ドキュメントの「OAuth アプリのスコープ」および GitHub Developer の「Understanding scopes for OAuth Apps」を参照してください。

  • 各ドキュメントが GitHub および同じインデックスを使用予定の他のデータソース間で一意であることを確認しました。インデックスに使用する各データソースには、データソース全体に同じドキュメントが含まれていてはなりません。ドキュメント ID はインデックス全体に適用され、インデックスごとに一意である必要があります。

でAWS アカウント、以下があることを確認します。

  • Amazon Kendraインデックスを作成し、API を使用している場合はインデックス ID を記録しました。

  • データソースの IAMロールを作成し、 API を使用している場合はロールの ARN を記録しましたIAM。

    注記

    認証タイプと認証情報を変更する場合は、IAMロールを更新して正しいAWS Secrets Managerシークレット ID にアクセスする必要があります。

  • GitHub の認証情報を AWS Secrets Manager シークレットに保存し、API を使用している場合は、シークレットの ARN を記録済み。

    注記

    認証情報とシークレットは、定期的に更新またはローテーションすることをお勧めします。セキュリティに必要なアクセスレベルのみを提供してください。認証情報とシークレットを、データソース、コネクタバージョン 1.0 と 2.0 (該当する場合) で再利用することは推奨しません

既存のIAMロールまたはシークレットがない場合は、GitHub データソースを接続するときに コンソールを使用して新しいIAMロールとSecrets Managerシークレットを作成できますAmazon Kendra。API を使用している場合は、既存のIAMロールとSecrets Managerシークレットの ARN とインデックス ID を指定する必要があります。

接続手順

GitHub データソースAmazon Kendraに接続するには、 がデータAmazon Kendraにアクセスできるように、GitHub データソースの必要な詳細を指定する必要があります。GitHub をまだ設定していない場合はAmazon Kendra、「」を参照してください前提条件

Console

GitHub Amazon Kendraに接続するには

  1. にサインインAWS マネジメントコンソールし、 Amazon Kendraコンソールを開きます。

  2. 左側のナビゲーションペインで、[インデックス] を選択し、インデックスのリストから使用するインデックスを選択します。

    注記

    [インデックスの設定] で、[ユーザーアクセスコントロール] 設定を設定または編集できます。

  3. [使用開始] ページで、[データソースを追加] を選択します。

  4. [データソースを追加] ページで [GitHub コネクタ] を選択し、[コネクタを追加] を選択します。バージョン 2 (該当する場合) を使用している場合は、「V2.0」タグが付いた [GitHub コネクタ] を選択します。

  5. [データソースの詳細を指定] ページで、次の情報を入力します。

    1. [名前と説明][データソース名] に、データソースの名前を入力します。ハイフン (-) は使用できますが、スペースは使用できません。

    2. (オプション) [説明] - オプションで、データソースの説明を入力します。

    3. [デフォルト言語] - インデックス用にドキュメントをフィルターするための言語。特に指定しない限り、言語はデフォルトで英語に設定されます。ドキュメントのメタデータで指定された言語は、選択した言語よりも優先されます。

    4. タグで新しいタグを追加する - リソースを検索してフィルタリングしたり、AWSコストを追跡したりするためのオプションのタグを含めます。

    5. [次へ] を選択します。

  6. [アクセスとセキュリティの定義] ページで、次の情報を入力します。

    1. [GitHub ソース] - [GitHub エンタープライズクラウド][GitHub Enterprise Server] のいずれかを選択します。

    2. [GitHub host URL] - 例えば、GitHub クラウドのホスト URL は https://api.github.com、GitHub サーバーのホスト URL は https://on-prem-host-url/api/v3/ のようになります。

    3. GitHub 組織名 - GitHub の組織名を入力します。組織の情報は GitHub アカウントで確認できます。

      注記

      GitHub コネクタは、データソースコネクタインスタンスごとに 1 つの Organization のクローリングをサポートしています。

    4. [承認] - アクセスコントロールリスト (ACL) があり、それをアクセスコントロールに使用する場合に、ドキュメントの ACL 情報を有効にするか無効にするかを選択します。ACL では、ユーザーとグループがアクセスできるドキュメントを指定します。ACL 情報は、ユーザーまたはそのグループのドキュメントへのアクセスに基づいて、検索結果をフィルタリングするために使用されます。詳細については、「User context filtering」を参照してください。

    5. AWS Secrets Managersecret — 既存のシークレットを選択するか、新しいSecrets Managerシークレットを作成して GitHub 認証情報を保存します。新しいシークレットの作成を選択すると、[AWS Secrets Manager シークレット] ウィンドウが開きます。

      1. [AWS Secrets Manager シークレットウィンドウを作成] に次の情報を入力します。

        1. [シークレット名] - シークレットの名前。シークレット名に、プレフィックス「AmazonKendra-GitHub-」が自動的に追加されます。

        2. [GitHub トークン] - GitHub で設定した認証情報の値を入力します。

      2. シークレットを保存して追加します。

    6. [仮想プライベートクラウド (VPC)] - VPC の使用を選択できます。選択する場合は、[サブネット][VPC セキュリティグループ] を追加する必要があります。

    7. [ID クローラー] - Amazon Kendra の ID クローラーを有効にするかどうかを指定します。ID クローラーは、ドキュメントのアクセスコントロールリスト (ACL) 情報を使用して、ユーザーまたはそのグループのドキュメントへのアクセス権に基づいて検索結果をフィルタリングします。ドキュメントの ACL があり、ACL を使用することを選択した場合は、Amazon KendraID クローラをオンにして検索結果のユーザーコンテキストフィルタリングを設定することもできます。それ以外の場合は、ID クローラーがオフになっている場合、すべてのドキュメントは公開され検索可能になります。ID クローラーがオフになっているときにドキュメントのアクセスコントロールを使用する場合は、代わりに PutPrincipalMapping API を使用して、ユーザーコンテキストフィルタリング用にユーザーとグループのアクセス情報をアップロードすることができます。

    8. IAMrole — 既存のIAMロールを選択するか、新しいIAMロールを作成してリポジトリの認証情報とインデックスコンテンツにアクセスします。

      注記

      IAMインデックスに使用される ロールは、データソースには使用できません。インデックスやよくある質問に既存のロールが使用されているかどうかが不明な場合は、エラーを避けるため、[新しいロールを作成] を選択してください。

    9. [次へ] を選択します。

  7. [同期設定の構成] ページで、次の情報を入力します。

    1. [リポジトリを選択する] — すべてのリポジトリをクロールするか、クロールするリポジトリを選択します。

      選択したリポジトリのクロールを選択した場合は、リポジトリの名前を追加し、必要に応じて特定のブランチの名前を追加します。

    2. [コンテンツタイプ] — ファイル、Issue、プルリクエストなどからクロールするコンテンツタイプを選択します。

    3. [正規表現パターン] - 特定のファイルを含めるまたは除外する正規表現パターンを追加します。

    4. [同期モード] - データソースのコンテンツが変更されたときのインデックスの更新方法を選択します。データソースを Amazon Kendraと初めて同期すると、デフォルトですべてのコンテンツがクロールされ、インデックスが作成されます。同期モードオプションとして完全同期を選択していない場合でも、最初の同期が失敗した場合は、データの完全同期を実行する必要があります。

      • 完全同期: データソースがインデックスと同期されるたびに、既存のコンテンツを置き換えて、すべてのコンテンツのインデックスを新たに作成します。

      • 新しい、変更された同期: データソースがインデックスと同期するたびに、新規および変更されたコンテンツのインデックスのみを作成します。 Amazon Kendraは、データソースのメカニズムを使用して、コンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツのインデックスを作成できます。

      • 新規作成、変更、削除の同期: データソースがインデックスと同期するたびに、新規作成、変更、削除されたコンテンツのみのインデックスを作成します。Amazon Kendra は、データソースのメカニズムを利用してコンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツのインデックスを作成することができます。

    5. [同期実行スケジュール][頻度] - データソースコンテンツを同期してインデックスを更新する頻度を選択します。

    6. [次へ] を選択します。

  8. [フィールドマッピングを設定] ページで、次の情報を入力します。

    1. デフォルトのデータソースフィールド — インデックスにマッピングするAmazon Kendra生成されたデフォルトのデータソースフィールドから選択します。

    2. [フィールドを追加] - カスタムデータソースフィールドを追加して、マッピング先のインデックスフィールド名とフィールドデータタイプを作成します。

    3. [次へ] を選択します。

  9. [確認と作成] ページで、入力した情報が正しいことを確認し、[データソースを追加] を選択します。このページで情報の編集を選択することもできます。データソースが正常に追加されると、データソースが [データソース] ページに表示されます。

API

GitHub Amazon Kendraに接続するには

TemplateConfiguration API を使用してデータソーススキーマの JSON を指定する必要があります。これには、以下の情報を入力する必要があります。

  • [データソース]TemplateConfiguration JSON スキーマを使用する場合は、データソースタイプを GITHUB と指定します。また、CreateDataSource API を呼び出す場合は、データソースを TEMPLATE と指定します。

  • [GitHub のタイプ] — [SAAS] または [ON_PREMISE] をタイプとして指定します。

  • [ホスト URL] — GitHub ホスト URL または API エンドポイント URL を指定します。たとえば、GitHub SaaS/Enterprise Cloud を使用する場合はホスト URL は https://api.github.com、GitHub オンプレミス/Enterprise Server の場合はホスト URL は https://on-prem-host-url/api/v3/ になります。

  • [Organization 名] - GitHub アカウントの Organization の名前を指定します。組織名は、GitHub Desktop にログインし、プロファイル写真のドロップダウンから [組織] を選択して確認できます。

  • 同期モード — データソースコンテンツが変更されたときに Amazon Kendraがインデックスを更新する方法を指定します。Amazon Kendra でデータソースを初めて同期すると、デフォルトですべてのコンテンツがクロールされ、インデックスが作成されます。同期モードオプションとして完全同期を選択していない場合でも、最初の同期が失敗した場合は、データの完全同期を実行する必要があります。以下のいずれかから選択できます。

    • FORCED_FULL_CRAWL は、データソースがインデックスと同期されるたびに、既存のコンテンツを置き換えて、すべてのコンテンツのインデックスを新たに作成します。

    • FULL_CRAWL は、データソースがインデックスと同期するたびに、新規作成、変更、削除されたコンテンツのみのインデックスを作成します。Amazon Kendra は、データソースのメカニズムを利用してコンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツのインデックスを作成することができます。

    • CHANGE_LOG は、データソースがインデックスと同期するたびに、新規作成および変更されたコンテンツのインデックスのみを作成します。Amazon Kendra は、データソースのメカニズムを利用してコンテンツの変更を追跡し、前回の同期以降に変更されたコンテンツのインデックスを作成できます。

  • [ID クローラー] - Amazon Kendra の ID クローラーを有効にするかどうかを指定します。ID クローラーは、ドキュメントのアクセスコントロールリスト (ACL) 情報を使用して、ユーザーまたはそのグループのドキュメントへのアクセス権に基づいて検索結果をフィルタリングします。ドキュメントの ACL があり、ACL を使用することを選択した場合は、Amazon KendraID クローラをオンにして検索結果のユーザーコンテキストフィルタリングを設定することもできます。それ以外の場合は、ID クローラーがオフになっている場合、すべてのドキュメントは公開され検索可能になります。ID クローラーがオフになっているときにドキュメントのアクセスコントロールを使用する場合は、代わりに PutPrincipalMapping API を使用して、ユーザーコンテキストフィルタリング用にユーザーとグループのアクセス情報をアップロードすることができます。

  • Secret Amazon Resource Name (ARN) — GitHub アカウントの認証情報を含む Secrets Managerシークレットの Amazon リソースネーム (ARN) を指定します。シークレットは、次のキーを含む JSON 構造に保存されます。

    { "personalToken": "token" }
  • IAMrole — を呼び出しCreateDataSourceて IAMロールにSecrets Managerシークレットへのアクセス許可を付与し、GitHub コネクタと に必要なパブリック APIsを呼び出すRoleArnタイミングを指定しますAmazon Kendra。詳細については、「IAM roles for GitHub data sources」を参照してください。

オプションで、次の機能を追加することもできます。

  • [仮想プライベートクラウド (VPC)] - VpcConfigurationCreateDataSource を呼び出すタイミングを指定します。詳細については、「を使用するAmazon Kendraように を設定するAmazon VPC」を参照してください。

    注記

    GitHub サーバーを使用する場合は、Amazon VPC を使用して GitHub サーバーに接続する必要があります。

  • [リポジトリフィルター] — リポジトリを名前とブランチ名でフィルタリングします。

  • [ドキュメント/コンテンツタイプ] — リポジトリドキュメント、Issue、Issue のコメント、Issue のコメントの添付ファイル、プルリクエスト、プルリクエストのコメント、プルリクエストのコメントの添付ファイルをクロールするかどうかを指定します。

  • [包含フィルターと除外フィルター] - 特定のファイルおよびフォルダを含める、または除外するように指定できます。

    注記

    ほとんどのデータソースは、フィルターと呼ばれる包含または除外パターンである正規表現パターンを使用しています。包含フィルターを指定すると、包含フィルターに一致するコンテンツのみのインデックスが作成されます。包含フィルターに一致しないドキュメントのインデックスは作成されません。包含フィルターと除外フィルターを指定した場合、除外フィルターに一致するドキュメントは、包含フィルターと一致してもインデックスは作成されません。

  • [アクセスコントロールリスト (ACL)] - ACL があり、それをアクセスコントロールに使用したい場合に、ドキュメントの ACL 情報をクロールするかどうかを指定します。ACL では、ユーザーとグループがアクセスできるドキュメントを指定します。ACL 情報は、ユーザーまたはそのグループのドキュメントへのアクセスに基づいて、検索結果をフィルタリングするために使用されます。詳細については、「User context filtering」を参照してください。

  • フィールドマッピング - 選択すると、GitHub データソースフィールドをAmazon Kendraインデックスフィールドにマッピングします。ドキュメント、コミット、Issue、Issue の添付ファイル、Issue のコメント、プルリクエスト、プルリクエストの添付ファイル、プルリクエストのコメントのフィールドを含めることができます。詳細については、「データソースフィールドのマッピング」を参照してください。

    注記

    Amazon Kendra がドキュメントを検索するには、ドキュメント本文フィールドまたはドキュメントと同等のドキュメント本文が必要です。データソースのドキュメント本文フィールド名をインデックスフィールド名 _document_body にマッピングする必要があります。その他のすべてのフィールドはオプションです。

設定が必要なその他の重要な JSON キーのリストについては、「GitHub template schema」を参照してください。

詳細はこちら

GitHub データソースAmazon Kendraとの統合の詳細については、以下を参照してください。