GitHub - Amazon Kendra

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

GitHub

GitHub 是適用於軟體開發的 Web 型託管服務,提供具有版本控制的程式碼儲存和管理服務。您可以使用 Amazon Kendra 為 GitHub Enterprise Cloud (SaaS) 和 GitHub Enterprise Server (On Prem) 儲存庫檔案編製索引、發出和提取請求、發出和提取請求評論,以及發出和提取請求評論附件。您也可以選擇包含或排除特定檔案。

注意

Amazon Kendra 現在支援升級的 GitHub 連接器。

主控台已為您自動升級。您在主控台中建立的任何新連接器都會使用升級的架構。如果您使用 API,您現在必須使用 TemplateConfiguration 物件,而不是 GitHubConfiguration 物件來設定連接器。

使用較舊主控台和 API 架構設定的連接器將繼續按設定運作。不過,您將無法編輯或更新它們。如果您想要編輯或更新連接器組態,則必須建立新的連接器。

建議您將連接器工作流程遷移至升級版本。對使用較舊架構設定的連接器的支援預計在 2024 年 6 月結束。

您可以使用 Amazon Kendra 主控台TemplateConfiguration API Amazon Kendra 連線到 GitHub 資料來源。

如需對 Amazon Kendra GitHub 資料來源連接器進行故障診斷,請參閱 對資料來源進行故障診斷

支援的功能

Amazon Kendra GitHub 資料來源連接器支援下列功能:

  • 欄位映射

  • 使用者存取控制

  • 包含/排除篩選條件

  • 完整和增量內容同步

  • 虛擬私有雲端 (VPC)

先決條件

在您可以使用 Amazon Kendra 為 GitHub 資料來源編製索引之前,請在 GitHub 和 AWS 帳戶中進行這些變更。

在 GitHub 中,請確定您已:

  • 建立具有 GitHub 組織管理許可的 GitHub 使用者。

  • 在 Git Hub 中設定個人存取字符,以用作您的身分驗證憑證。請參閱有關建立個人存取字符的 GitHub 文件

    注意

    我們建議您定期重新整理或輪換您的登入資料和秘密。僅為您自己的安全提供必要的存取層級。我們不建議您在資料來源和連接器 1.0 和 2.0 版 (如適用) 之間重複使用登入資料和秘密。

  • 建議:為身分驗證憑證設定 OAuth 權杖。使用 OAuth 權杖來提高 API 節流限制和連接器效能。請參閱 OAuth 授權上的 GitHub 文件

  • 記下您使用的 GitHub 服務類型的 GitHub 主機 URL。例如,GitHub 雲端的主機 URL 可以是 https://api.github.comGitHub 伺服器的主機 URL 可以是 https://on-prem-host-url/api/v3/

  • 記下您要連線的 GitHub GitHub Enterprise Cloud (SaaS) 帳戶或 GitHub Enterprise Server (內部部署) 帳戶的組織名稱。您可以登入 GitHub 桌面,然後在設定檔圖片下拉式清單下選取您的組織,以尋找您的組織名稱。

  • 選用 (僅限伺服器):產生 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 – 授予使用者電子郵件地址的讀取存取權。Amazon Kendra 為爬取 ACLs所需。

    • user:follow – 授予追蹤或取消追蹤其他使用者的存取權。Amazon Kendra 為爬取 ACLs所需。

    • read:user – 授予讀取使用者設定檔資料的存取權。Amazon Kendra 為爬取 ACLs所需。

    • workflow – 授予新增和更新 GitHub 動作工作流程檔案的能力。如果相同檔案 (具有相同路徑和內容) 存在於相同儲存庫中的另一個分支上,則可以在沒有此範圍的情況下遞交工作流程檔案。

    如需詳細資訊,請參閱 GitHub 文件中 OAuth 應用程式的範圍

    適用於 GitHub Enterprise Server (內部部署)

    • repo:status – 授予公開和私有儲存庫中遞交狀態的讀取/寫入存取權。此範圍只有在授予其他使用者或服務存取私有儲存庫遞交狀態,而未授予存取程式碼的權限時,才是必要的。

    • repo_deployment – 准許存取公有和私有儲存庫的部署狀態。此範圍只有在授予其他使用者或服務對部署狀態的存取權時,才需要,而不需要授予對程式碼的存取權。

    • public_repo – 限制對公有儲存庫的存取。這包括讀取/寫入對 公開儲存庫和組織的程式碼、遞交狀態、儲存庫專案、協作者和部署狀態的存取權。主角化公有儲存庫時也需要。

    • repo:invite – 授予接受/拒絕邀請以在儲存庫上協作的能力。只有授予其他使用者或服務對邀請的存取權,而未授予對程式碼的存取權時,才需要此範圍。

    • security_events – 准許:讀取和寫入對程式碼掃描 API 中安全事件的存取。此範圍只有在授予其他使用者或服務存取安全事件,而未授予存取程式碼的權限時,才需要。

    • read:user – 授予讀取使用者設定檔資料的存取權。Amazon Q Business 需要才能爬取 ACLs。

    • user:email – 授予使用者電子郵件地址的讀取存取權。Amazon Q Business 需要才能爬取 ACLs。

    • user:follow – 授予追蹤或取消追蹤其他使用者的存取權。Amazon Q Business 需要才能爬取 ACLs。

    • site_admin – 授予網站管理員對 GitHub Enterprise Server Administration API 端點的存取權。

    • workflow – 授予新增和更新 GitHub 動作工作流程檔案的能力。如果相同檔案 (具有相同路徑和內容) 存在於相同儲存庫中的另一個分支上,則可以在沒有此範圍的情況下遞交工作流程檔案。

    如需詳細資訊,請參閱 GitHub 文件中的 OAuth 應用程式的範圍和GitHub開發人員中 OAuth 應用程式的範圍

  • 已檢查每個文件在 GitHub 中,以及您計劃用於相同索引的其他資料來源中都是唯一的。您要用於索引的每個資料來源,在資料來源中不得包含相同的文件。文件 IDs是索引的全域 ID,且每個索引必須是唯一的。

