

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

# GitHub
<a name="data-source-github"></a>

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

**注意**  
Amazon Kendra現在支援升級的 GitHub 連接器。  
主控台已為您自動升級。您在主控台中建立的任何新連接器都將使用升級的架構。如果您使用 API，您現在必須使用 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) 物件，而不是 `GitHubConfiguration` 物件來設定連接器。  
使用舊版主控台和 API 架構設定的連接器將繼續按設定運作。不過，您將無法編輯或更新它們。如果您想要編輯或更新連接器組態，則必須建立新的連接器。  
建議您將連接器工作流程遷移至升級版本。使用較舊架構設定的連接器支援預計在 2024 年 6 月結束。

您可以使用 [Amazon Kendra主控台](https://console.aws.amazon.com/kendra/)和 [TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html) API Amazon Kendra連線到 GitHub 資料來源。

如需對 Amazon KendraGitHub 資料來源連接器進行故障診斷，請參閱 [對資料來源進行故障診斷](troubleshooting-data-sources.md)。

**Topics**
+ [支援的功能](#supported-features-github)
+ [先決條件](#prerequisites-github)
+ [連線指示](#data-source-procedure-github)
+ [進一步了解](#github-learn-more)

## 支援的功能
<a name="supported-features-github"></a>

Amazon KendraGitHub 資料來源連接器支援下列功能：
+ 欄位對應
+ 使用者存取控制
+ 包含/排除篩選條件
+ 完整和增量內容同步
+ 虛擬私有雲端 (VPC)

## 先決條件
<a name="prerequisites-github"></a>

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

**在 GitHub 中，請確定您有：**
+ 建立具有 GitHub 組織管理許可的 GitHub 使用者。
+ 在 Git Hub 中設定個人存取字符，以用作您的身分驗證憑證。請參閱[關於建立個人存取字符的 GitHub 文件](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)。
**注意**  
建議定期更新或輪換憑證與機密。僅授予作業所需的最低存取層級，以確保自身安全。**我們不**建議您在資料來源以及連接器 1.0 和 2.0 版 （如適用） 之間重複使用登入資料和秘密。
+ **建議：**設定身分驗證憑證的 OAuth 權杖。使用 OAuth 字符可提升 API 限流門檻與連接器效能。請參閱 [GitHub 關於 OAuth 授權的相關文件](https://docs.github.com/en/rest/apps/oauth-applications?apiVersion=2022-11-28#about-oauth-apps-and-oauth-authorizations-of-github-apps)。
+ 記下您使用的 GitHub 服務類型的 GitHub 主機 URL。例如，GitHub 雲端主機 URL 可以是 *https://api.github.com*，GitHub 伺服器主機 URL 可能是 *https://on-prem-host-url/api/v3/*。
+ 記下您要連線的 GitHub Enterprise Cloud (SaaS) 帳戶或 GitHub Enterprise Server （內部部署） 帳戶之組織的名稱。您可以登入 GitHub 桌面並在設定檔圖片下拉式清單下選取**您的組織，以尋找您的組織**名稱。
+ **選用 （僅限伺服器）：**產生 SSL 憑證，並複製存放在 Amazon S3儲存貯體中的憑證路徑。如果您需要安全的 SSL 連線，您可以使用此功能連線至 GitHub。您可以直接在任何使用 OpenSSL 的電腦上產生自我簽署 X509 憑證。如需使用 OpenSSL 建立 X509 憑證的範例，請參閱[建立和簽署 X509 憑證](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html)。
+ 新增下列許可：

  **對於 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 應用程式的範圍](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps)。

  **對於 GitHub Enterprise Server （內部部署）**
  + `repo:status` — 授與讀取/寫入公有與私有儲存庫提交狀態的權限。此權限範圍僅在需讓其他使用者或服務讀取私有儲存庫的提交狀態、但不授與程式碼存取時才需啟用。
  + `repo_deployment` — 授與存取公有與私有儲存庫部署狀態的權限。此權限僅在需授與他人存取部署狀態、但不授與程式碼存取時才必須啟用。
  + `public_repo` — 限制對公有儲存庫的存取。其中包括對公有儲存庫與組織的程式碼、提交狀態、儲存庫專案、協作者及部署狀態的讀寫存取。收藏公有儲存庫時亦需此權限。
  + `repo:invite` — 授與接受或拒絕儲存庫協作邀請的權限。僅在須授與他人查看協作邀請、但不授與程式碼存取權時才需啟用。
  + `security_events` — 授與讀寫程式碼掃描 API 之安全事件的權限。僅在需授與他人存取安全事件、但不授與程式碼存取時才需啟用。
  + `read:user` — 授與讀取使用者個人資料的權限。Amazon Q Business 在進行 ACL 爬取時需要此權限。
  + `user:email` — 授與讀取使用者電子郵件地址的權限。Amazon Q Business 在進行 ACL 爬取時需要此權限。
  + `user:follow` — 授與追蹤或取消追蹤其他使用者的權限。Amazon Q Business 在進行 ACL 爬取時需要此權限。
  + `site_admin` – 授予網站管理員對 GitHub Enterprise Server Administration API 端點的存取權。
  + `workflow` – 授予新增和更新 GitHub 動作工作流程檔案的能力。若同一份工作流程檔案 (路徑與內容皆相同) 已存在於同一儲存庫的其他分支，即可在未啟用此權限範圍的情況下提交。

  如需詳細資訊，請參閱 GitHub 文件中 [OAuth 應用程式的範圍](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps)和GitHub開發人員中 [OAuth 應用程式的範圍](https://developer.github.com/enterprise/2.16/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)。
+ 已檢查每個文件在 GitHub 中以及您計劃用於相同索引的其他資料來源中是唯一的。您要用於索引的每個資料來源不得包含跨資料來源的相同文件。文件 IDs是索引的全域 ID，且每個索引必須是唯一的。

**在您的 中AWS 帳戶，請確定您有：**
+ [建立Amazon Kendra索引](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html)，如果使用 API， 會記下索引 ID。
+ 為您的資料來源[建立 IAM角色](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html#iam-roles-ds)，如果使用 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。

## 連線指示
<a name="data-source-procedure-github"></a>

若要Amazon Kendra連線至 GitHub 資料來源，您必須提供 GitHub 資料來源的必要詳細資訊，讓 Amazon Kendra可以存取您的資料。如果您尚未為 設定 GitHubAmazon Kendra，請參閱 [先決條件](#prerequisites-github)。

------
#### [ Console ]

**Amazon Kendra連線至 GitHub** 

1. 登入 AWS 管理主控台並開啟 [Amazon Kendra主控台](https://console.aws.amazon.com/kendra/)。

1. 從左側導覽窗格中，選擇**索引**，然後從索引清單中選擇您要使用的索引。
**注意**  
您可以選擇在索引設定下設定或編輯**使用者存取控制**設定。 ****

1. 在**入門**頁面上，選擇**新增資料來源**。

1. 在**新增資料來源**頁面上，選擇 **GitHub 連接器**，然後選擇**新增連接器**。如果使用第 2 版 （如適用），請選擇 **GitHub 連接器**搭配「V2.0」標籤。

1. 在**指定資料來源詳細資訊**頁面上，輸入下列資訊：

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

   1. （選用） **描述** — 輸入資料來源的選用描述。

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

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

   1. 選擇**下一步**。

1. 在**定義存取和安全性**頁面上，輸入下列資訊：

   1. **GitHub 來源** - 在 **GitHub Enterprise Cloud** 和 **GitHub Enterprise Server** 之間進行選擇。

   1. **GitHub 主機 URL** — 例如，GitHub 雲端的主機 URL 可以是 *https://api.github.com*GitHub 伺服器的主機 URL 可以是 *https：//on-prem-host-url/api/v3/*。

   1. **GitHub 組織名稱** — 輸入您的 GitHub 組織名稱。您可以在 GitHub 帳戶中找到組織資訊。
**注意**  
GitHub 連接器支援為每個資料來源連接器執行個體爬取單一組織。

   1. **授權**：如果您有 ACL 並想要將其用於存取控制，請開啟或關閉文件的存取控制清單 (ACL) 資訊。ACL 指定使用者可以和群組存取哪些文件。ACL 資訊用於根據使用者或其群組對文件的存取來篩選搜尋結果。如需詳細資訊，請參閱[使用者內容篩選](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html#context-filter-user-incl-datasources)。

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

      1. 在**建立AWSSecrets Manager秘密視窗中**輸入下列資訊：

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

         1. 對於 **GitHub 字符** - 輸入在 GitHub 中設定的身分驗證憑證值。

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

   1. **Virtual Private Cloud (VPC)** — 您可以選擇使用 VPC。若是如此，您必須新增**子網路**和 **VPC 安全群組**。

   1. **身分爬蟲程式** - 指定是否開啟 Amazon Kendra的身分爬蟲程式。身分爬蟲程式會使用文件的存取控制清單 (ACL) 資訊，根據使用者或其群組對文件的存取來篩選搜尋結果。如果您有文件的 ACL 並選擇使用您的 ACL，您也可以選擇開啟Amazon Kendra身分爬蟲程式，以設定搜尋結果[的使用者內容篩選](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html#context-filter-user-incl-datasources)。否則，如果關閉身分識別編目程式，則所有文件都可公開搜尋。如果您想要使用文件的存取控制，而身分識別編目程式為關閉狀態，您可以改用 [PutPrincipalMapping](https://docs.aws.amazon.com/kendra/latest/APIReference/API_PutPrincipalMapping.html) API 來上傳使用者和群組存取資訊，以供使用者內容篩選使用。

   1. **IAMrole** - 選擇現有IAM角色或建立新的IAM角色，以存取您的儲存庫登入資料和索引內容。
**注意**  
IAM用於索引的 角色無法用於資料來源。如果您不確定現有角色是否用於索引或常見問答集，請選擇**建立新角色**以避免錯誤。

   1. 選擇**下一步**。

1. 在**設定同步設定**頁面上，輸入下列資訊：

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

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

   1. **內容類型** - 選擇您要從檔案、問題、提取請求等中抓取的內容類型。

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

   1. **同步模式** - 選擇您希望在資料來源內容變更時更新索引的方式。當您Amazon Kendra第一次使用 同步資料來源時，預設會爬取所有內容並編製索引。如果初始同步失敗，即使您未選擇完全同步做為同步模式選項，仍必須執行資料的完整同步。
      + 完全同步：新編製所有內容的索引，每次資料來源與索引同步時取代現有的內容。
      + 新的、修改過的同步：每次資料來源與索引同步時，僅索引新的和修改的內容。 Amazon Kendra可以使用資料來源的機制來追蹤內容變更，以及自上次同步以來變更的索引內容。
      + 新的、已修改、已刪除的同步：每次資料來源與索引同步時，僅索引新的、已修改和已刪除的內容。Amazon Kendra 可以使用資料來源的機制來追蹤自上次同步以來變更的內容和索引內容。

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

   1. 選擇**下一步**。

1. 在**設定欄位映射**頁面上，輸入下列資訊：

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

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

   1. 選擇**下一步**。

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

------
#### [ API ]

**Amazon Kendra連線至 GitHub**

您必須使用 [https://docs.aws.amazon.com/kendra/latest/dg/API_TemplateConfiguration.html](https://docs.aws.amazon.com/kendra/latest/dg/API_TemplateConfiguration.html) API [指定資料來源結構描述](https://docs.aws.amazon.com/kendra/latest/dg/ds-schemas.html#ds-github-schema)的 JSON。您必須提供下列資訊：
+ **資料來源** - 當您使用 [https://docs.aws.amazon.com/kendra/latest/dg/API_TemplateConfiguration.html](https://docs.aws.amazon.com/kendra/latest/dg/API_TemplateConfiguration.html) JSON 結構描述`GITHUB`時，指定資料來源類型。另請在呼叫 [https://docs.aws.amazon.com/kendra/latest/dg/API_CreateDataSource.html](https://docs.aws.amazon.com/kendra/latest/dg/API_CreateDataSource.html) API `TEMPLATE`時將資料來源指定為 。
+ **GitHub 類型** - 將類型指定為 `SAAS`或 `ON_PREMISE`。
+ **主機 URL** - 指定 GitHub 主機 URL 或 API 端點 URL。例如，如果您使用 GitHub SaaS/Enterprise 雲端，主機 URL 可以是 `https://api.github.com`，而對於 GitHub 內部部署/Enterprise 伺服器，主機 URL 可以是 `https://on-prem-host-url/api/v3/`。
+ **組織名稱** - 指定 GitHub 帳戶的組織名稱。您可以登入 GitHub 桌面並在設定檔圖片下拉式清單下選取**您的組織，以尋找您的組織**名稱。
+ **同步模式** - 指定 Amazon Kendra如何在資料來源內容變更時更新索引。當您第一次使用 Amazon Kendra同步資料來源時，預設會爬取所有內容並編製索引。如果初始同步失敗，即使您未選擇完全同步做為同步模式選項，仍必須執行資料的完整同步。您可以選擇：
  + `FORCED_FULL_CRAWL` 以重新編製所有內容的索引，每次資料來源與索引同步時都會取代現有的內容。
  + `FULL_CRAWL` 每次資料來源與您的索引同步時， 只會編製新內容、修改內容和已刪除內容的索引。Amazon Kendra 可以使用資料來源的機制來追蹤自上次同步以來變更的內容變更和索引內容。
  + `CHANGE_LOG` 每次資料來源與您的索引同步時， 只會編製新內容和修改內容的索引。Amazon Kendra 可以使用資料來源的機制來追蹤自上次同步以來變更的內容變更和索引內容。
+ **身分爬蟲程式** - 指定是否開啟 Amazon Kendra的身分爬蟲程式。身分爬蟲程式會使用文件的存取控制清單 (ACL) 資訊，根據使用者或其群組對文件的存取來篩選搜尋結果。如果您有文件的 ACL 並選擇使用您的 ACL，您也可以選擇開啟Amazon Kendra身分爬蟲程式，以設定搜尋結果[的使用者內容篩選](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html#context-filter-user-incl-datasources)。否則，如果關閉身分識別編目程式，則所有文件都可公開搜尋。如果您想要使用文件的存取控制，而身分識別編目程式為關閉狀態，您可以改用 [PutPrincipalMapping](https://docs.aws.amazon.com/kendra/latest/APIReference/API_PutPrincipalMapping.html) API 來上傳使用者和群組存取資訊，以供使用者內容篩選使用。
+ **Secret Amazon Resource Name (ARN)** — 提供秘密的 Amazon Resource Name (ARN)Secrets Manager，其中包含 GitHub 帳戶的身分驗證憑證。秘密會以下列金鑰存放在 JSON 結構中：

  ```
  {
      "personalToken": "token"
  }
  ```
+ **IAMrole**—指定`RoleArn`您何時呼叫 `CreateDataSource` 以提供IAM角色存取Secrets Manager秘密的許可，以及呼叫 GitHub 連接器所需的公有 APIs 和 Amazon Kendra。如需詳細資訊，請參閱 [IAM GitHub 資料來源的角色](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html#iam-roles-ds)。

您也可以新增下列選用功能：
+  **Virtual Private Cloud (VPC)**—指定您呼叫 `VpcConfiguration`的時間`CreateDataSource`。如需詳細資訊，請參閱[設定 Amazon Kendra 以使用 Amazon VPC](vpc-configuration.md)。
**注意**  
如果您使用 GitHub 伺服器，則必須使用 Amazon VPC連線到 GitHub 伺服器。
+  **儲存庫篩選條件** - 依儲存庫的名稱和分支名稱篩選儲存庫。
+  **文件/內容類型** - 指定是否要編目儲存庫文件、問題、問題註解、問題註解附件、提取請求、提取請求註解、提取請求註解附件。
+  **包含和排除篩選條件** - 指定是否包含或排除特定檔案和資料夾。
**注意**  
大多數資料來源使用規則表達式模式，作為包含或排除的篩選規則，稱為篩選條件。若您設定包含篩選條件，則只有符合該條件的內容會被編列索引。任何不符合包含篩選條件的文件都不會編製索引。如果您指定包含和排除篩選條件，則符合排除篩選條件的文件不會編製索引，即使它們符合包含篩選條件。
+ **存取控制清單 (ACL)**—如果您有 ACL 並想要將其用於存取控制，請指定是否要為文件編目 ACL 資訊。ACL 指定使用者可以和群組存取哪些文件。ACL 資訊用於根據使用者或其群組對文件的存取來篩選搜尋結果。如需詳細資訊，請參閱[使用者內容篩選](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html#context-filter-user-incl-datasources)。
+  **欄位映射** - 選擇將您的 GitHub 資料來源欄位映射至您的Amazon Kendra索引欄位。您可以包含文件、遞交、問題、問題附件、問題評論、提取請求、提取請求附件、提取請求評論的欄位。如需詳細資訊，請參閱[映射資料來源欄位](https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html)。
**注意**  
Amazon Kendra 搜尋您的文件需要文件內文欄位或文件內文對等項目。您必須將資料來源中的文件內文欄位名稱映射至索引欄位名稱 `_document_body`。所有其他欄位是選用的。

如需要設定的其他重要 JSON 金鑰清單，請參閱[GitHub範本結構描述](https://docs.aws.amazon.com/kendra/latest/dg/ds-schemas.html#ds-github-schema)。

------

## 進一步了解
<a name="github-learn-more"></a>

若要進一步了解Amazon Kendra如何與您的 GitHub 資料來源整合，請參閱：
+ [使用 GitHub 連接器的強大功能重新構想 Amazon KendraGitHub 儲存庫上的搜尋](https://aws.amazon.com/blogs/machine-learning/reimagine-search-on-github-repositories-with-the-power-of-the-amazon-kendra-github-connector/)