

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

# 將儲存的物件從 OpenSearch Dashboards 遷移至 OpenSearch UI
<a name="application-migration"></a>

如果您在 OpenSearch Dashboards 中有現有的儀表板、視覺化效果、索引模式和其他已儲存的物件，您可以在 OpenSearch UI 中遷移和重複使用它們。

遷移至 OpenSearch UI 的優點：
+ **高可用性** – OpenSearch UI 託管在 中 AWS 雲端 ，並在網域升級和維護期間保持可用，而 OpenSearch Dashboards 託管在網域中，將暫時無法使用。
+ **多個資料來源** – OpenSearch UI 可以跨多個資料來源提供合併的單一窗格，包括 OpenSearch 網域、無伺服器集合，以及與 Amazon S3 和 Amazon CloudWatch 的資料連線；而每個 OpenSearch Dashboards 只能使用一個網域或集合。
+ OpenSearch UI 提供 AI Assistant 和 Workspaces 等其他功能。進一步了解：[在 Amazon OpenSearch Service 中使用 OpenSearch UI](application.md)。

**Topics**
+ [遷移概觀](#application-migrate-saved-objects-overview)
+ [先決條件](#application-migrate-saved-objects-prerequisites)
+ [步驟 1：從 OpenSearch Dashboards 匯出儲存的物件](#application-migrate-saved-objects-export)
+ [步驟 2：將儲存的物件匯入 OpenSearch UI](#application-migrate-saved-objects-import)

## 遷移概觀
<a name="application-migrate-saved-objects-overview"></a>

遷移程序包含下列高階步驟：

1. **從 OpenSearch Dashboards 匯出儲存的物件** – 使用 OpenSearch Dashboards 儲存的物件管理 UI 或匯出 API，將儀表板、視覺效果、索引模式和其他物件下載為換行分隔 JSON (NDJSON) 檔案。

1. **建立 OpenSearch UI 應用程式和工作區** – 如果您尚未這麼做，請建立 OpenSearch UI 應用程式和工作區來接收匯入的物件。

1. **在 OpenSearch UI 中註冊資料來源** – 將您的 OpenSearch 網域與 OpenSearch UI 應用程式建立關聯，並將其註冊為工作區內的資料來源。匯入物件中的索引模式會參考此資料來源。

1. **將儲存的物件匯入 OpenSearch UI** – 使用 OpenSearch UI 儲存的物件管理 UI 或匯入 API，將 NDJSON 檔案上傳到目標工作區。

1. **驗證匯入的物件** – 在 OpenSearch UI 中開啟儀表板和視覺化，以驗證它們是否正確顯示，以及資料是否從相關聯的網域或集合中流動。

## 先決條件
<a name="application-migrate-saved-objects-prerequisites"></a>

在遷移之前，請確認下列先決條件：
+ 您擁有呼叫 Amazon OpenSearch Service 和 OpenSearch APIs所需的必要 IAM 許可。如需詳細資訊，請參閱[建立 Amazon OpenSearch Service 應用程式所需的許可](application-getting-started.md#application-prerequisite-permissions)。
+ 您可以存取要遷移的網域或集合和 OpenSearch Dashboards。
+ 您已建立 OpenSearch UI 應用程式。如需建立應用程式和工作區的資訊，請參閱 [Amazon OpenSearch Service 中的 OpenSearch 使用者介面入門](application-getting-started.md)。
+ 您已將相同的網域或集合關聯至 OpenSearch UI 應用程式。如需建立資料來源關聯的資訊，請參閱 [管理資料來源關聯和虛擬私有雲端存取許可](application-data-sources-and-vpc.md)。

**注意**  
OpenSearch UI 僅支援 OpenSearch 1.3 版和更新版本。在嘗試遷移儲存的物件之前，請確認您的 OpenSearch 網域正在執行 1.3 版或更新版本。

## 步驟 1：從 OpenSearch Dashboards 匯出儲存的物件
<a name="application-migrate-saved-objects-export"></a>

使用管理 UI 或匯出 API 從 OpenSearch Dashboards 匯出您儲存的物件。匯出會產生以換行分隔的 JSON (NDJSON) 檔案，其中包含所有選取的已儲存物件類型及其相依性。

**Topics**
+ [在 OpenSearch Dashboards 上手動匯出](#application-migrate-export-console)
+ [透過 API 匯出](#application-migrate-export-api)

### 在 OpenSearch Dashboards 上手動匯出
<a name="application-migrate-export-console"></a>

**使用 OpenSearch Dashboards 管理 UI 匯出儲存的物件**

1. 開啟您的 OpenSearch Dashboards 執行個體。

1. 在左側導覽面板中，選擇**管理**。

1. 在**儀表板管理**下，選擇**已儲存的物件**。

1. 選取您要匯出的已儲存物件。若要匯出特定類型的所有物件，請使用搜尋列依類型篩選。若要匯出所有物件，請選取資料表標頭中的核取方塊。

1. 選擇 **Export** (匯出)。

1. 在**匯出儲存的物件**對話方塊中，確定已選取**包含相關物件**。此選項包含所選已儲存物件所依賴的所有物件，例如視覺化所參考的索引模式。只有在您想要手動管理相依性時，才清除此選項。

1. 選擇**匯出**，將`.ndjson`檔案下載到本機電腦。

**提示**  
當您選擇**包含相關物件**時，匯出的 NDJSON 檔案會包含轉譯所選儀表板和視覺化所需的所有已儲存物件，包括其相依索引模式、視覺化和搜尋物件。這可簡化匯入步驟，並避免遺漏參考錯誤。

### 透過 API 匯出
<a name="application-migrate-export-api"></a>

您可以使用 OpenSearch Dashboards 已儲存物件匯出 API，以程式設計方式匯出已儲存物件。這對於自動化遷移或將匯出步驟整合到 CI/CD 管道非常有用。

**注意**  
如果您的 OpenSearch 網域已啟用[精細存取控制](fgac.md)，則必須在匯出請求中提供身分驗證憑證。使用您的使用者名稱和密碼新增 `-u`旗標，以使用 HTTP 基本身分驗證。如需有關身分驗證選項的詳細資訊，請參閱 [Amazon OpenSearch Service 中的精細存取控制](fgac.md)。

下列範例會匯出具有其相關物件的所有儀表板。使用您的資訊取代{{預留位置的值}}。

```
curl -X POST \
    "https://{{dashboards-endpoint}}/_dashboards/api/saved_objects/_export" \
    -u '{{master-username}}:{{master-password}}' \
    -H "Content-Type: application/json" \
    -H "osd-xsrf: true" \
    -d '{
        "type": ["dashboard", "visualization", "index-pattern", "search"],
        "includeReferencesDeep": true,
        "excludeExportDetails": false
    }' \
    -o {{saved-objects-export.ndjson}}
```

如果您的網域未啟用精細存取控制，您可以省略 `-u`旗標。

若要依 ID 匯出特定的已儲存物件，請使用 `objects` 參數，而非 `type`：

```
curl -X POST \
    "https://{{dashboards-endpoint}}/_dashboards/api/saved_objects/_export" \
    -u '{{master-username}}:{{master-password}}' \
    -H "Content-Type: application/json" \
    -H "osd-xsrf: true" \
    -d '{
        "objects": [
            {"type": "dashboard", "id": "{{dashboard-id}}"},
            {"type": "visualization", "id": "{{visualization-id}}"}
        ],
        "includeReferencesDeep": true
    }' \
    -o {{saved-objects-export.ndjson}}
```

**注意**  
若要尋找已儲存IDs，您可以使用已儲存物件 API 列出特定類型的所有物件。下列範例列出所有儀表板：  

```
curl -X GET \
    "https://{{dashboards-endpoint}}/_dashboards/api/saved_objects/_find?type=dashboard" \
    -u '{{master-username}}:{{master-password}}'
```
回應包含每個已儲存物件的 ID。在 OpenSearch Dashboards 中檢視物件時，您也可以在瀏覽器 URL 中找到 ID。

## 步驟 2：將儲存的物件匯入 OpenSearch UI
<a name="application-migrate-saved-objects-import"></a>

匯出儲存的物件之後，您可以手動或透過 API 將 NDJSON 檔案匯入 OpenSearch UI。

**Topics**
+ [在 OpenSearch UI 上手動匯入](#application-migrate-import-console)
+ [透過 API 匯入](#application-migrate-import-api)

### 在 OpenSearch UI 上手動匯入
<a name="application-migrate-import-console"></a>

**使用 OpenSearch UI 管理 UI 匯入儲存的物件**

1. 開啟您的 OpenSearch UI 應用程式並導覽至目標工作區。

1. 在工作區中，從頂端導覽中選擇**資產**，或前往工作區資產頁面。

1. 選擇**匯入**以開啟**匯入資產**對話方塊。

1. 選擇**選取檔案**，然後選取您從 OpenSearch Dashboards 匯出`.ndjson`的檔案。

1. 針對**衝突管理**，選擇下列其中一項：
   + **使用唯一 IDs**（預設） – 為所有匯入的物件產生新 IDs，避免與現有資產衝突。
   + **檢查現有資產** – 檢查與現有物件的衝突。選取時，請選擇下列其中一個子選項：
     + **自動覆寫衝突** – 自動取代具有相同 ID 的現有資產。
     + **請求對衝突採取動作** – 系統會提示您個別解決每個衝突。

1. 選擇**匯入**。

1. 檢閱匯入摘要。

### 透過 API 匯入
<a name="application-migrate-import-api"></a>

若要使用具有 AWS 簽章第 4 版身分驗證的 API 匯入已儲存的物件，您必須先取得資料來源 ID，然後在匯入請求中使用它。使用您的資訊取代{{預留位置的值}}。

步驟 1：取得工作區的資料來源 ID：

```
curl -X GET \
    "https://{{opensearch-ui-endpoint}}/w/{{workspace-id}}/api/saved_objects/_find?type=data-source" \
    --aws-sigv4 "aws:amz:{{region}}:opensearch" \
    --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
    -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
    -H "osd-xsrf: true"
```

**注意**  
回應包含資料來源 ID。在 OpenSearch UI 中檢視資料來源時，您也可以在瀏覽器 URL 中找到資料來源 ID。

步驟 2：使用步驟 1 的資料來源 ID 匯入儲存的物件：

```
curl -X POST \
    "https://{{opensearch-ui-endpoint}}/w/{{workspace-id}}/api/saved_objects/_import?overwrite=true&dataSourceId={{data-source-id}}" \
    --aws-sigv4 "aws:amz:{{region}}:opensearch" \
    --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
    -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
    -H "osd-xsrf: true" \
    -F "file=@{{saved-objects-export.ndjson}}"
```

**注意**  
這些範例使用 curl 的內建`--aws-sigv4`選項 （提供 curl 7.75 或更新版本） 來簽署請求。在執行命令之前，將您的 AWS 登入資料設定為環境變數：`AWS_ACCESS_KEY_ID`、 `AWS_SECRET_ACCESS_KEY`和 `AWS_SESSION_TOKEN`（如果使用臨時登入資料）。