在您的 中 AWS 帳戶,請確定您有:

  • 已建立 Amazon Kendra 索引,如果使用 API, 會記下索引 ID。

  • 為您的資料來源建立 IAM 角色,如果使用 API, 會記下 IAM 角色的 ARN。

    注意

    如果您變更身分驗證類型和登入資料,則必須更新您的 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。

連線指示

若要 Amazon Kendra 連線至 GitHub 資料來源,您必須提供 GitHub 資料來源的必要詳細資訊,讓 Amazon Kendra 可以存取您的資料。如果您尚未為 設定 GitHub Amazon Kendra,請參閱 先決條件

Console

Amazon Kendra 連線至 GitHub

  1. 登入 AWS Management Console 並開啟 Amazon Kendra 主控台

  2. 從左側導覽窗格中,選擇索引,然後從索引清單中選擇您要使用的索引。

    注意

    您可以選擇在索引設定下設定或編輯使用者存取控制設定。

  3. 入門頁面上,選擇新增資料來源

  4. 新增資料來源頁面上,選擇 GitHub 連接器,然後選擇新增連接器。如果使用第 2 版 (如果適用),請選擇 GitHub 連接器搭配「V2.0」標籤。

  5. 指定資料來源詳細資訊頁面上,輸入下列資訊:

    1. 名稱和描述中,針對資料來源名稱 - 輸入資料來源的名稱。您可以包含連字號,但不能包含空格。

    2. (選用) 描述 — 輸入資料來源的選用描述。

    3. 預設語言 - 選擇語言來篩選索引的文件。除非您另有指定,否則語言預設為英文。文件中繼資料中指定的語言會覆寫選取的語言。

    4. 標籤中,針對新增標籤 - 包含選用標籤,以搜尋和篩選您的資源或追蹤您的 AWS 成本。

    5. 選擇 Next (下一步)

  6. 定義存取和安全性頁面上,輸入下列資訊:

    1. GitHub 來源 - 在 GitHub Enterprise CloudGitHub Enterprise Server 之間選擇。

    2. GitHub 主機 URL - 例如,GitHub 雲端的主機 URL 可以是 https://api.github.comGitHub://on-prem-host-url/api/v3/

    3. GitHub 組織名稱 — 輸入您的 GitHub 組織名稱。您可以在 GitHub 帳戶中找到組織資訊。

      注意

      GitHub 連接器支援每個資料來源連接器執行個體爬取單一組織。

    4. 授權:如果您有 ACL 並想要將其用於存取控制,請開啟或關閉文件的存取控制清單 (ACL) 資訊。ACL 會指定使用者和群組可存取的文件。ACL 資訊用於根據使用者或其群組對文件的存取來篩選搜尋結果。如需詳細資訊,請參閱使用者內容篩選

    5. AWS Secrets Manager secret - 選擇現有的秘密或建立新的 Secrets Manager 秘密,以存放您的 GitHub 身分驗證登入資料。如果您選擇建立新的秘密,則會 AWS Secrets Manager 開啟秘密視窗。

      1. 建立 AWS Secrets Manager 秘密視窗中輸入下列資訊:

        1. 秘密名稱 — 秘密的名稱。字首「AmazonKendra-GitHub-」會自動新增至您的秘密名稱。

        2. 針對 GitHub 權杖 - 輸入在 GitHub 中設定的身分驗證憑證值。

      2. 儲存並新增您的秘密。

    6. Virtual Private Cloud (VPC):您可以選擇使用 VPC。如果是這樣,您必須新增子網路VPC 安全群組

    7. 身分爬蟲程式 - 指定是否要開啟 Amazon Kendra的身分爬蟲程式。身分爬蟲程式會使用文件的存取控制清單 (ACL) 資訊,根據使用者或其群組對文件的存取來篩選搜尋結果。如果您有文件的 ACL 並選擇使用 ACL,您也可以選擇開啟 Amazon Kendra身分爬蟲程式,以設定搜尋結果的使用者內容篩選。否則,如果身分爬蟲程式已關閉,所有文件都可以公開搜尋。如果您想要為文件使用存取控制,且身分爬蟲程式已關閉,您也可以使用 PutPrincipalMapping API 上傳使用者和群組存取資訊以進行使用者內容篩選。

    8. IAM role—選擇現有 IAM 角色或建立新的 IAM 角色,以存取您的儲存庫登入資料和索引內容。

      注意

      IAM 用於索引的 角色無法用於資料來源。如果您不確定現有角色是否用於索引或常見問答集,請選擇建立新角色以避免錯誤。

    9. 選擇 Next (下一步)

  7. 設定同步設定頁面上,輸入下列資訊:

    1. 選取儲存庫 - 選擇 以爬取所有儲存庫或選取。

      如果您選擇抓取選取儲存庫,請新增儲存庫的名稱,並選擇性地新增任何特定分支的名稱。

    2. 內容類型:選擇要從檔案、問題、提取請求等中擷取的內容類型。

    3. Regex 模式 - 新增規則表達式模式,以包含或排除特定檔案。

    4. 同步模式 - 選擇您希望在資料來源內容變更時更新索引的方式。當您 Amazon Kendra 第一次使用 同步資料來源時,預設會爬取所有內容並編製索引。如果初始同步失敗,即使您未選擇完全同步做為同步模式選項,仍必須執行資料的完整同步。

      • 完全同步:將所有內容重新編製索引,每次資料來源與索引同步時取代現有的內容。

      • 全新修改後的同步:每次資料來源與索引同步時,僅索引新的和修改的內容。 Amazon Kendra 可以使用資料來源的機制來追蹤自上次同步以來變更的內容和索引內容。

      • 新增、修改、刪除的同步:每次資料來源與索引同步時,只將新、修改和刪除的內容編製索引。 Amazon Kendra 可以使用資料來源的機制來追蹤自上次同步以來變更的內容和索引內容。

    5. 頻率同步執行排程中,選擇同步資料來源內容和更新索引的頻率。

    6. 選擇 Next (下一步)

  8. 設定欄位映射頁面上,輸入下列資訊:

    1. 預設資料來源欄位 - 從您要映射到索引 Amazon Kendra 的產生預設資料來源欄位中選取 。

    2. 新增欄位 - 新增自訂資料來源欄位,以建立要映射的索引欄位名稱和欄位資料類型。

    3. 選擇 Next (下一步)

  9. 檢閱和建立頁面上,檢查您輸入的資訊是否正確,然後選取新增資料來源。您也可以選擇從此頁面編輯您的資訊。成功新增資料來源後,您的資料來源將顯示在資料來源頁面上。

