

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

# 自訂資料來源連接器
<a name="data-source-custom"></a>

當您的儲存庫 Amazon Kendra 尚未提供資料來源連接器時，請使用自訂資料來源。您可以使用它來查看 Amazon Kendra 資料來源提供的相同執行歷史記錄指標，即使您無法使用 Amazon Kendra的資料來源來同步儲存庫。使用此選項可在 Amazon Kendra 資料來源和自訂來源之間建立一致的同步監控體驗。具體而言，使用自訂資料來源來查看您使用 [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html) 和 [BatchDeleteDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchDeleteDocument.html) APIs 建立之資料來源連接器的同步指標。

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

當您建立自訂資料來源時，您可以完全控制如何選取要編製索引的文件。 Amazon Kendra 僅提供指標資訊，可用來監控資料來源同步任務。您必須建立並執行爬蟲程式，以決定資料來源索引的文件。

您必須使用文件物件和 `_source_uri` [DocumentAttribute](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DocumentAttribute.html) 指定[文件](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Document.html)的主要標題，才能在`Query`結果的回應中`DocumentURI`包含 `DocumentTitle` 和 。

您可以使用 主控台或使用 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API 建立自訂資料來源的識別符。若要使用 主控台，請為您的資料來源命名，並選擇性地提供描述和資源標籤。建立資料來源後，會顯示資料來源 ID。將此 ID 複製到同步資料來源與索引時使用。

