

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将已保存的对象从 OpenSearch 仪表板迁移到 OpenSearch 用户界面
<a name="application-migration"></a>

如果您在 OpenSearch 仪表板中有现有的仪表板、可视化效果、索引模式和其他已保存的对象，则可以在 OpenSearch 用户界面中迁移和重复使用它们。

迁移到 OpenSearch UI 的好处：
+ **高可用性** — OpenSearch 用户界面托管在中， AWS 云 并在域升级和维护期间保持可用，而 OpenSearch 仪表板托管在域中，将暂时不可用。
+ **多数据源** — OpenSearch UI 可以提供跨多个数据源的整合单一管理面板，包括 OpenSearch 域、无服务器集合以及与 Amazon S3 和 Amazon 的数据连接 CloudWatch；而每个 OpenSearch 控制面板只能处理一个域或集合。
+  OpenSearch 用户界面上还提供了 AI 助手和工作区等其他功能。了解更多:[在 Amazon OpenSearch 服务中使用 OpenSearch 用户界面](application.md).

**Topics**
+ [迁移概述](#application-migrate-saved-objects-overview)
+ [先决条件](#application-migrate-saved-objects-prerequisites)
+ [步骤 1：从 OpenSearch 仪表板导出已保存的对象](#application-migrate-saved-objects-export)
+ [第 2 步：将保存的对象导入 OpenSearch 用户界面](#application-migrate-saved-objects-import)

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

迁移过程包括以下高级步骤：

1. **从 OpenSearch 仪表板导出保存的对象**-使用 OpenSearch 仪表板保存的对象管理 UI 或导出 API 将仪表板、可视化效果、索引模式和其他对象下载为以换行符分隔的 JSON (NDJSON) 文件。

1. **创建 OpenSearch UI 应用程序和工作区**-如果尚未创建，请创建 OpenSearch UI 应用程序和工作区来接收导入的对象。

1. **在 OpenSearch UI 中注册数据源**-将您的 OpenSearch 域与 OpenSearch UI 应用程序关联并将其注册为工作空间内的数据源。导入对象中的索引模式引用此数据源。

1. 将@@ **保存的对象导入 OpenSearch 用户界面**-使用 OpenSearch 用户界面保存的对象管理用户界面或导入 API 将 NDJSON 文件上传到目标工作区。

1. **验证导入的对象**-在 OpenSearch 用户界面中打开仪表板和可视化效果以验证它们是否显示正确，以及数据是否来自关联的域或集合。

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

在迁移之前，请验证以下先决条件：
+ 您拥有调用 Amazon OpenSearch 服务所需的必要 IAM 权限，并且 OpenSearch APIs。有关更多信息，请参阅 [创建亚马逊 OpenSearch 服务应用程序所需的权限](application-getting-started.md#application-prerequisite-permissions)。
+ 您可以访问要迁移的域或集合以及 OpenSearch 控制面板。
+ 您已经创建了一个 OpenSearch UI 应用程序。有关创建应用程序和工作区的信息，请参阅[开始使用 Amazon OpenSearch 服务中的 OpenSearch 用户界面](application-getting-started.md)。
+ 您已将同一个域名或集合关联到 OpenSearch UI 应用程序。有关关联数据源的信息，请参见[管理数据来源关联和虚拟私有云访问权限](application-data-sources-and-vpc.md)。

**注意**  
OpenSearch 用户界面仅支持 1.3 及更高 OpenSearch 版本。在尝试迁移已保存的对象之前，请确认您的 OpenSearch 域运行的是 1.3 或更高版本。

## 步骤 1：从 OpenSearch 仪表板导出已保存的对象
<a name="application-migrate-saved-objects-export"></a>

使用管理 UI 或导出 API 从 OpenSearch 仪表板中导出保存的对象。导出会生成一个以换行符分隔的 JSON (NDJSON) 文件，其中包含所有选定的已保存对象类型及其依赖关系。

**Topics**
+ [在 OpenSearch 仪表板上手动导出](#application-migrate-export-console)
+ [通过 API 导出](#application-migrate-export-api)

### 在 OpenSearch 仪表板上手动导出
<a name="application-migrate-export-console"></a>

**使用 OpenSearch 仪表板管理 UI 导出已保存的对象**

1. 打开您的 OpenSearch 仪表板实例。

1. 在左侧导航面板中，选择**管理**。

1. 在 “**仪表板管理**” 下，选择 “**已保存的对象**”。

1. 选择要导出的已保存对象。要导出特定类型的所有对象，请使用搜索栏按类型进行筛选。要导出所有对象，请选中表格标题中的复选框。

1. 选择**导出**。

1. 在 “**导出保存的对象**” 对话框中，确保选中 “**包括相关对象**”。此选项包括所选已保存对象所依赖的所有对象，例如可视化所引用的索引模式。只有当您打算手动管理依赖关系时，才清除此选项。

1. 选择 “**导出**” 将`.ndjson`文件下载到本地计算机。

**提示**  
当您选择 “**包括相关对象**” 时，导出的 NDJSON 文件将包含呈现所选仪表板和可视化效果所需的所有已保存对象，包括它们的相关索引模式、可视化和搜索对象。这简化了导入步骤并避免了缺少参考错误。

### 通过 API 导出
<a name="application-migrate-export-api"></a>

您可以使用 OpenSearch 仪表板已保存对象导出 API 以编程方式导出已保存的对象。这对于自动迁移或将导出步骤集成到管道中非常有用。 CI/CD 

**注意**  
如果您的 OpenSearch 域名启用了[精细访问控制](fgac.md)，则必须在导出请求中提供身份验证凭证。通过添加带有用户名和密码的`-u`标志，使用 HTTP 基本身份验证。有关身份验证选项的更多信息，请参阅 [Amazon 服务中的精细访问控制 OpenSearch](fgac.md)。

以下示例导出所有仪表板及其相关对象。将 *placeholder values* 替换为您自己的信息。

```
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 仪表板中查看对象时，您还可以在浏览器 URL 中找到 ID。

## 第 2 步：将保存的对象导入 OpenSearch 用户界面
<a name="application-migrate-saved-objects-import"></a>

导出保存的对象后，您可以手动或通过 API 将 NDJSON 文件导入 OpenSearch 用户界面。

**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 仪表板中导出的`.ndjson`文件。

1. 对于**冲突管理**，请选择以下选项之一：
   + **创建具有唯一性的新资源 IDs**（默认）- IDs 为所有导入的对象生成新资源，避免与现有资源发生冲突。
   + **检查现有资产**-检查与现有对象是否存在冲突。选中后，选择以下子选项之一：
     + **自动覆盖冲突**-自动替换具有相同 ID 的现有资产。
     + **请求对冲突采取行动**-系统会提示您单独解决每个冲突。

1. 选择**导入**。

1. 查看导入摘要。

### 通过 API 导入
<a name="application-migrate-import-api"></a>

要使用带有 AWS 签名版本 4 身份验证的 API 导入保存的对象，必须先获取数据源 ID，然后在导入请求中使用它。将 *placeholder values* 替换为您自己的信息。

步骤 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`（如果使用临时证书）。