API

Amazon Kendra 連線至 GitHub

您必須使用 TemplateConfiguration API 指定資料來源結構描述的 JSON。您必須提供下列資訊:

  • 資料來源 - 指定資料來源類型做為您使用 TemplateConfiguration JSON 結構描述GITHUB時。另請在呼叫 CreateDataSource API TEMPLATE時指定資料來源。

  • GitHub 類型 — 將類型指定為 SAASON_PREMISE

  • 主機 URL — 指定 GitHub 主機 URL 或 API 端點 URL。例如,如果您使用 GitHub SaaS/Enterprise 雲端,主機 URL 可以是 https://api.github.com,而對於 GitHub 內部部署/Enterprise 伺服器,主機 URL 可以是 https://on-prem-host-url/api/v3/

  • Organization name—指定 GitHub 帳戶的組織名稱。您可以登入 GitHub 桌面,然後在設定檔圖片下拉式清單下選取您的組織,以尋找您的組織名稱。

  • 同步模式 - 指定當資料來源內容變更時 Amazon Kendra 應如何更新索引。當您第一次使用 Amazon Kendra 同步資料來源時,預設會爬取所有內容並編製索引。如果初始同步失敗,即使您未選擇完全同步做為同步模式選項,仍必須執行資料的完整同步。您可以選擇:

    • FORCED_FULL_CRAWL 以重新編製所有內容的索引,每次資料來源與索引同步時,將取代現有的內容。

    • FULL_CRAWL 每次資料來源與索引同步時, 只會編製新內容、修改內容和已刪除內容的索引。 Amazon Kendra 可以使用資料來源的機制來追蹤自上次同步以來變更的內容變更和索引內容。

    • CHANGE_LOG 每次資料來源與您的索引同步時, 只會編製新內容和修改內容的索引。 Amazon Kendra 可以使用資料來源的機制來追蹤自上次同步以來變更的內容變更和索引內容。

  • 身分爬蟲程式 - 指定是否要開啟 Amazon Kendra的身分爬蟲程式。身分爬蟲程式會使用文件的存取控制清單 (ACL) 資訊,根據使用者或其群組對文件的存取來篩選搜尋結果。如果您有文件的 ACL 並選擇使用您的 ACL,您也可以選擇開啟 Amazon Kendra身分爬蟲程式,以設定搜尋結果的使用者內容篩選。否則,如果身分爬蟲程式已關閉,所有文件都可以公開搜尋。如果您想要為文件使用存取控制,且身分爬蟲程式已關閉,您也可以使用 PutPrincipalMapping API 上傳使用者和群組存取資訊以進行使用者內容篩選。

  • Secret Amazon Resource Name (ARN)—提供包含 GitHub 帳戶身分驗證憑證之 Secrets Manager 秘密的 Amazon Resource Name (ARN)。秘密會以下列金鑰存放在 JSON 結構中:

    { "personalToken": "token" }
  • IAM role—指定RoleArn您何時呼叫 CreateDataSource 以提供 IAM 角色存取 Secrets Manager 秘密的許可,以及呼叫 GitHub 連接器所需的公有 APIs 和 Amazon Kendra。如需詳細資訊,請參閱 IAM GitHub 資料來源的角色