![\[Form for specifying data source details, including name, description, and optional tags.\]](http://docs.aws.amazon.com/zh_tw/kendra/latest/dg/images/CustomDataSource.png)


您也可以使用 `CreateDataSource` API 建立自訂資料來源。API 會傳回要在同步資料來源時使用的 ID。當您使用 `CreateDataSource` API 建立自訂資料來源時，您無法設定 `Configuration`、 `RoleArn`或 `Schedule` 參數。如果您設定這些參數， 會 Amazon Kendra 傳回`ValidationException`例外狀況。

若要使用自訂資料來源，請建立負責更新 Amazon Kendra 索引的應用程式。應用程式取決於您建立的爬蟲程式。爬蟲程式會讀取儲存庫中的文件，並判斷哪些文件應傳送至 Amazon Kendra。您的應用程式應執行下列步驟：

1. 編目您的儲存庫，並建立儲存庫中新增、更新或刪除的文件清單。

1. 呼叫 [StartDataSourceSyncJob](https://docs.aws.amazon.com/kendra/latest/APIReference/API_StartDataSourceSyncJob.html) API 以發出同步任務正在啟動的訊號。您提供資料來源 ID 來識別同步的資料來源。 Amazon Kendra 會傳回執行 ID 來識別特定的同步任務。

1. 呼叫 [BatchDeleteDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchDeleteDocument.html) API 以從索引中移除文件。您提供資料來源 ID 和執行 ID，以識別正在同步的資料來源，以及與此更新相關聯的任務。

1. 呼叫 [StopDataSourceSyncJob](https://docs.aws.amazon.com/kendra/latest/APIReference/API_StopDataSourceSyncJob.html) API 來發出同步任務結束的訊號。呼叫 `StopDataSourceSyncJob` API 後，相關聯的執行 ID 不再有效。

1. 使用索引和資料來源識別符呼叫 [ListDataSourceSyncJobs](https://docs.aws.amazon.com/kendra/latest/APIReference/API_ListDataSourceSyncJobs.html) API，列出資料來源的同步任務，並查看同步任務的指標。

在您結束同步任務後，您可以啟動新的同步任務。在將所有提交的文件新增至索引之前，可能會有一段時間。使用 `ListDataSourceSyncJobs` API 來查看同步任務的狀態。如果同步任務`Status`傳回的 是 `SYNCING_INDEXING`，則有些文件仍在編製索引中。當上一個任務的狀態為 `FAILED`或 時，您可以啟動新的同步任務`SUCCEEDED`。

呼叫 `StopDataSourceSyncJob` API 之後，您無法在呼叫 `BatchPutDocument`或 `BatchDeleteDocument` APIs 時使用同步任務識別符。如果您這麼做，所有提交的文件都會在 API 的`FailedDocuments`回應訊息中傳回。

## 必要屬性
<a name="custom-required-attributes"></a>

當您 Amazon Kendra 使用 `BatchPutDocument` API 將文件提交至 時，每個文件都需要兩個屬性來識別其所屬的資料來源和同步執行。您必須提供下列兩個屬性，才能將文件從自訂資料來源正確對應至 Amazon Kendra 索引：
+ `_data_source_id`- 資料來源的識別符。當您使用主控台或 `CreateDataSource` API 建立資料來源時，會傳回此值。
+ `_data_source_sync_job_execution_id`- 同步執行的識別符。當您啟動與 `StartDataSourceSyncJob` API 的索引同步時，會傳回此值。

以下是使用自訂資料來源為文件編製索引所需的 JSON。

```
{
    "Documents": [
        {
            "Attributes": [
                {
                    "Key": "_data_source_id",
                    "Value": {
                        "StringValue": "data source identifier"
                    }
                },
                {
                    "Key": "_data_source_sync_job_execution_id",
                    "Value": {
                        "StringValue": "sync job identifier"
                    }
                }
            ],
            "Blob": "document content",
            "ContentType": "content type",
            "Id": "document identifier",
            "Title": "document title"
        }
    ],
    "IndexId": "index identifier",
    "RoleArn": "IAM role ARN"
}
```

當您使用 `BatchDeleteDocument` API 從索引移除文件時，您需要在 `DataSourceSyncJobMetricTarget` 參數中指定下列兩個欄位：
+ `DataSourceId`- 資料來源的識別符。當您使用主控台或 `CreateDataSource` API 建立資料來源時，會傳回此值。
+ `DataSourceSyncJobId`- 同步執行的識別符。當您啟動與 `StartDataSourceSyncJob` API 的索引同步時，會傳回此值。

以下是使用 `BatchDeleteDocument` API 從索引刪除文件所需的 JSON。

```
{
    "DataSourceSyncJobMetricTarget": {
        "DataSourceId": "data source identifier",
        "DataSourceSyncJobId": "sync job identifier"
    },
    "DocumentIdList": [
        "document identifier"
    ],
    "IndexId": "index identifier"
}
```

## 檢視 指標
<a name="custom-metrics"></a>

同步任務完成後，您可以使用 [DataSourceSyncJobMetrics](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DataSourceSyncJobMetrics.html) API 來取得與同步任務相關聯的指標。使用此項目來監控您的自訂資料來源同步。

如果您多次提交相同的文件，無論是做為 `BatchPutDocument` API、`BatchDeleteDocument`API 的一部分，或是同時提交新增和刪除的文件，則文件只會在指標中計算一次。
+ `DocumentsAdded`- 使用與此同步任務相關聯的 `BatchPutDocument` API 提交的文件數量，首次新增到索引。如果文件在同步中提交新增超過一次，則文件只會在指標中計算一次。
+ `DocumentsDeleted`- 使用與此同步任務相關聯的 `BatchDeleteDocument` API 提交的文件數量，已從索引中刪除。如果文件在同步中提交刪除超過一次，則文件只會在指標中計算一次。
+ `DocumentsFailed`- 與此同步任務相關聯的失敗索引的文件數量。這些是 接受 Amazon Kendra 以編製索引但無法編製索引或刪除的文件。如果未接受文件 Amazon Kendra，文件的識別符會在 `BatchPutDocument`和 `BatchDeleteDocument` APIs的`FailedDocuments`回應屬性中傳回。
+ `DocumentsModified`- 使用與此同步任務相關聯之 `BatchPutDocument` API 提交的修改後文件數量，該 API 已在 Amazon Kendra 索引中修改。

Amazon Kendra 也會在編製文件索引時發出 Amazon CloudWatch 指標。如需詳細資訊，請參閱[Amazon Kendra 使用 監控 Amazon CloudWatch](https://docs.aws.amazon.com/kendra/latest/dg/cloudwatch-metrics.html)。

Amazon Kendra 不會傳回自訂資料來源的 `DocumentsScanned` 指標。它也會發出文件中列出的 CloudWatch 指標 [Amazon Kendra 資料來源的指標](https://docs.aws.amazon.com/kendra/latest/dg/cloudwatch-metrics.html#cloudwatch-metrics-data-source)。

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

若要進一步了解 Amazon Kendra 如何與您的自訂資料來源整合，請參閱：
+ [將自訂資料來源新增至 Amazon Kendra](https://aws.amazon.com/blogs/machine-learning/adding-custom-data-sources-to-amazon-kendra/)