

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

# 與 Amazon OpenSearch Service 的零 ETL 整合
<a name="openSearch-zero-etl"></a>

**Topics**
+ [Amazon OpenSearch Service 做為目的地](#openSearch-0etl-destination)
+ [限制](#docdb-openSearch-limitations)

## Amazon OpenSearch Service 做為目的地
<a name="openSearch-0etl-destination"></a>

OpenSearch Service 與 Amazon DocumentDB 的整合可讓您將完全載入和變更資料事件串流至 OpenSearch 網域。擷取基礎設施託管為 OpenSearch 擷取管道，並提供大規模、低延遲的機制，以從 Amazon DocumentDB 集合持續串流資料。

在完全載入期間，零 ETL 整合會先使用擷取管道，將歷史完全載入資料擷取至 OpenSearch。擷取完整載入資料後，OpenSearch 擷取管道會開始從 Amazon DocumentDB 變更串流讀取資料，最終追上進度，以在 Amazon DocumentDB 和 OpenSearch 之間維持近乎即時的資料一致性。OpenSearch 會將文件存放在索引中。從 Amazon DocumentDB 集合傳入的資料可以傳送到一個索引，也可以分割成不同的索引。擷取管道將同步 Amazon DocumentDB 集合中的所有建立、更新和刪除事件，作為 OpenSearch 文件的對應建立、更新和刪除，以保持兩個資料系統同步。擷取管道可設定為從一個集合讀取資料，並寫入至一個索引，或從一個集合讀取資料，並依條件路由至多個索引。

可以使用下列方式設定擷取管道，將資料從 Amazon DocumentDB 串流至 Amazon OpenSearch Service：
+ 僅限完全載入
+ 從 Amazon DocumentDB 串流變更串流事件，無需完全載入
+ 完全載入，然後從 Amazon DocumentDB 變更串流

若要設定您的擷取管道，請執行下列步驟：

### 步驟 1：建立 Amazon OpenSearch Service 網域或 OpenSearch 無伺服器集合
<a name="create-openSearch-domain"></a>

需要具有適當讀取資料許可的 Amazon OpenSearch Service 集合。請參閱《[Amazon OpenSearch Service 開發人員指南》中的 Amazon OpenSearch Service 入門](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/gsg.html)[或 Amazon OpenSearch Serverless 入門 OpenSearch](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-getting-started.html)，以建立集合。 * OpenSearch * 請參閱《[Amazon OpenSearch Service 開發人員指南》中的 Amazon OpenSearch Ingestion](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ingestion.html)，以建立具有正確許可的 AIM 角色，將寫入資料存取至集合或網域。 * OpenSearch * 

### 步驟 2：在 Amazon DocumentDB 叢集上啟用變更串流
<a name="enablechage-streams"></a>

確定已在 Amazon DocumentDB 叢集中的必要集合上啟用變更串流。請參閱 [搭配 Amazon DocumentDB 使用變更串流](change_streams.md)，了解詳細資訊。

### 步驟 3：設定具有寫入 Amazon S3 儲存貯體和目的地網域或集合許可的管道角色
<a name="pipeline-role"></a>

在您建立 Amazon DocumentDB 集合並啟用變更串流之後，請設定您要在管道組態中使用的管道角色，並在角色中新增下列許可：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "allowReadAndWriteToS3ForExport",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket/export/*"
            ]
        }
    ]
}
```

------

為了讓 OpenSearch 管道將資料寫入 OpenSearch 網域，網域必須具有網域層級存取政策，允許 **sts\_role\_arn** 管道角色存取它。下列範例網域存取政策允許您在上一個步驟中建立`pipeline-role`的管道角色名為 ，將資料寫入名為 的網域`ingestion-domain`：

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{your-account-id}:role/{pipeline-role}"
      },
      "Action": ["es:DescribeDomain", "es:ESHttp*"],
      "Resource": "arn:aws:es:{region}:{your-account-id}:domain/{domain-name}/*"
    }
  ]
}
```

### 步驟 4：在管道角色上新增建立 X-ENI 所需的許可
<a name="add-perm-xeni"></a>



------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachNetworkInterface",
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DetachNetworkInterface",
                "ec2:DescribeNetworkInterfaces"
            ],
            "Resource": [
                "arn:aws:ec2:*:420497401461:network-interface/*",
                "arn:aws:ec2:*:420497401461:subnet/*",
                "arn:aws:ec2:*:420497401461:security-group/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        { 
            "Effect": "Allow",
            "Action": [ "ec2:CreateTags" ],
            "Resource": "arn:aws:ec2:*:*:network-interface/*",
            "Condition": { 
               "StringEquals": { "aws:RequestTag/OSISManaged": "true" } 
            } 
        }
    ]
}
```

------

### 步驟 5：建立管道
<a name="create-opensearch-pipeline"></a>

設定指定 Amazon DocumentDB 做為來源的 OpenSearch 擷取管道。此範例管道組態假設使用變更串流擷取機制。如需詳細資訊，請參閱《[Amazon OpenSearch Service 開發人員指南》中的搭配 Amazon DocumentDB 使用 OpenSearch 擷取管道 Amazon DocumentDB](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/configure-client-docdb.html)。 * OpenSearch * 

## 限制
<a name="docdb-openSearch-limitations"></a>

下列限制適用於 Amazon DocumentDB OpenSearch 整合：
+ 每個管道僅支援一個 Amazon DocumentDB 集合做為來源。
+ 不支援跨區域資料擷取。您的 Amazon DocumentDB 叢集和 OpenSearch 網域必須位於相同的 AWS 區域。
+ 不支援跨帳戶資料擷取。您的 Amazon DocumentDB 叢集和 OpenSearch 擷取管道必須位於相同的 AWS 帳戶中。
+ 不支援 Amazon DocumentDB 彈性叢集。僅支援 Amazon DocumentDB 執行個體型叢集。
+ 確保 Amazon DocumentDB 叢集已使用 AWS secrets. AWS secrets 啟用身分驗證，是唯一支援的身分驗證機制。
+ 現有的管道組態無法更新，以從不同的資料庫和/或不同的集合擷取資料。若要更新管道的資料庫和/或集合名稱，您必須建立新的管道。