您也可以新增下列選用功能:

  • Virtual Private Cloud (VPC) — 指定您呼叫 VpcConfiguration的時間CreateDataSource。如需詳細資訊,請參閱設定 Amazon Kendra 以使用 Amazon VPC

    注意

    如果您使用 GitHub 伺服器,則必須使用 Amazon VPC 連線到 GitHub 伺服器。

  • 儲存庫篩選條件 - 依其名稱和分支名稱篩選儲存庫。

  • 文件/內容類型 - 指定是否要編目儲存庫文件、問題、發出註解、發出註解附件、提取請求、提取請求註解、提取請求註解附件。

  • 包含和排除篩選條件 - 指定是否包含或排除特定檔案和資料夾。

    注意

    大多數資料來源都使用規則表達式模式,也就是稱為篩選條件的納入或排除模式。如果您指定包含篩選條件,則只會將符合包含篩選條件的內容編製索引。任何不符合包含篩選條件的文件都不會編製索引。如果您指定包含和排除篩選條件,則符合排除篩選條件的文件不會編製索引,即使它們符合包含篩選條件。

  • 存取控制清單 (ACL)—指定您是否擁有 ACL 並想要使用它進行存取控制,來擷取文件的 ACL 資訊。ACL 會指定使用者和群組可存取的文件。ACL 資訊用於根據使用者或其群組對文件的存取來篩選搜尋結果。如需詳細資訊,請參閱使用者內容篩選

  • 欄位映射 - 選擇將 GitHub 資料來源欄位映射至您的 Amazon Kendra 索引欄位。您可以包含文件、遞交、問題、發出附件、發出評論、提取請求、提取請求附件、提取請求評論的欄位。如需詳細資訊,請參閱映射資料來源欄位

    注意

    Amazon Kendra 搜尋您的文件時,需要文件內文欄位或文件內文對等項目。您必須將資料來源中的文件內文欄位名稱映射至索引欄位名稱 _document_body。所有其他欄位是選用的。

如需其他要設定的重要 JSON 金鑰清單,請參閱GitHub範本結構描述

進一步了解

若要進一步了解 Amazon Kendra 如何與您的 GitHub 資料來源整合,請參閱: