

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

# 在 Amazon OpenSearch Service 中使用 OpenSearch UI
<a name="application"></a>

OpenSearch UI （使用者介面） 是 Amazon OpenSearch Service 的現代化操作分析體驗，可提供統一檢視，讓您跨多個來源與資料互動。與僅與託管它的一個網域或集合搭配使用的 OpenSearch Dashboards 不同，OpenSearch UI 託管在 中 AWS 雲端。這可讓 OpenSearch UI 在叢集升級期間實現高可用性並保持正常運作，以及原生與多個資料來源連線。如需 OpenSearch Dashboards 的詳細資訊，請參閱 [搭配使用 OpenSearch Dashboards 與 Amazon OpenSearch Service](dashboards.md)。

以下是 OpenSearch UI 的主要功能：
+ **多個資料來源支援** – OpenSearch UI 可以與多個資料來源連線，以建立全面的檢視。這包括 OpenSearch 網域和無伺服器集合，以及整合 AWS 資料來源，例如 Amazon CloudWatch、Amazon Security Lake 和 Amazon Simple Storage Service (Amazon S3)。
+ **升級期間零停機時間** – OpenSearch UI 託管在 中 AWS 雲端。這表示 OpenSearch 保持運作，並且可以在升級程序期間從叢集擷取資料。
+ **工作區** – 為各種工作流程的團隊協作預留空間，例如可觀測性、安全性分析和搜尋。您可以在工作區中定義協作者的隱私權設定和管理許可。
+ **單一登入** – OpenSearch UI 使用 AWS IAM Identity Center 和 SAML through AWS Identity and Access Management (IAM) 聯合，與您的身分提供者整合，為您的最終使用者建立單一登入體驗。
+ **GenAI 支援的分析** – OpenSearch UI 支援自然語言查詢產生，以協助為您的分析產生正確的查詢。OpenSearch UI 也與 Amazon Q Developer 搭配使用，以提供 Amazon Q 聊天，並協助產生視覺化、提醒摘要、洞見和建議的異常偵測器。
+ **多查詢語言支援** – OpenSearch UI 支援管道處理語言 (PPL)、SQL、Lucene 和儀表板查詢語言 (DQL)。
+ **跨區域和跨帳戶支援** – OpenSearch UI 可以使用跨叢集搜尋功能來連接不同帳戶和不同區域中的 OpenSearch 網域，以進行彙總分析和視覺化。

若要開始使用並建立您的第一個 OpenSearch UI，請遵循 中的指示[Amazon OpenSearch Service 中的 OpenSearch 使用者介面入門](application-getting-started.md)。

如需針對 OpenSearch UI 發行的最新功能的相關資訊，請參閱 [Amazon OpenSearch Service 使用者介面發行歷史記錄](application-release-history.md)。

**Topics**
+ [Amazon OpenSearch Service 使用者介面發行歷史記錄](application-release-history.md)
+ [Amazon OpenSearch Service 中的 OpenSearch 使用者介面入門](application-getting-started.md)
+ [Amazon OpenSearch Service 中的代理式 AI](application-ai-assistant.md)
+ [使用客戶受管金鑰加密 OpenSearch UI 應用程式中繼資料](application-encryption-cmk.md)
+ [使用 啟用 SAML 聯合 AWS Identity and Access Management](application-enable-SAML-identity-federation.md)
+ [管理資料來源關聯和虛擬私有雲端存取許可](application-data-sources-and-vpc.md)
+ [使用 Amazon OpenSearch Service 工作區](application-workspaces.md)
+ [跨區域和跨帳戶資料存取](application-cross-region-cross-account.md)
+ [從 VPC 端點管理對 OpenSearch UI 的存取](application-access-ui-from-vpc-endpoint.md)
+ [將儲存的物件從 OpenSearch Dashboards 遷移至 OpenSearch UI](application-migration.md)
+ [OpenSearch UI 端點和配額](opensearch-ui-endpoints-quotas.md)

# Amazon OpenSearch Service 使用者介面發行歷史記錄
<a name="application-release-history"></a>

下表列出 OpenSearch UI 的所有 Amazon OpenSearch Service 支援版本，以及每個版本隨附的功能和增強功能。


| 變更 | 版本日期 | Description | 
| --- | --- | --- | 
| 新功能 |  2025-03-10  | OpenSearch UI 現在支援跨帳戶資料存取 OpenSearch 網域。您可以針對公有和 VPC 網域，將一個帳戶中的應用程式設定為使用 IAM 或 AWS IAM Identity Center 身分驗證來存取不同帳戶中的網域。如需詳細資訊，請參閱[OpenSearch 網域的跨帳戶資料存取](application-cross-account-data-access-domains.md)。 | 
| 新功能 |  2025-12-29  | OpenSearch UI 現在支援客戶受管金鑰 (CMK) 來加密應用程式中繼資料。此功能可讓您完全控制加密金鑰，協助您符合法規和合規要求。此啟動也會增加 OpenSearch UI 中已儲存物件的中繼資料大小限制，讓您能夠建立和存放複雜的查詢、廣泛的視覺化效果和大規模工作區。如需詳細資訊，請參閱[使用客戶受管金鑰加密 OpenSearch UI 應用程式中繼資料](application-encryption-cmk.md)。 | 
| 新功能 |  2025-04-16  | OpenSearch UI 現在適用於[跨叢集搜尋](cross-cluster-search.md)。這可讓您在一個 中使用 AWS 區域 OpenSearch UI 來存取不同區域中的叢集。方法是將其設定為與相同區域中的叢集連線的遠端叢集。如需詳細資訊，請參閱[跨叢集搜尋](application-cross-cluster-search.md)。 | 
| 新功能 |  2025-03-31  | Amazon Q Developer 現在已全面推出 Amazon OpenSearch Service。如需相關資訊，請參閱[Amazon OpenSearch Service 的 AI 助理](AI-assistant-support.md)。 | 
| 新功能 |  2025-02-05  | 安全聲明標記語言 2.0) (SAML) 到 AWS Identity and Access Management (IAM) 聯合現在可搭配 OpenSearch UI 使用。這可讓您為最終使用者建立身分提供者起始的單一登入 (SSO) 體驗。如需詳細資訊，請參閱[使用 啟用 SAML 聯合 AWS Identity and Access Management](application-enable-SAML-identity-federation.md)。 | 
| 新的整合 |  2024-12-01  | 與 Amazon CloudWatch 的零 ETL 整合可簡化日誌資料分析和視覺化，降低技術開銷和營運成本。如需詳細資訊，請參閱*AWS 新聞部落格*上的 [New Amazon CloudWatch 和 Amazon OpenSearch Service 啟動整合式分析體驗](https://aws.amazon.com/blogs/aws/new-amazon-cloudwatch-and-amazon-opensearch-service-launch-an-integrated-analytics-experience/)。 | 
| 新的整合 |  2024-12-01  | 與 Amazon Security Lake 的零 ETL 整合可讓組織有效率地搜尋、分析並從其安全資料中獲得可行的洞見。如需詳細資訊，請參閱*AWS 新聞部落格*上的[簡介 Amazon OpenSearch Service 和 Amazon Security Lake 整合，以簡化安全分析](https://aws.amazon.com/blogs/aws/introducing-amazon-opensearch-service-zero-etl-integration-for-amazon-security-lake/)。 | 
| 初始版本 |  2024-11-07  | OpenSearch UI 的初始公有版本。如需詳細資訊，請參閱*AWS 大數據部落格*上的 [Amazon OpenSearch Service 啟動新一代 OpenSearch UI](https://aws.amazon.com/blogs/big-data/amazon-opensearch-service-launches-the-next-generation-opensearch-ui/)。 | 

# Amazon OpenSearch Service 中的 OpenSearch 使用者介面入門
<a name="application-getting-started"></a>

在 Amazon OpenSearch Service 中，*應用程式*是 OpenSearch 使用者介面 (OpenSearch UI) 的執行個體。每個應用程式都可以與多個資料來源建立關聯，而單一來源可以與多個應用程式建立關聯。您可以使用不同的支援身分驗證選項，為不同的管理員建立多個應用程式。

使用本主題中的資訊，引導您使用 AWS 管理主控台 或 建立 OpenSearch UI 應用程式。 AWS CLI

**Topics**
+ [建立 Amazon OpenSearch Service 應用程式所需的許可](#application-prerequisite-permissions)
+ [建立 OpenSearch UI 應用程式](#create-application)
+ [管理應用程式管理員](#managing-application-administrators)

## 建立 Amazon OpenSearch Service 應用程式所需的許可
<a name="application-prerequisite-permissions"></a>

建立應用程式之前，請確認您已獲得任務的必要許可。如有需要，請聯絡帳戶管理員尋求協助。

### 一般許可
<a name="prerequisite-permissions-general"></a>

若要在 OpenSearch Service 中使用應用程式，您需要下列政策中顯示的許可。許可的用途如下：
+ 建立和管理應用程式需要這五個`es:*Application`許可。
+ 需要這三個`es:*Tags`許可才能從應用程式新增、列出和移除標籤。
+ 關聯資料來源需要 `aoss:BatchGetCollection`、 `es:DescribeDomain`和 `es:GetDirectQueryDataSource`許可。
+ 存取資料來源需要 `es:ESHttp*`、 `aoss:APIAccessAll`和 4 `opensearch:*DirectQuery*`許可。
+ 為 Amazon OpenSearch Service `iam:CreateServiceLinkedRole`提供在您的帳戶中建立服務連結角色 (SLR) 的許可。使用此角色，可讓 OpenSearch UI 應用程式在您的帳戶中發佈 Amazon CloudWatch 指標。如需詳細資訊，請參閱 [使用服務連結角色來建立 VPC 網域和直接查詢資料來源](slr-aos.md) 主題中的 [許可](slr-aos.md#slr-permissions)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "es:CreateApplication",
                "es:DeleteApplication",
                "es:GetApplication",
                "es:ListApplications",
                "es:UpdateApplication",
                "es:AddTags",
                "es:ListTags",
                "es:RemoveTags",
                "aoss:APIAccessAll",
                "es:ESHttp*",
                "opensearch:StartDirectQuery",
                "opensearch:GetDirectQuery",
                "opensearch:CancelDirectQuery",
                "opensearch:GetDirectQueryResult",
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "es:DescribeDomain",
                "es:DescribeDomains",
                "es:ListDomainNames",
                "es:GetDirectQueryDataSource",
                "es:ListDirectQueryDataSources"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService"
        }
    ]
}
```

------

### 建立使用 IAM Identity Center 身分驗證之應用程式的許可 （選用）
<a name="prerequisite-permissions-idc"></a>

根據預設，儀表板應用程式會使用 AWS Identity and Access Management (IAM) 進行身分驗證，以管理 AWS 資源使用者的許可。不過，您可以選擇使用 IAM Identity Center 提供單一登入體驗，這可讓您使用現有的身分提供者來登入 OpenSearch UI 應用程式。在此情況下，您將在本主題稍後的程序中選取**使用 IAM Identity Center 進行身分驗證**選項，然後授予 IAM Identity Center 使用者存取 OpenSearch UI 應用程式所需的許可。)

若要建立使用 IAM Identity Center 身分驗證的應用程式，您需要下列許可。使用您的資訊取代*預留位置的值*。如有需要，請聯絡帳戶管理員尋求協助。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IDCPermissions",
            "Effect": "Allow",
            "Action": [
                "es:CreateApplication",
                "es:DeleteApplication",
                "es:GetApplication",
                "es:ListApplications",
                "es:UpdateApplication",
                "es:AddTags",
                "es:ListTags",
                "es:RemoveTags",
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "es:DescribeDomain",
                "es:DescribeDomains",
                "es:ListDomainNames",
                "es:GetDirectQueryDataSource",
                "es:ListDirectQueryDataSources",
                "sso:CreateApplication",  
                "sso:DeleteApplication",  
                "sso:PutApplicationGrant",  
                "sso:PutApplicationAccessScope",  
                "sso:PutApplicationAuthenticationMethod",  
                "sso:ListInstances",  
                "sso:DescribeApplicationAssignment",  
                "sso:DescribeApplication",  
                "sso:CreateApplicationAssignment",  
                "sso:ListApplicationAssignments",  
                "sso:DeleteApplicationAssignment",
                "sso-directory:SearchGroups",
                "sso-directory:SearchUsers",
                "sso:ListDirectoryAssociations",
                "identitystore:DescribeUser",
                "identitystore:DescribeGroup",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SLRPermission",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService"
        },
        {
            "Sid": "PassRolePermission",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/iam-role-for-identity-center"
        }
    ]
}
```

------

## 建立 OpenSearch UI 應用程式
<a name="create-application"></a>

使用以下其中一個程序建立應用程式，指定 和應用程式名稱、身分驗證方法和管理員。

**Topics**
+ [在主控台中建立使用 IAM 身分驗證的 OpenSearch UI 應用程式](#create-application-iam-authentication-console)
+ [建立在主控台中使用 AWS IAM Identity Center 身分驗證的 OpenSearch UI 應用程式](#create-application-iam-identity-center-authentication-console)
+ [建立使用 身分 AWS IAM Identity Center 驗證的 OpenSearch UI 應用程式 AWS CLI](#create-application-iam-identity-center-authentication-cli)

### 在主控台中建立使用 IAM 身分驗證的 OpenSearch UI 應用程式
<a name="create-application-iam-authentication-console"></a>

**在主控台中建立使用 IAM 身分驗證的 OpenSearch UI 應用程式**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽窗格中，選擇 **OpenSearch UI （儀表板）**。

1. 選擇**建立應用程式**。

1. 在**應用程式名稱**中，輸入應用程式的名稱。

1. 請勿選取**使用 IAM Identity Center 進行身分驗證**核取方塊。如需透過 驗證建立應用程式的相關資訊 AWS IAM Identity Center，請參閱本主題[建立在主控台中使用 AWS IAM Identity Center 身分驗證的 OpenSearch UI 應用程式](#create-application-iam-identity-center-authentication-console)稍後的 。

1. （選用） 您會自動新增為所建立應用程式的管理員。在 **OpenSearch 應用程式管理員管理**區域中，您可以將管理員許可授予其他使用者。
**注意**  
OpenSearch UI 應用程式管理員角色會授予編輯和刪除 OpenSearch UI 應用程式的權限。應用程式管理員也可以在 OpenSearch UI 應用程式中建立、編輯和刪除工作區。

   若要將管理員許可授予其他使用者，請選擇下列其中一項：
   + **授予管理員對特定使用者的許可 (**在 **OpenSearch 應用程式管理員**) 欄位中，在**屬性**快顯清單中，選取 **IAM 使用者**或 

     **AWS IAM Identity Center 使用者**，然後選擇要授予管理員許可的個別使用者。
   + **將管理員許可授予所有使用者** – 您組織或帳戶中的所有使用者都會獲得管理員許可。

1. （選用） 設定加密設定。根據預設，OpenSearch UI 中繼資料會使用 AWS 擁有的金鑰加密。若要使用您自己的客戶受管金鑰 (CMK) 進行加密，請參閱 [使用客戶受管金鑰加密 OpenSearch UI 應用程式中繼資料](application-encryption-cmk.md)。

1. （選用） 在**標籤**區域中，將一或多個標籤索引鍵名稱/值對套用至應用程式。

   標籤是您指派給資源的選用性中繼資料。標籤允許您以不同的方式 (例如用途、擁有者或環境) 將資源分類。

1. 選擇**建立**。

### 建立在主控台中使用 AWS IAM Identity Center 身分驗證的 OpenSearch UI 應用程式
<a name="create-application-iam-identity-center-authentication-console"></a>

若要建立使用 AWS IAM Identity Center 身分驗證的 OpenSearch UI 應用程式，您必須擁有 中本主題先前所述的 IAM 許可[建立使用 IAM Identity Center 身分驗證之應用程式的許可 （選用）](#prerequisite-permissions-idc)。

**在主控台中建立使用 AWS IAM Identity Center 身分驗證的 OpenSearch UI 應用程式**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽窗格中，選擇 **OpenSearch UI （儀表板）**。

1. 選擇**建立應用程式**。

1. 在**應用程式名稱**中，輸入應用程式的名稱。

1. （選用） 若要為您的組織或帳戶啟用單一登入，請執行下列動作：

   1. 選取**使用 IAM Identity Center 進行身分驗證**核取方塊，如下圖所示：  
![\[選取「使用 IAM Identity Center 驗證」方塊的「單一登入身分驗證」區域。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ui-Single-sign-on-authentication.png)

   1. 執行以下任意一項：
      + 在 **Identity Center 的 IAM 角色應用程式**清單中，選擇現有的 IAM 角色，為 IAM Identity Center 提供存取 OpenSearch UI 和相關聯資料來源所需的許可。如需角色必須擁有的許可，請參閱下一個項目符號中的政策。
      + 建立具有必要許可的新角色。使用 *IAM 使用者指南*中的下列程序搭配指定的選項來建立新的角色，以及必要的許可政策和信任政策。
        + 程序：[建立 IAM 政策 （主控台）](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/access_policies_create-console.html)

          當您遵循此程序中的步驟時，請將下列政策貼入政策編輯器 **JSON** 欄位：

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

****  

          ```
          {
              "Version":"2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Sid": "IdentityStoreOpenSearchDomainConnectivity",
                      "Effect": "Allow",
                      "Action": [
                          "identitystore:DescribeUser",
                          "identitystore:ListGroupMembershipsForMember",
                          "identitystore:DescribeGroup"
                      ],
                      "Resource": "*",
                      "Condition": { 
                          "ForAnyValue:StringEquals": {
                              "aws:CalledViaLast": "es.amazonaws.com"
                          }
                      }
                  },
                  {
                      "Sid": "OpenSearchDomain",
                      "Effect": "Allow",
                      "Action": [
                          "es:ESHttp*"
                      ],
                      "Resource": "*"
                  },
                  {
                      "Sid": "OpenSearchServerless",
                      "Effect": "Allow",
                      "Action": [
                          "aoss:APIAccessAll"
                      ],
                      "Resource": "*"
                  }
              ]
          }
          ```

------
        + 程序：[使用自訂信任政策建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)

          當您遵循此程序中的步驟時，請將**自訂信任政策**方塊中的預留位置 JSON 取代為下列項目：
**提示**  
如果您要將信任政策新增至現有角色，請在角色的**信任關係**索引標籤上新增政策。

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

****  

          ```
          {
              "Version":"2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "application.opensearchservice.amazonaws.com"
                      },
                      "Action": "sts:AssumeRole"
                  },
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "application.opensearchservice.amazonaws.com"
                      },
                      "Action": "sts:SetContext",
                      "Condition": {
                          "ForAllValues:ArnEquals": {
                          "sts:RequestContextProviders": "arn:aws:iam::123456789012:oidc-provider/portal.sso.us-east-1.amazonaws.com/apl/application-id"
                          }
                      }
                  }
              ]
          }
          ```

------

   1. 如果您的組織或帳戶中已建立 IAM Identity Center 執行個體，主控台會報告 Amazon OpenSearch Dashboards 已連線至 IAM Identity Center 的組織執行個體，如下圖所示。  
![\[連線至 IAM Identity Center 帳戶執行個體的「Amazon OpenSearch Dashboard」區域會顯示現有 IAM Identity Center 帳戶執行個體的 URL。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ui-connected-instance.png)

      如果您的組織或帳戶中尚無法使用 IAM Identity Center，則您或具有必要許可的管理員可以建立組織執行個體或帳戶執行個體。**將 Amazon OpenSearch Dashboards 連線至 IAM Identity Center** 區域為兩者提供選項，如下圖所示：  
![\[「將 Amazon OpenSearch Dashboards 連接至 IAM Identity Center」區域提供用於建立組織執行個體或帳戶執行個體的按鈕。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ui-no-connected-instance.png)

       在這種情況下，您可以在 IAM Identity Center 中建立帳戶執行個體進行測試，或請求管理員在 IAM Identity Center 中建立組織執行個體。如需詳細資訊，請參閱《*AWS IAM Identity Center 使用者指南*》中的以下主題：
**注意**  
如果您想要在 AWS 區域 與 IAM Identity Center 組織執行個體不同的 中建立 OpenSearch UI 應用程式，請參閱[跨多個 使用 IAM Identity Center AWS 區域](https://docs.aws.amazon.com/singlesignon/latest/userguide/multi-region-iam-identity-center.html)。
      + [IAM Identity Center 的組織執行個體](https://docs.aws.amazon.com/singlesignon/latest/userguide/organization-instances-identity-center.html)
      + [IAM Identity Center 的帳戶執行個體](https://docs.aws.amazon.com/singlesignon/latest/userguide/account-instances-identity-center.html)。
      + [啟用 AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)

1. （選用） 您會自動新增為所建立應用程式的管理員。在 **OpenSearch 應用程式管理員管理**區域中，您可以將管理員許可授予其他使用者，如下圖所示：  
![\[「OpenSearch 應用程式管理員管理」區域提供選項，授予管理員許可以選取使用者或所有使用者。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ui-admins-management.png)
**注意**  
OpenSearch UI 應用程式管理員角色會授予編輯和刪除 OpenSearch UI 應用程式的權限。應用程式管理員也可以在 OpenSearch UI 應用程式中建立、編輯和刪除工作區。

   若要將管理員許可授予其他使用者，請選擇下列其中一項：
   + **授予管理員對特定使用者的許可 (**在 **OpenSearch 應用程式管理員**欄位中，在**屬性**快顯清單中，選取 **IAM 使用者**或 

     **AWS IAM Identity Center 使用者**，然後選擇要授予管理員許可的個別使用者。
   + **將管理員許可授予所有使用者** – 您組織或帳戶中的所有使用者都會獲得管理員許可。

1. （選用） 在**標籤**區域中，將一或多個標籤索引鍵名稱/值對套用至應用程式。

   標籤是您指派給資源的選用性中繼資料。標籤允許您以不同的方式 (例如用途、擁有者或環境) 將資源分類。

1. 選擇**建立**。

### 建立使用 身分 AWS IAM Identity Center 驗證的 OpenSearch UI 應用程式 AWS CLI
<a name="create-application-iam-identity-center-authentication-cli"></a>

若要建立使用 身分 AWS IAM Identity Center 驗證的 OpenSearch UI 應用程式 AWS CLI，請使用 [create-application](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-application.html) 命令搭配下列選項：
+ `--name` – 應用程式的名稱。
+ `--iam-identity-center-options` – （選用） OpenSearch 將用於身分驗證和存取控制的 IAM Identity Center 執行個體和 IAM 角色。

使用您的資訊取代*預留位置的值*。

```
aws opensearch create-application \
    --name application-name \
    --iam-identity-center-options "
          {
          \"enabled\":true,
          \"iamIdentityCenterInstanceArn\":\"arn:aws:sso:::instance/sso-instance\",
          \"iamRoleForIdentityCenterApplicationArn\":\"arn:aws:iam::account-id:role/role-name\"
          }
    "
```

## 管理應用程式管理員
<a name="managing-application-administrators"></a>

OpenSearch UI 應用程式管理員是已定義的角色，具有編輯和刪除 OpenSearch UI 應用程式的權限。

根據預設，身為 OpenSearch UI 應用程式的建立者，您是 OpenSearch UI 應用程式的第一個管理員。

### 使用主控台管理 OpenSearch UI 管理員
<a name="managing-application-administrators-console"></a>

您可以在應用程式建立工作流程期間或在應用程式建立之後的**編輯**頁面中 AWS 管理主控台，將其他管理員新增至 中的 OpenSearch UI 應用程式。

OpenSearch UI 應用程式管理員角色會授予編輯和刪除 OpenSearch UI 應用程式的權限。應用程式管理員也可以在 OpenSearch UI 應用程式中建立、編輯和刪除工作區。

在應用程式詳細資訊頁面上，您可以搜尋 IAM 主體的 Amazon Resource Name (ARN)，或搜尋 IAM Identity Center 使用者的名稱。

**使用主控台管理 OpenSearch UI 管理員**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽窗格中，選擇 **OpenSearch UI （儀表板）**。

1. 在 **OpenSearch 應用程式**區域中，選擇現有應用程式的名稱。

1. 選擇 **Edit (編輯)**

1. 若要將管理員許可授予其他使用者，請選擇下列其中一項：
   + **授予管理員對特定使用者的許可 (**在 **OpenSearch 應用程式管理員**) 欄位中，在**屬性**快顯清單中，選取 **IAM 使用者**或 

     **AWS IAM Identity Center 使用者**，然後選擇要授予管理員許可的個別使用者。
   + **將管理員許可授予所有使用者** – 您組織或帳戶中的所有使用者都會獲得管理員許可。

1. 選擇**更新**。

您可以移除其他管理員，但每個 OpenSearch UI 應用程式必須至少保留一個管理員。

### 使用 管理 OpenSearch UI 管理員 AWS CLI
<a name="managing-application-administrators-cli"></a>

您可以使用 建立和更新 OpenSearch UI 應用程式管理員 AWS CLI。

#### 使用 建立 OpenSearch UI 管理員 AWS CLI
<a name="creating-application-administrators-cli"></a>

以下是在建立 OpenSearch UI 應用程式時，將 IAM 主體和 IAM Identity Center 使用者新增為管理員的範例。

##### 範例 1：建立 OpenSearch UI 應用程式，將 IAM 使用者新增為管理員
<a name="add-admin-examples-iam-user-cli"></a>

執行下列命令來建立 OpenSearch UI 應用程式，將 IAM 使用者新增為管理員。使用您的資訊取代*預留位置的值*。

```
aws opensearch create-application \
    --name application-name \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"arn:aws:iam::account-id:user/user-id\"
        }
    "
```

##### 範例 2：建立 OpenSearch UI 應用程式以啟用 IAM Identity Center，並將 IAM Identity Center 使用者 ID 新增為 OpenSearch UI 應用程式管理員
<a name="add-admin-examples-iam-identify-center-user-cli"></a>

執行下列命令來建立 OpenSearch UI 應用程式，以啟用 IAM Identity Center，並將 IAM Identity Center 使用者 ID 新增為 OpenSearch UI 應用程式管理員。使用您的資訊取代*預留位置的值*。

`key` 指定要設定的組態項目，例如 OpenSearch UI 應用程式的管理員角色。有效值包括 `opensearchDashboards.dashboardAdmin.users` 與 `opensearchDashboards.dashboardAdmin.groups`。

*xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx* 代表指派給金鑰的值，例如 IAM 使用者的 Amazon Resource Name (ARN)。

```
aws opensearch create-application \
    --name myapplication \
    --iam-identity-center-options "
        {
        \"enabled\":true,
        \"iamIdentityCenterInstanceArn\":\"arn:aws:sso:::instance/ssoins-instance-id\",
        \"iamRoleForIdentityCenterApplicationArn\":\"arn:aws:iam::account-id:role/role-name\"
        }
    " \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"
        }
    "
```

#### 使用 更新 OpenSearch UI 管理員 AWS CLI
<a name="updating-application-administrators-cli"></a>

以下是更新指派為現有 OpenSearch 應用程式管理員的 IAM 主體和 IAM Identity Center 使用者的範例。

##### 範例 1：將 IAM 使用者新增為現有 OpenSearch 應用程式的管理員
<a name="update-admin-examples-iam-user-cli"></a>

執行下列命令來更新 OpenSearch UI 應用程式，以將 IAM 使用者新增為管理員。使用您的資訊取代*預留位置的值*。

```
aws opensearch update-application \
    --id myapplication \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"arn:aws:iam::account-id:user/user-id\"
        }
    "
```

##### 範例 2：更新 OpenSearch UI 應用程式，將 IAM Identity Center 使用者 ID 新增為 OpenSearch UI 應用程式管理員
<a name="update-admin-examples-iam-identify-center-user-cli"></a>

執行下列命令以更新 OpenSearch UI 應用程式，將 IAM Identity Center 使用者 ID 新增為 OpenSearch UI 應用程式管理員。使用您的資訊取代*預留位置的值*。

`key` 指定要設定的組態項目，例如 OpenSearch UI 應用程式的管理員角色。有效值包括 `opensearchDashboards.dashboardAdmin.users` 與 `opensearchDashboards.dashboardAdmin.groups`。

*xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx* 代表指派給金鑰的值，例如 IAM 使用者的 Amazon Resource Name (ARN)。

```
aws opensearch update-application \
    --id myapplication \
    --app-configs "
        {
        \"key\":\"opensearchDashboards.dashboardAdmin.users\",
        \"value\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"
        }
    "
```

# Amazon OpenSearch Service 中的代理式 AI
<a name="application-ai-assistant"></a>

OpenSearch UI 包含一組代理式 AI 功能，旨在簡化操作分析並加速工程和支援團隊的事件調查。

在 OpenSearch UI 應用程式的每個頁面上，選擇**詢問 AI** 按鈕以開啟客服人員聊天。客服人員聊天了解您正在檢視的頁面內容、使用客服人員工具來分析基礎資料、更新查詢以在探索中顯示結果，以及以清晰且準確的方式回答問題。當複雜的根本原因分析需要更深入的調查時，您可以觸發調查代理程式自動規劃、執行和反映多步驟工作流程，提供由資料證據支援的結構化假設。支援這兩個代理程式功能是代理程式記憶體，這是在對話或調查中保留內容的記憶體層，因此您可以繼續在不同的 Web 工作階段中使用相同的一致內容來詢問後續問題。

![\[OpenSearch UI 中的探索頁面顯示客服人員聊天從自然語言輸入「尋找延遲大於 10 秒的所有請求」產生 PPL 查詢，其中 Ask AI 面板顯示查詢說明和開始調查按鈕。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/agentic-chat-discover-ppl.png)


## 關鍵功能
<a name="application-ai-assistant-key-capabilities"></a>
+ **客服人員聊天** – 客服人員聊天在 OpenSearch UI 每個頁面上的詢問 AI 功能中內嵌，了解您目前的內容並呼叫工具來分析資料，以最佳地回答問題。在探索上，在聊天界面中輸入自然語言來產生和重複管道處理語言 (PPL) 查詢，因此您不需要是 PPL 中的專家，就能取得可行的洞見。您也可以直接從視覺效果開始對話，其中客服人員聊天可以識別圖形中的異常、與基礎資料相互關聯，並產生分析。需要複雜的根本原因分析時，請使用`/investigate`斜線命令，根據持續對話或新指示啟動調查代理程式。
+ **調查代理**程式 – 您透過在聊天`/investigate`中輸入或選擇功能頁面上的**開始調查**按鈕來啟用的目標驅動型深入研究代理程式。輸入調查目標，例如「尋找此延遲尖峰的根本原因」。Investigation Agent 會使用您的資料和陳述的目標自動規劃、執行查詢和分析，並透過多步驟工作流程進行反映。當調查完成時，通常在幾分鐘內，它會產生按可能性排名的結構化假設，每個假設都由資料證據提供支援。它提供其推理的每個步驟的完整透明度，以便您可以驗證和信任結果。
+ **代理程式記憶體** – 一種服務管理的記憶體層，可在對話或調查中保留內容，讓您可以繼續在一致的內容中提出問題或調查。代理程式記憶體可讓代理程式聊天和調查代理程式在整個工作階段中維持連續性。

## 定價和用量限制
<a name="application-ai-assistant-pricing"></a>

代理式 AI 功能可免費使用。以字符為基礎的用量限制適用於每個帳戶，以防止濫用。

代理式 AI 功能在 Amazon Bedrock 中使用基礎模型。所有 Amazon Bedrock 安全和資料控管組態都適用於代理式 AI 功能。如需詳細資訊，請參閱 [Amazon Bedrock 中的資料保護](https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html)。

## 安全
<a name="application-ai-assistant-security"></a>

代理式 AI 功能會在您現有的安全架構中運作，不會略過或覆寫任何設定的存取控制。當您與客服人員聊天互動或啟動調查客服人員時，AI 功能會使用您目前的 IAM 或 IAM Identity Center 登入資料進行驗證，並繼承所有相關許可。AI 助理只能查詢您已透過現有角色型存取控制 (RBAC) 政策明確存取的資料來源、索引和視覺效果。

如果您的 OpenSearch 網域實作具有欄位層級或文件層級安全性的精細存取控制，則 AI 會遵守這些限制，且無法從超出您許可範圍的限制欄位或文件顯示資料。同樣地，代理聊天所產生的任何 PPL 查詢或在調查期間執行的資料擷取都會使用您的使用者內容執行，以確保所有設定的安全政策都保持完全強制執行。

此許可繼承模型可確保啟用 AI 功能不會產生新的安全漏洞，或要求管理員管理個別的 AI 互動許可結構。

## 啟用和停用代理式 AI 功能
<a name="application-ai-assistant-enable-disable"></a>

除非您已在任何 OpenSearch 網域中明確停用 AI 功能，否則代理程式 AI 功能會自動為新的 OpenSearch UI 應用程式和現有應用程式啟用。

若要啟用或停用 AI 功能，您可以使用 AWS 管理主控台 或 API：
+ **主控台** – 導覽至 OpenSearch UI 應用程式的詳細資訊頁面，並從該處更新 AI 功能。  
![\[主控台中的管理 AI 助理功能頁面，顯示啟用聊天機器人和客服人員調查功能核取方塊和更新按鈕。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/agentic-ai-manage-features.png)
+ **API** – 使用 [RegisterCapability](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_RegisterCapability.html) API 來啟用 AI 功能，或使用 [DeregisterCapability](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_DeregisterCapability.html) API 來停用它們。

## 區域可用性
<a name="application-ai-assistant-regions"></a>

代理式 AI 功能提供如下 AWS 區域：
+ 亞太區域 (東京) – ap-northeast-1
+ 亞太區域 (雪梨) – ap-southeast-2
+ 歐洲 (法蘭克福) – eu-central-1
+ 歐洲 (斯德哥爾摩) – eu-north-1
+ 歐洲 (西班牙) – eu-south-2
+ 歐洲 (愛爾蘭) – eu-west-1
+ 美國東部 (維吉尼亞北部) – us-east-1
+ 美國東部 (俄亥俄) – us-east-2
+ 美國西部 (奧勒岡) – us-west-2

**Topics**
+ [關鍵功能](#application-ai-assistant-key-capabilities)
+ [定價和用量限制](#application-ai-assistant-pricing)
+ [安全](#application-ai-assistant-security)
+ [啟用和停用代理式 AI 功能](#application-ai-assistant-enable-disable)
+ [區域可用性](#application-ai-assistant-regions)
+ [Amazon OpenSearch Service 中的客服人員聊天](application-agentic-chat.md)
+ [Amazon OpenSearch Service 中的調查代理程式](application-investigation-agent.md)
+ [Amazon OpenSearch Service 中的代理程式記憶體](application-agentic-memory.md)

# Amazon OpenSearch Service 中的客服人員聊天
<a name="application-agentic-chat"></a>

Agentic Chat 是內嵌在 OpenSearch UI 每個頁面中的 AI 助理。選擇**詢問 AI** 按鈕以開啟聊天面板，您可以在其中詢問有關資料的問題、產生查詢，以及啟動調查。客服人員聊天了解您在探索和調查中檢視的頁面內容，並使用客服人員工具來分析基礎資料。

![\[OpenSearch UI 中的探索頁面，右上角反白顯示「詢問 AI」按鈕。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/agentic-chat-ask-ai-button.png)


當您開啟聊天面板時，客服人員聊天會提供可協助您入門的選項：詢問有關資料的問題、調查問題或解釋概念。如果您之前已開始對話，當您在頁面之間導覽時，它仍會在聊天面板中顯示，以便您可以從您離開的地方繼續。或者，選擇右上角**的新聊天**按鈕以開始新的對話。

![\[客服人員聊天面板顯示 AI 助理歡迎訊息，其中包含可詢問資料相關問題、調查問題或解釋概念的選項。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/agentic-chat-ask-ai-panel.png)


## 搭配 Discover 使用客服人員聊天
<a name="application-agentic-chat-discover"></a>

在可觀測性工作區的探索頁面上，您可以在聊天介面中輸入自然語言來產生 PPL 查詢。客服人員聊天會將您的問題翻譯為 PPL、執行查詢，並直接在探索檢視中顯示結果。您不需要是 PPL 的專家，即可從資料中取得可行的洞見。

若要精簡產生的查詢，請以自然語言詢問後續問題，例如「新增狀態碼 500 的篩選條件」。客服人員聊天了解目前查詢的內容，並據此進行修改。您也可以要求 調整彙總、變更時間範圍，或將其他欄位新增至結果。每個反覆運算都會使用新的查詢結果更新探索檢視。

## 將客服人員聊天與視覺化搭配使用
<a name="application-agentic-chat-visualizations"></a>

您可以直接從視覺化開始與客服人員聊天對話。在視覺化面板上開啟內容選單，然後選擇**詢問 AI**。客服人員聊天會分析視覺化效果、識別圖形中的異常、與基礎資料建立關聯，並產生分析。

![\[OpenSearch UI 中的視覺效果，顯示內容選單中的詢問 AI 選項，其中客服人員聊天面板會分析視覺效果。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/agentic-chat-visualization.png)


## 從聊天開始調查
<a name="application-agentic-chat-investigation"></a>

需要複雜的根本原因分析時，您可以直接從客服人員聊天啟動調查客服人員。在聊天輸入中使用`/investigate`斜線命令，或在功能頁面上選擇**開始調查**按鈕。

如需調查代理程式的詳細資訊，請參閱 [Amazon OpenSearch Service 中的調查代理程式](application-investigation-agent.md)。

## 支援的工具
<a name="application-agentic-chat-tools"></a>

客服人員聊天使用下列工具來分析您的資料並回答問題。若要查看最新可用工具up-to-date清單，請在聊天界面中輸入「您可以使用哪些工具」。

**前端工具**  
這些工具會更新 OpenSearch UI：
+ `create_investigation` – 建立新的客服人員調查筆記本，其中包含目標、症狀、索引和時間範圍等詳細資訊。
+ `execute_ppl_query` – 針對目前的資料集執行 PPL 查詢，並在探索頁面中顯示結果。
+ `update_time_range` – 更新目前探索頁面上的全域時間範圍篩選條件 （例如，「過去 24 小時」或「上週」)。

**後端工具**  
這些工具會直接與 OpenSearch 資料和 APIs互動：
+ `SearchIndexTool` – 使用 DSL 查詢搜尋索引。
+ `MsearchTool` – 在單一請求中執行多個搜尋操作。
+ `CountTool` – 傳回符合查詢的文件數量。
+ `ExplainTool` – 說明文件符合或不符合查詢的原因。
+ `ListIndexTool` – 列出具有選用詳細資訊的叢集中的索引。
+ `IndexMappingTool` – 擷取索引映射和設定。
+ `GetShardsTool` – 取得索引的碎片資訊。
+ `ClusterHealthTool` – 傳回叢集運作狀態資訊。
+ `LogPatternAnalysisTool` – 分析日誌模式、比較時間範圍或執行追蹤序列分析。
+ `MetricChangeAnalysisTool` – 比較兩個時間範圍之間的數值欄位百分位數分佈。
+ `DataDistributionTool` – 分析目標時間範圍中的欄位值分佈，選擇性與基準比較。
+ `GenericOpenSearchApiTool` – 直接呼叫任何 OpenSearch API 端點的彈性工具。

# Amazon OpenSearch Service 中的調查代理程式
<a name="application-investigation-agent"></a>

調查代理程式是 OpenSearch UI 中的目標驅動型深入研究代理程式，可代表您自動調查複雜的問題。它計劃使用您的資料和陳述的目標，執行查詢和分析，並透過多步驟工作流程進行反射。當調查完成時，通常在幾分鐘內，它會產生按可能性排名的結構化假設，每個假設都由資料證據提供支援。它提供其推理的每個步驟的完整透明度，以便您可以驗證和信任結果。

## 開始調查
<a name="application-investigation-agent-start"></a>

您可以透過兩種方式開始調查：
+ 在探索、視覺化或其他支援的功能頁面中，選擇**開始調查**按鈕。出現一個對話方塊，您可以在其中輸入您的調查目標，並從建議的範本中選擇，例如「根本原因分析」或「效能問題」。
+ 在客服人員聊天中，輸入包含調查目標的聊天輸入中的`/investigate`斜線命令。

![\[開始調查對話方塊顯示調查目標的文字欄位，以及根本原因分析和效能問題的建議範本。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/investigation-agent-start.png)


如需客服人員聊天的詳細資訊，請參閱 [Amazon OpenSearch Service 中的客服人員聊天](application-agentic-chat.md)。

## 檢閱調查結果
<a name="application-investigation-agent-results"></a>

調查完成時，調查客服人員會呈現具有可信度層級和支援證據的主要假設。結果頁面會顯示採取的調查步驟、依重要性排名的相關調查結果，以及替代假設。

![\[調查結果頁面顯示接受和排除選項的主要假設、依重要性排名的相關調查結果，以及替代假設。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/investigation-agent-results.png)


您可以檢閱每個假設背後的問題清單，然後選擇**接受**來確認假設，或選擇**排除**來拒絕。也有可能性較低的替代假設可供檢閱。如果符合您的評估，您可以選擇任何替代假設做為最終結論。

## 重新調查
<a name="application-investigation-agent-reinvestigate"></a>

如果調查結果需要更多釐清，或者如果調查客服人員判斷可用資料集無法回答調查問題，您可以使用**重新調查**選項來調整和重新執行調查。選擇**重新調查**以編輯初始目標、調整時間範圍，並選擇性地將現有的假設和調查結果帶入新的調查中。

![\[重新調查問題對話方塊，顯示編輯初始目標、調整時間範圍，並將現有假設和調查結果帶入新調查的選項。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/investigation-agent-reinvestigate.png)


# Amazon OpenSearch Service 中的代理程式記憶體
<a name="application-agentic-memory"></a>

Agentic Memory 是一種服務受管的記憶體層，可支援 Agentic Chat 和 Investigation Agent。它會在您的對話或調查中保留內容，以便您在不同的功能頁面、瀏覽器索引標籤和頁面重新整理之間擁有一致的體驗。代理程式記憶體會自動運作，不需要使用者組態。

代理程式記憶體建置在 OpenSearch 代理程式記憶體架構上。記憶體儲存體會依使用者 ID 隔離以進行隱私權保護。

## 資料保護
<a name="application-agentic-memory-data-protection"></a>

代理程式記憶體可免費使用。存放在代理記憶體中的客戶資料會使用服務受管金鑰加密。如果您為 OpenSearch UI 應用程式啟用客戶受管金鑰 (CMK) 加密，您的記憶體資料將改為使用 CMK 加密。記憶體存放在服務管理的 Amazon OpenSearch Serverless 集合中。

如需 CMK 加密的詳細資訊，請參閱 [使用客戶受管金鑰加密 OpenSearch UI 應用程式中繼資料](application-encryption-cmk.md)。

## 限制
<a name="application-agentic-memory-limitations"></a>

代理記憶體無法保留不同對話執行緒的內容。

# 使用客戶受管金鑰加密 OpenSearch UI 應用程式中繼資料
<a name="application-encryption-cmk"></a>

視覺化資產和組態會儲存為 OpenSearch UI 應用程式的中繼資料。這包括已儲存的查詢、視覺化和儀表板。來自相關聯資料來源的資料不會存放在中繼資料中。如需有關加密資料來源中資料的資訊，請參閱 [Amazon OpenSearch Service for OpenSearch 網域中的資料保護](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-protection.html)和 [Amazon OpenSearch Serverless 中的無伺服器集合中的加密](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-encryption.html)。 OpenSearch 

您的 OpenSearch UI 中繼資料受到靜態加密保護。這可防止未經授權的存取。加密會使用 AWS Key Management Service (AWS KMS) 來存放和管理加密金鑰。根據預設，OpenSearch UI 中繼資料會使用 AWS 擁有的金鑰加密。

您也可以使用客戶受管金鑰 (CMK) 功能來管理您自己的加密金鑰。這可協助您符合法規和合規要求。若要使用 CMK，您必須建立新的 OpenSearch UI 應用程式，並在建立程序中啟用 CMK。目前不支援將現有的 OpenSearch UI 應用程式從 AWS 擁有的金鑰更新為 CMK。

何時使用客戶受管金鑰：
+ 您的組織具有金鑰管理的法規合規要求
+ 您需要加密金鑰使用的稽核線索
+ 您想要控制金鑰輪換排程
+ 您需要與現有的金鑰管理工作流程整合

當您使用客戶受管金鑰時，您可以完全控制金鑰。這包括能夠：
+ 建立和維護金鑰政策
+ 建立和維護 IAM 政策和授予
+ 啟用和停用金鑰
+ 輪換金鑰的密碼編譯材料
+ 將標籤新增至金鑰
+ 建立金鑰別名
+ 排程要刪除的金鑰

**注意**  
客戶受管金鑰必須與 OpenSearch UI 應用程式位於相同的 AWS 區域 中。您無法使用不同區域的金鑰。

**Topics**
+ [使用客戶受管金鑰的先決條件](#application-encryption-cmk-prerequisites)
+ [使用 主控台建立具有客戶受管金鑰加密的應用程式](#application-encryption-cmk-create-console)
+ [使用 建立具有客戶受管金鑰加密的應用程式 AWS CLI](#application-encryption-cmk-create-cli)
+ [監控客戶受管金鑰用量](#application-encryption-cmk-monitoring)
+ [更新加密設定](#application-encryption-cmk-update)

## 使用客戶受管金鑰的先決條件
<a name="application-encryption-cmk-prerequisites"></a>

您必須先在其中建立對稱加密金鑰，才能使用客戶受管金鑰來加密 OpenSearch UI 應用程式中繼資料 AWS KMS。如需建立金鑰的指示，請參閱《 *AWS KMS 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

客戶受管金鑰的金鑰政策必須授予 OpenSearch UI 許可才能使用金鑰。使用下列金鑰政策，將*預留位置值*取代為您自己的資訊：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOpenSearchUIToUseKey",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "application.opensearchservice.amazonaws.com"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministration",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
```

政策包含兩個陳述式：
+ 第一個陳述式允許 OpenSearch UI 使用 金鑰進行加密操作。
+ 第二個陳述式可讓 中的使用者 AWS 帳戶 管理金鑰。這包括更新金鑰政策、啟用或停用金鑰，以及排程刪除金鑰的許可。您可以將根主體取代為特定的 IAM 使用者或角色，以進一步限制這些許可。

如需金鑰政策的詳細資訊，請參閱《 *AWS KMS 開發人員指南*》中的[在 中使用金鑰政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 使用 主控台建立具有客戶受管金鑰加密的應用程式
<a name="application-encryption-cmk-create-console"></a>

當您在主控台中建立 OpenSearch UI 應用程式時，您可以指定客戶受管金鑰來加密應用程式的中繼資料。

**使用主控台建立具有客戶受管金鑰加密的 OpenSearch UI 應用程式**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽窗格中，選擇 **OpenSearch UI （儀表板）**。

1. 選擇**建立應用程式**。

1. 在**應用程式名稱**中，輸入應用程式的名稱。

1. 視需要設定身分驗證和管理員設定。如需詳細資訊，請參閱[Amazon OpenSearch Service 中的 OpenSearch 使用者介面入門](application-getting-started.md)。

1. 在**加密**區段中，針對**靜態加密**，選擇**使用客戶受管金鑰**。

1. 從清單中選擇現有的客戶受管金鑰，或選擇**建立金鑰**以建立新的金鑰 AWS KMS。
**注意**  
金鑰必須與您建立的應用程式 AWS 區域 位於相同的 中。

1. （選用） 將標籤新增至應用程式。

1. 選擇**建立**。

## 使用 建立具有客戶受管金鑰加密的應用程式 AWS CLI
<a name="application-encryption-cmk-create-cli"></a>

若要使用 建立具有客戶受管金鑰加密的 OpenSearch UI 應用程式 AWS CLI，請使用 [create-application](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-application.html) 命令搭配 `--kms-key-arn` 參數。

使用您的資訊取代*預留位置的值*。

```
aws opensearch create-application \
    --name my-application \
    --kms-key-arn arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
```

如果您未指定 `--kms-key-arn` 參數，OpenSearch 會使用 AWS受管金鑰來加密應用程式的中繼資料。

## 監控客戶受管金鑰用量
<a name="application-encryption-cmk-monitoring"></a>

當您搭配 OpenSearch UI 應用程式使用客戶受管金鑰時， 會在 AWS CloudTrail 日誌中 AWS KMS 記錄金鑰的每次使用。您可以使用這些日誌來監控金鑰的使用方式和時間。日誌會顯示哪些使用者或服務存取了 金鑰。

AWS AWS KMS 每年會自動輪換客戶受管金鑰。您也可以視需要手動輪換金鑰。如需金鑰輪換的詳細資訊，請參閱《 *AWS KMS 開發人員指南*》中的[輪換 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

如需監控金鑰用量的詳細資訊，請參閱《 *AWS KMS 開發人員指南*》中的[使用 記錄 AWS KMS API 呼叫 AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)。

**注意**  
使用客戶受管金鑰會產生 AWS KMS 費用。費用是根據儲存的 API 請求和金鑰數量而定。如需定價詳細資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。

## 更新加密設定
<a name="application-encryption-cmk-update"></a>

建立 OpenSearch UI 應用程式後，您無法變更其加密設定。如果您需要使用不同的客戶受管金鑰，您必須建立新的應用程式。如果您需要在 AWS受管金鑰和客戶受管金鑰之間切換，您還必須使用所需的加密設定建立新的應用程式。

**重要**  
在您停用或刪除客戶受管金鑰之前，請考慮下列事項：  
如果您停用金鑰，應用程式將無法存取其加密的中繼資料。您必須重新啟用相同的金鑰才能還原存取權。
如果您刪除金鑰，應用程式儲存的物件將永久無法存取。這包括查詢、視覺化和儀表板。無法刪除已刪除的金鑰。
我們建議您在對金鑰狀態進行任何變更之前，先記錄您的金鑰 ARN。

**後續步驟**  
為您的應用程式設定 CMK 加密之後，您可以：
+ 將資料來源與您的應用程式建立關聯。如需詳細資訊，請參閱[管理資料來源關聯和虛擬私有雲端存取許可](application-data-sources-and-vpc.md)。
+ 為您的團隊建立工作區。如需詳細資訊，請參閱[使用 Amazon OpenSearch Service 工作區](application-workspaces.md)。
+ 設定 AWS CloudTrail 監控金鑰用量。如需詳細資訊，請參閱[監控客戶受管金鑰用量](#application-encryption-cmk-monitoring)。

# 使用 啟用 SAML 聯合 AWS Identity and Access Management
<a name="application-enable-SAML-identity-federation"></a>

OpenSearch UI 支援安全性聲明標記語言 2.0 (SAML)，這是許多身分提供者使用的開放標準。這會啟用與 AWS Identity and Access Management (IAM) 的聯合身分。透過此支援，您帳戶或組織中的使用者可以透過擔任 IAM 角色直接存取 OpenSearch UI。您可以為您的最終使用者建立身分提供者起始 (IdP) 單一登入體驗，他們可以在外部身分提供者中進行身分驗證，並直接路由到 OpenSearch UI 中定義的頁面。您也可以透過設定最終使用者或群組來擔任具有不同許可的不同 IAM 角色，以存取 OpenSearch UI 和相關聯的資料來源，來實作精細存取控制。

本主題提供設定搭配 OpenSearch UI 使用 SAML 的step-by-step說明。在這些程序中，我們使用設定 Okta 身分和存取管理應用程式的步驟做為範例。其他身分提供者的組態步驟類似，例如 Azure Active Directory 和 Ping。

**Topics**
+ [步驟 1：設定身分提供者應用程式 (Okta)](#SAML-identity-federation-step-1)
+ [步驟 2：設定 Okta 的 AWS 組態](#SAML-identity-federation-step-2)
+ [步驟 3：在 IAM 中建立 Amazon OpenSearch Service 存取政策](#SAML-identity-federation-step-3)
+ [步驟 4：使用 SAML 驗證身分提供者起始的單一登入體驗](#SAML-identity-federation-step-4)
+ [步驟 5：設定以 SAML 屬性為基礎的精細存取控制](#SAML-identity-federation-step-5)

## 步驟 1：設定身分提供者應用程式 (Okta)
<a name="SAML-identity-federation-step-1"></a>

若要搭配 OpenSearch UI 使用 SAML，第一步是設定您的身分提供者。

**任務 1：建立 Okta 使用者**

1. 以具有管理權限的使用者身分登入您的 Okta 組織，網址為 https：//[https://login.okta.com/](https://login.okta.com/)。

1. 在管理員主控台的導覽窗格中的**目錄**下，選擇**人物**。

1. 選擇**新增人員**。

1. 針對**名字**，輸入使用者的名字。

1. 針對**姓氏**，輸入使用者的姓氏。

1. 針對**使用者名稱**，以電子郵件格式輸入使用者的使用者名稱。

1. 選擇**我將會設定密碼**並輸入密碼 

1. （選用） 如果您不希望**使用者在第一次登入時變更密碼**，請清除使用者必須在第一次登入時變更密碼方塊。

1. 選擇**儲存**。

**任務 2：建立和指派群組**

1. 以具有管理權限的使用者身分登入您的 Okta 組織，網址為 https：//[https://login.okta.com/](https://login.okta.com/)。

1. 在管理員主控台的導覽窗格中的**目錄**下，選擇**群組**。

1. 選擇 **Add group (新增群組)**。

1. 輸入群組名稱，然後選擇**儲存**。

1. 選擇新建立的群組，然後選擇**指派人員**。

1. 選擇加號 (**\$1**)，然後選擇**完成**。

1. （選用） 重複步驟 1–6 以新增更多群組。

**任務 3：建立 Okta 應用程式**

1. 以具有管理權限的使用者身分登入您的 Okta 組織，網址為 https：//[https://login.okta.com/](https://login.okta.com/)。

1. 在管理員主控台的導覽窗格中**的應用程式**下，選擇**應用程式**。

1.  選擇 **Create App Integration** (建立應用程式整合)。

1. 選擇 SAML 2.0 作為登入方法，然後選擇**下一步**。

1.  輸入應用程式整合的名稱 （例如 **OpenSearch\$1UI**)，然後選擇**下一步**。

1. 在應用程式中輸入下列值；您不需要變更其他值：

   1.  1. 在**單一登入 URL **中，輸入 **https://signin.aws.amazon.com/saml** 表示商業 AWS 區域，或輸入您區域特定的 URL。

   1. 2. 針對**對象 URI (SP 實體 ID)**，輸入 **urn:amazon:webservices**。

   1. 3. 針對**名稱 ID 格式**，輸入 **EmailAddress**。

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

1. 選擇**我是新增內部應用程式的 Okta 客戶**，然後選擇**這是我們建立的內部應用程式**。

1. 選擇**完成**。

1. 選擇**指派**，然後選擇**指派**。

1. 選擇**指派給群組**，然後選取您要新增的群組旁的**指派**。

1. 選擇**完成**。

**任務 4：設定 Okta 進階組態**

建立自訂 SAML 應用程式後，請完成下列步驟：

1. 以具有管理權限的使用者身分登入您的 Okta 組織，網址為 https：//[https://login.okta.com/](https://login.okta.com/)。

   在管理員主控台**的一般**區域中，選擇 **SAML 設定**下的**編輯**。

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

1. 使用格式將**預設轉送狀態**設定為 OpenSearch UI 端點：

   `https://region.console.aws.amazon.com/aos/home?region=region#opensearch/applications/application-id/redirectToDashboardURL`. 

   以下是範例：

   `https://us-east-2.console.aws.amazon.com/aos/home?region=us-east-2#opensearch/applications/abc123def4567EXAMPLE/redirectToDashboardURL` 

1. 在**屬性陳述式 （選用）** 下，新增下列屬性：

   1. 使用角色屬性，以逗號分隔格式提供 IAM **角色**和身分提供者。在稍後的步驟中，您將在設定 AWS 組態時使用相同的 IAM 角色和身分提供者。

   1. 設定 **RoleSessionName** 的 **user.login**。這是做為擔任角色時所發出臨時登入資料的識別符。

   如需參考：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/application-enable-SAML-identity-federation.html)

1. 新增屬性屬性之後，請選擇**下一步**，然後選擇**完成**。

您的屬性格式應類似於下圖所示的屬性。**預設轉送狀態**值是在您帳戶或組織中最終使用者完成 Okta 的單一登入驗證後定義登陸頁面的 URL。您可以將其設定為 OpenSearch UI 中的任何頁面，然後將該 URL 提供給其預期的最終使用者。

![\[「SAML 2.0」區域會報告應用程式的預設轉送狀態 URL 和中繼資料 URL。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ui-saml-2.0-area-okta.png)


## 步驟 2：設定 Okta 的 AWS 組態
<a name="SAML-identity-federation-step-2"></a>

完成下列任務以設定 Okta 的 AWS 組態。

**任務 1：收集 Okta 資訊**

在此步驟中，您將需要收集 Okta 資訊，以便稍後進行設定 AWS。

1. 以具有管理權限的使用者身分登入您的 Okta 組織，網址為 https：//[https://login.okta.com/](https://login.okta.com/)。

1. 在**登入**索引標籤的頁面右下角，選擇**檢視 SAML 設定指示**。

1. 請記下**身分提供者單一登入 URL **的值。您可以在連線至 SQL [Workbench/J](https://www.sql-workbench.eu/) 等任何第三方 SQL 用戶端時使用此 URL。

1. 在區塊 4 中使用身分提供者中繼資料，然後將中繼資料檔案儲存為 .xml 格式 （例如 `metadata.xml`)。

**任務 2：建立 IAM 提供者**

若要建立 IAM 提供者，請完成下列步驟：

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格的**存取管理 **下，選擇**身分提供者**。

1. 選擇 **Add provider** (新增提供者)。

1. 針對**提供者類型**選取 **SAML**。

1. 針對**提供者名稱**輸入名稱。

1. 針對**中繼資料文件**，選擇**選擇檔案**並上傳您先前下載的中繼資料檔案 (.xml)。

1. 選擇 **Add provider** (新增提供者)。

**任務 3：建立 IAM 角色**

若要建立您的 AWS Identity and Access Management 角色，請完成下列步驟：

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格的**存取管理 **下，選擇**角色**。

1. 選擇建**立角色**。

1. 針對**信任的實體類型**，選取 **SAML 2.0 聯合。**

1. 針對以 **SAML 2.0 為基礎的提供者**，選擇您先前建立的身分提供者。

1. 選取**允許程式設計和 AWS 管理主控台 存取**。

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

1. 在**許可政策**清單中，選取授予 OpenSearch Service 許可之政策的核取方塊，例如 AWS ，受管政策 **AmazonOpenSearchServiceFullAccess**。

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

1. 在**檢閱**區域中，針對**角色名稱**輸入角色的名稱，例如 **oktarole**。

1. （選用） 針對**描述**，輸入角色用途的簡短描述。

1. 選擇建**立角色**。

1. 導覽至您剛建立的角色，選擇**信任關係**索引標籤，然後選擇**編輯信任政策**。

1. 在**編輯陳述式**窗格**的新增 STS 動作**下，選取 **TagSession** 的方塊。

1. 選擇**更新政策**。

## 步驟 3：在 IAM 中建立 Amazon OpenSearch Service 存取政策
<a name="SAML-identity-federation-step-3"></a>

了解如何為 OpenSearch 存取控制設定 IAM 角色。透過 IAM 角色，您可以為 Okta 使用者群組實作精細存取控制，以存取 OpenSearch 資源。本主題示範使用兩個範例群組的 IAM 角色型組態。

------
#### [ Sample group: Alice ]

要求:

```
GET _plugins/_security/api/roles/alice-group
```

結果：

```
{
  "alice-group": {
    "reserved": false,
    "hidden": false,
    "cluster_permissions": [
      "unlimited"
    ],
    "index_permissions": [
      {
        "index_patterns": [
          "alice*"
        ],
        "dls": "",
        "fls": [],
        "masked_fields": [],
        "allowed_actions": [
          "indices_all"
        ]
      }
    ],
    "tenant_permissions": [
      {
        "tenant_patterns": [
          "global_tenant"
        ],
        "allowed_actions": [
          "kibana_all_write"
        ]
      }
    ],
    "static": false
  }
}
```

------
#### [ Sample group: Bob ]

要求:

```
GET _plugins/_security/api/roles/bob-group
```

結果：

```
{
  "bob-group": {
    "reserved": false,
    "hidden": false,
    "cluster_permissions": [
      "unlimited"
    ],
    "index_permissions": [
      {
        "index_patterns": [
          "bob*"
        ],
        "dls": "",
        "fls": [],
        "masked_fields": [],
        "allowed_actions": [
          "indices_all"
        ]
      }
    ],
    "tenant_permissions": [
      {
        "tenant_patterns": [
          "global_tenant"
        ],
        "allowed_actions": [
          "kibana_all_write"
        ]
      }
    ],
    "static": false
  }
}
```

------

您可以使用後端角色映射將 Amazon OpenSearch Service 網域角色映射至 IAM 角色，如下列範例所示：

```
{
  "bob-group": {
    "hosts": [],
    "users": [],
    "reserved": false,
    "hidden": false,
    "backend_roles": [
      "arn:aws:iam::111222333444:role/bob-group"
    ],
    "and_backend_roles": []
  },
  "alice-group": {
    "hosts": [],
    "users": [],
    "reserved": false,
    "hidden": false,
    "backend_roles": [
      "arn:aws:iam::111222333444:role/alice-group"
    ],
    "and_backend_roles": []
  }
}
```

## 步驟 4：使用 SAML 驗證身分提供者起始的單一登入體驗
<a name="SAML-identity-federation-step-4"></a>

開啟**預設轉送狀態**的 URL 以開啟 Okta 身分驗證頁面。輸入最終使用者的登入資料。您會自動重新導向至 OpenSearch UI。

您可以選擇導覽面板底部的使用者圖示來檢查目前的登入資料，如下圖所示：

![\[在 Okta「設定和設定」頁面中選擇使用者圖示會顯示目前使用者的登入資料。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ui-okta-user-icon.png)


您也可以存取導覽面板底部的開發人員工具，並在主控台中執行查詢，來驗證使用者的精細存取控制許可。以下是範例查詢。

------
#### [ Example 1: Displays information about the current user ]

要求:

```
GET _plugins/_security/api/account
```

結果：

```
{
  "user_name": "arn:aws:iam::XXXXXXXXXXXX:role/bob-group",
  "is_reserved": false,
  "is_hidden": false,
  "is_internal_user": false,
  "user_requested_tenant": null,
  "backend_roles": [
    "arn:aws:iam::XXXXXXXXXXXX:role/bob-group"
  ],
  "custom_attribute_names": [],
  "tenants": {
    "global_tenant": true,
    "arn:aws:iam::XXXXXXXXXXXX:role/bob-group": true
  },
  "roles": [
    "bob-group"
  ]
}
```

------
#### [ Example 2: Displays actions permitted for a user ]

要求:

```
GET bob-test/_search
```

結果：

```
{
  "took": 390,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "bob-test",
        "_id": "ui01N5UBCIHpjO8Jlvfy",
        "_score": 1,
        "_source": {
          "title": "Your Name",
          "year": "2016"
        }
      }
    ]
  }
}
```

------
#### [ Example 3: Displays actions not permitted for a user ]

要求:

```
GET alice-test
```

結果：

```
{
  "error": {
    "root_cause": [
      {
        "type": "security_exception",
        "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]"
      }
    ],
    "type": "security_exception",
    "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]"
  },
  "status": 403
}
```

------

## 步驟 5：設定以 SAML 屬性為基礎的精細存取控制
<a name="SAML-identity-federation-step-5"></a>

透過 Amazon OpenSearch Service，您可以將精細存取控制與 SAML 搭配使用，以動態方式將身分提供者的使用者和群組映射至 OpenSearch 精細存取控制使用者和角色。您可以將這些角色範圍限定在特定 OpenSearch 網域和無伺服器集合，並定義索引層級許可和文件層級安全性。

**注意**  
如需精細存取控制的詳細資訊，請參閱 [Amazon OpenSearch Service 中的精細存取控制](fgac.md)。

**Topics**
+ [精細存取控制的 SAML 屬性](#saml-fgac-key-attributes)
+ [任務 1：設定 Okta 進行精細存取控制](#configure-okta-fgac)
+ [任務 2：在 OpenSearch 網域中設定 SAML](#configure-opensearch-domain-fgac)
+ [任務 3：在 OpenSearch Serverless 集合中設定 SAML](#saml-configure-collections)

### 精細存取控制的 SAML 屬性
<a name="saml-fgac-key-attributes"></a>

**subjectKey**  
映射至唯一使用者屬性，例如電子郵件或使用者名稱，以識別要進行身分驗證的使用者。

**rolesKey**  
映射至 IdP 中的群組或角色屬性，以決定角色或授權許可。

### 任務 1：設定 Okta 進行精細存取控制
<a name="configure-okta-fgac"></a>

**設定 Okta 進行精細存取控制**

1. 在屬性**陳述式**區段中為 OpenSearch 使用者主體新增屬性：
   + 名稱：`UserName`
   + 值：`${user-email}`

   此屬性用作 OpenSearch 精細存取控制組態中用於身分驗證的**主體金鑰**。

1. 在群組屬性**陳述式區段中新增角色的群組屬性**：
   + 名稱：`groups`
   + 篩選條件： `OpenSearch_xxx`

   此屬性用作將**群組映射至 OpenSearch 精細存取控制角色以進行授權的角色金鑰**。 OpenSearch 

### 任務 2：在 OpenSearch 網域中設定 SAML
<a name="configure-opensearch-domain-fgac"></a>

**在 OpenSearch 網域中設定 SAML**

1. 在 AWS 管理主控台中，識別您要為 OpenSearch UI 使用者啟用精細分級存取控制的 OpenSearch Service 網域。

1. 導覽至特定網域的詳細資訊頁面。

1. 選取**安全組態**索引標籤，然後按一下**編輯**。

1. **透過 IAM Federate 展開 SAML**。

1. 輸入您在 Okta 中定義的 `roleKey` `subjectKey`和 。

1. **SelectSave 變更**。

您也可以使用 設定精細存取控制 AWS CLI。

```
aws opensearch create-domain \
--domain-name testDomain \
--engine-version OpenSearch_1.3 \
--cluster-config InstanceType=r5.xlarge.search,InstanceCount=1,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=false,WarmEnabled=false \
--access-policies '{"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:12345678901:domain/neosaml10/*"}]}' \
--domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
--node-to-node-encryption-options '{"Enabled":true}' \
--encryption-at-rest-options '{"Enabled":true}' \
--advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \
--ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \
--no-verify-ssl \
--endpoint-url https://es.us-east-1.amazonaws.com \
--region us-east-1
```

若要更新現有的網域：

```
aws opensearch update-domain-config \
--domain-name testDomain \
--advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \
--ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \
--no-verify-ssl \
--endpoint-url https://es.us-east-1.amazonaws.com \
--region us-east-1
```

### 任務 3：在 OpenSearch Serverless 集合中設定 SAML
<a name="saml-configure-collections"></a>

**在 OpenSearch Serverless 中設定以 SAML 為基礎的精細存取控制**

1. 開啟 AWS 管理主控台 並導覽至 Amazon OpenSearch Service。

1. 在導覽窗格的**無伺服器**下，選擇**安全性**，然後選擇**身分驗證**。

1. 在 **IAM 聯合**區段中，選取**編輯**。

   您可以使用此組態控制以 SAML 屬性為基礎的精細存取控制。IAM 聯合預設為停用。

1. 選取**啟用 IAM 聯合**。

1. 輸入您在 Okta 中定義的 `subjectKey`和 `roleKey`值。

   如需詳細資訊，請參閱[精細存取控制的 SAML 屬性](#saml-fgac-key-attributes)。

1. 選取**儲存**。

1. 在**無伺服器**下的導覽窗格中，選擇**資料存取政策**。

1. 更新現有的政策或建立新的政策。

1. 展開規則，選擇**新增主體**，然後選擇 **IAM 聯合身分使用者和群組**。

1. 新增必要的委託人，然後選擇**儲存**。

1. 選擇 **Grant** (授予)。

1. 在此規則下，執行下列動作：
   + 選取您要為所選委託人定義的許可。
   + 指定您要套用許可的集合。
   + 或者，定義索引層級許可。
**注意**  
您可以建立多個規則，將不同的許可指派給不同的委託人群組。

1. 完成時，選擇**儲存**。

1. 選擇**建立**。

或者，您可以使用 CLI 來建立集合的安全組態，如下所示：

```
aws opensearchserverless create-security-config --region "region"  --type iamfederation --name "configuration_name" --description "description" --iam-federation-options '{"groupAttribute":"GroupKey","userAttribute":"UserKey"}'
```

# 管理資料來源關聯和虛擬私有雲端存取許可
<a name="application-data-sources-and-vpc"></a>

使用本節中的程序來管理資料來源關聯，並設定虛擬私有雲端 (VPC) 所需的任何存取許可。

**Topics**
+ [將資料來源與 OpenSearch UI 應用程式建立關聯](#application-data-source-association)
+ [管理對 VPC 中網域的存取](#application-manage-vpc-access)
+ [設定對 VPC 中 OpenSearch Serverless 集合的存取](#application-configure-vpc-access-serverless-connections)

## 將資料來源與 OpenSearch UI 應用程式建立關聯
<a name="application-data-source-association"></a>

建立 OpenSearch UI 應用程式之後，您可以使用 主控台 AWS CLI ，或將其與一或多個資料來源建立關聯。之後，最終使用者可以從這些資料來源擷取資料以進行搜尋、使用儀表板等。

### 將資料來源與 OpenSearch UI 應用程式建立關聯 （主控台）
<a name="application-data-source-association-console"></a>

**使用主控台將資料來源與 OpenSearch UI 應用程式建立關聯**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 選擇 **OpenSearch UI （儀表板）**，然後選擇 OpenSearch UI 應用程式的名稱。

1. 在**關聯的資料來源**區域中，選擇**管理資料來源**。

1. 從您要與應用程式建立關聯的 OpenSearch 網域和集合中進行選擇。
**提示**  
如果您找不到要尋找的資料來源，請聯絡您的管理員以授予您必要的許可。如需詳細資訊，請參閱[建立使用 IAM Identity Center 身分驗證之應用程式的許可 （選用）](application-getting-started.md#prerequisite-permissions-idc)。

1. 選擇**下一步**，然後選擇**儲存**。

將資料來源與應用程式建立關聯後，應用程式詳細資訊頁面上會啟用**啟動應用程式**按鈕。您可以選擇**啟動應用程式**以開啟**歡迎使用 OpenSearch** 頁面，您可以在其中建立和管理工作區。

如需使用工作區的詳細資訊，請參閱 [使用 Amazon OpenSearch Service 工作區](application-workspaces.md)。

## 管理對 VPC 中網域的存取
<a name="application-manage-vpc-access"></a>

如果 VPC 中的 OpenSearch 網域與應用程式相關聯，VPC 管理員必須使用 主控台或 授權 OpenSearch UI 和 VPC 之間的存取 AWS CLI。

### 管理對 VPC 中網域的存取 （主控台）
<a name="application-manage-vpc-access-console"></a>

**若要使用 設定對 VPC 網域的存取 AWS 管理主控台：**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽窗格中，選擇**網域**，然後選擇 VPC 網域的名稱。

   -或-

   選擇**建立網域**，然後設定網域的詳細資訊。

1. 選擇 **VPC 端點**索引標籤，然後選擇**授權委託人**。

1. 在**授權委託人**對話方塊中，選取**從其他 AWS 服務授權委託人**，然後從清單中選擇 **OpenSearch 應用程式 （儀表板）**。

1. 選擇 **Authorize** (授權)。

### 管理對 VPC 中網域的存取 (AWS CLI)
<a name="application-manage-vpc-access-cli"></a>

**使用 授權 VPC 網域 AWS CLI**  
若要使用 授權 VPC 網域 AWS CLI，請執行下列命令。使用您的資訊取代*預留位置的值*。

```
aws opensearch authorize-vpc-endpoint-access \
 --domain-name domain-name \
 --service application.opensearchservice.amazonaws.com \
 --region region-id
```

**使用主控台撤銷 VPC 網域關聯**

當不再需要關聯時，VPC 網域擁有者可以使用下列程序撤銷存取權。

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽窗格中，選擇**網域**，然後選擇 VPC 網域的名稱。

1. 選擇 **VPC 端點**索引標籤，然後選取 **OpenSearch 應用程式 （儀表板）** 列的按鈕。

1. 選擇**撤銷存取權**。

**使用 撤銷 VPC 網域關聯 AWS CLI**  
若要撤銷與 OpenSearch UI 應用程式的 VPC 網域關聯，請執行下列命令。使用您的資訊取代*預留位置的值*。

```
aws opensearch revoke-vpc-endpoint-access \
    --domain-name domain-name \
    --service application.opensearchservice.amazonaws.com \
    --region region-id
```

## 設定對 VPC 中 OpenSearch Serverless 集合的存取
<a name="application-configure-vpc-access-serverless-connections"></a>

如果 VPC 中的 Amazon OpenSearch Serverless 集合與應用程式相關聯，VPC 管理員可以透過建立新的網路政策並將其連接到集合來授權存取。

### 在 VPC 中設定 OpenSearch Serverless 集合的存取權 （主控台）
<a name="application-configure-vpc-access-serverless-connections-console"></a>

**使用主控台設定對 VPC 中 OpenSearch Serverless 集合的存取**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽中，選擇**網路政策**，選擇網路政策的名稱，然後選擇**編輯**。

   -或-

   選擇**建立網路政策**，然後設定政策的詳細資訊。

1. 在**存取類型**區域中，選擇**私有 （建議）**，然後選擇**AWS 服務私有存取**。

1. 在搜尋欄位中，選擇**服務**，然後選擇 `application.opensearchservice.amazonaws.com`。

1. 在**資源類型**區域中，選取**啟用對 OpenSearch 端點的存取**方塊。

1. 在**搜尋集合 （搜尋） 或輸入特定字首字詞 （搜尋）** 欄位中，選取**集合名稱**，然後輸入或選取要與網路政策建立關聯的集合名稱。

1. 選擇**建立新**網路政策或**更新**現有網路政策。

### 設定對 VPC 中 OpenSearch Serverless 集合的存取 (AWS CLI)
<a name="application-configure-vpc-access-serverless-connections-cli"></a>

**使用 設定對 VPC 中 OpenSearch Serverless 集合的存取 AWS CLI**

1. 建立類似以下內容的 .json 檔案。使用您的資訊取代*預留位置的值*。

   ```
   {
       "Description" : "policy-description",
       "Rules": [{
          "ResourceType" : "collection",
           "Resource" : ["collection/collection_name"]
        }],
       "SourceServices" : [
             "application.opensearchservice.amazonaws.com"
         ],
         "AllowFromPublic" : false
   }
   ```

1. 為 VPC 中的集合建立或更新網路政策，以使用 OpenSearch UI 應用程式。

------
#### [ Create a network policy ]

   執行下列命令。使用您的資訊取代*預留位置的值*。

   ```
   aws opensearchserverless create-security-policy \
       --type network  \
       --region region \
       --endpoint-url endpoint-url \
       --name network-policy-name \
       --policy file:/path_to_network_policy_json_file
   ```

   此命令會傳回與以下內容相似的資訊：

   ```
   {
       "securityPolicyDetail": {
           "createdDate": ******,
           "lastModifiedDate": ******,
           "name": "network-policy-name",
           "policy": [
               {
                   "SourceVPCEs": [],
                   "AllowFromPublic": false,
                   "Description": "",
                   "Rules": [
                       {
                           "Resource": [
                               "collection/network-policy-name"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "SourceServices": [
                       "application.opensearchservice.amazonaws.com"
                   ]
               }
           ],
           "policyVersion": "******",
           "type": "network"
       }
   }
   ```

------
#### [ Update a network policy ]

   執行下列命令。使用您的資訊取代*預留位置的值*。

   ```
   aws opensearchserverless update-security-policy \
       --type network  \
       --region region \
       --endpoint-url endpoint-url \
       --name network-policy-name \
       --policy-version "policy_version_from_output_of_network_policy_creation" \
       --policy file:/path_to_network_policy_json_file
   ```

   此命令會傳回與以下內容相似的資訊：

   ```
   {
       "securityPolicyDetail": {
           "createdDate": ******,
           "lastModifiedDate": ******,
           "name": "network-policy-name",
           "policy": [
               {
                   "SourceVPCEs": [],
                   "AllowFromPublic": false,
                   "Description": "",
                   "Rules": [
                       {
                           "Resource": [
                               "collection/network-policy-name"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "SourceServices": [
                       "application.opensearchservice.amazonaws.com"
                   ]
               }
           ],
           "policyVersion": "******",
           "type": "network"
       }
   }
   ```

------

# 使用 Amazon OpenSearch Service 工作區
<a name="application-workspaces"></a>

Amazon OpenSearch Service 支援建立多個使用案例特定的工作區。每個工作區都為熱門的使用案例提供精心策劃的體驗，例如可觀測性、安全性分析和搜尋。工作區也支援協作者管理，因此您只能與預期的協作者共用工作區，並管理每個工作區的許可。

## 建立 OpenSearch UI 應用程式工作區
<a name="application-workspaces-create"></a>

在建立 OpenSearch UI 應用程式並與資料來源建立關聯，並且已為應用程式設定使用者許可之後，您可以啟動 OpenSearch UI 應用程式來建立工作區。

若要開始建立工作區，您可以在**應用程式詳細資訊頁面上選取啟動**應用程式按鈕，或使用 OpenSearch UI 應用程式 URL 在新的瀏覽器視窗中開啟 OpenSearch UI 應用程式首頁。

OpenSearch UI 應用程式提供建立工作區的選項，並列出首頁中依使用案例分類的所有現有工作區。

![\[主控台中的「我的工作區」區域可用來建立五種不同類型的工作區：可觀測性、安全性分析、搜尋、基本功能和分析。您也可以在「我的工作區」區域中檢視所有現有的工作區。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/workspaces.png)


如需支援的工作區類型的詳細資訊，請參閱 [工作區類型](#application-workspaces-types)。

## 工作區隱私權和協作者
<a name="application-workspaces-privacy-and-collaborators"></a>

您可以將工作區的隱私權設定定義為所有使用者的預設許可層級。您可以在建立工作區或修改現有工作區時執行此操作 （在工作區**協作者**索引標籤上）。有三種隱私權選項可供選擇：
+ **私有到協作者** – 只有您明確新增至工作區的協作者才能存取工作區。您可以為每個協作者定義許可層級。
+ ****任何人都可以檢視**** – 有權存取 OpenSearch UI 應用程式的任何人都可以存取工作區並檢視其資產，但無法在工作區中進行任何變更。
+ ****任何人都可以編輯**** – 有權存取 OpenSearch UI 應用程式的任何人都可以存取工作區、檢視其中的資產，以及變更工作區中的資產。

在工作區**協作者**索引標籤上，您可以將 IAM 使用者或角色和 AWS IAM Identity Center 使用者新增為工作區中的協作者。協作者有三個層級的許可可供選擇：
+ **唯讀** – 協作者只能檢視工作區中的資產。如果工作區設定為使用**任何人都可以編輯**隱私權設定，則會覆寫此設定。
+ **讀取和寫入** – 協作者可以檢視和編輯工作區中的資產。如果設定為使用**任何人的工作區可以檢視**隱私權設定，則協作者仍然可以編輯。
+ **Admin** – 協作者可以更新設定並刪除工作區。協作者也可以變更工作區隱私權設定和管理協作者。建立工作區的使用者會自動指派為工作區管理員。

## 工作區類型
<a name="application-workspaces-types"></a>

Amazon OpenSearch Service 提供五種工作區類型，每種類型都有不同的使用案例功能：
+ **可觀測性**工作區旨在透過監控日誌、指標和追蹤，取得系統運作狀態、效能和可靠性的可見性。
+ **Security Analytics** 工作區旨在偵測和調查系統和資料的潛在安全威脅和漏洞。
+ **搜尋**工作區旨在快速尋找和探索整個組織資料來源的相關資訊。
+ **Essentials** 工作區專為 OpenSearch Serverless 設計，做為資料來源，可讓分析資料以衍生洞見、識別模式和趨勢，並快速做出資料驅動型決策。您可以在 **Essentials** 工作區中找到並探索組織資料來源的相關資訊。
+ **Analytics** （所有功能） 工作區專為多用途使用案例而設計，並支援 OpenSearch Service UI （儀表板） 中提供的所有功能。

# 跨區域和跨帳戶資料存取
<a name="application-cross-region-cross-account"></a>

OpenSearch UI 支援從不同 AWS 帳戶和 AWS 區域的 OpenSearch 網域存取資料。根據您的需求，您可以選擇兩種方法。下表比較這兩種方法。

**注意**  
跨帳戶資料存取和跨叢集搜尋都僅適用於 OpenSearch 網域。這兩種方法都不支援 OpenSearch Serverless 集合。


| 面向 | 跨帳戶資料存取 | 跨叢集搜尋 | 
| --- | --- | --- | 
| 功能 | 在 OpenSearch UI 中將來自其他帳戶的網域關聯為直接資料來源 | 使用跨叢集搜尋連線跨連線網域查詢資料 | 
| Mechanism | 直接存取 – OpenSearch UI 直接連接到另一個帳戶中的目標網域 | 間接存取 – 需要與 OpenSearch UI 相同帳戶中的本機網域，才能將請求轉送至遠端網域 | 
| 跨帳戶支援 | 是 | 是 | 
| 跨區域支援 | 否 – 來源和目標網域必須位於相同的 AWS 區域 | 是 – 來源和目的地網域可以位於不同的 AWS 區域中 | 
| 跨網域的聯集資料 | 否 – 個別查詢每個網域做為個別資料來源 | 是 – 單一查詢可以彙總多個連線網域的結果 | 
| 身分驗證方法 | IAM 和 AWS IAM Identity Center | IAM （具有精細存取控制） | 
| 設定複雜性 | 較低 – 需要跨帳戶 IAM 角色進行驗證 | 較高 – 需要跨叢集連線、兩個網域上的存取政策，以及精細的存取控制 | 
| OpenSearch UI 中的資料來源可見性 | 每個跨帳戶網域會顯示為個別的資料來源 | 透過本機來源網域的連線別名存取遠端網域 | 
| 遠端網域的寫入存取權 | 是 – 由目標網域的存取政策控制 | 否 – 跨叢集搜尋提供對遠端網域的唯讀存取 | 

**Topics**
+ [OpenSearch 網域的跨帳戶資料存取](application-cross-account-data-access-domains.md)
+ [跨叢集搜尋](application-cross-cluster-search.md)

# OpenSearch 網域的跨帳戶資料存取
<a name="application-cross-account-data-access-domains"></a>

您可以在一個帳戶中設定 OpenSearch UI 應用程式，以存取不同帳戶中的 OpenSearch 網域。當您使用跨帳戶資料來源建立 OpenSearch UI 應用程式時，您會提供`iamRoleForDataSourceArn`指向目標帳戶中 IAM 角色的 。OpenSearch UI 透過擔任此角色並呼叫 `es:DescribeDomain` 來驗證網域可存取性來驗證請求。跨帳戶角色僅用於控制平面驗證。資料平面存取是由目標網域的存取政策單獨控制。

**範本程式碼**  
本主題中的程式碼範例僅供說明之用。它們示範了基本功能，並且可能不包括錯誤處理、安全最佳實務或生產就緒功能。在生產環境中使用範本程式碼之前，請檢閱並修改範本以符合您的特定需求，並在您的環境中徹底測試。

## 重要概念
<a name="cross-account-key-concepts"></a>

來源帳戶  
 AWS 帳戶 託管 OpenSearch UI 應用程式的 。

目標帳戶  
 AWS 帳戶 OpenSearch 網域所在的 。

跨帳戶角色  
目標帳戶中的 IAM 角色，僅用於控制平面驗證。此角色只需要 `es:DescribeDomain`許可。

IAM Identity Center 應用程式角色  
來源帳戶中的 IAM 角色，用於 IAM Identity Center 使用者資料平面存取。

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

設定跨帳戶資料存取之前，請確定您有下列項目：
+ AWS CLI 已安裝和設定
+ 同時存取來源和目標 AWS 帳戶
+ 對於 IAM Identity Center 流程： AWS IAM Identity Center 組織執行個體

## 案例
<a name="cross-account-scenarios"></a>

選擇符合您身分驗證方法和網域組態的案例：
+ [案例 1：存取公有網域的 IAM 使用者](#cross-account-scenario-1)
+ [案例 2：存取公有網域的 IAM Identity Center 使用者](#cross-account-scenario-2)
+ [案例 3：存取 VPC 網域的 IAM 使用者](#cross-account-scenario-3)
+ [案例 4：存取 VPC 網域的 IAM Identity Center 使用者](#cross-account-scenario-4)

## 案例 1：存取公有網域的 IAM 使用者
<a name="cross-account-scenario-1"></a>

### 步驟 1：建立跨帳戶 IAM 角色 （目標帳戶）
<a name="scenario-1-step-1"></a>

在目標帳戶中建立 IAM 角色，允許來源帳戶擔任該角色進行網域驗證。

**建立跨帳戶角色**

1. 建立允許來源帳戶擔任角色的信任政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 建立角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 建立僅具有 `es:DescribeDomain`動作的許可政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 將許可政策連接至角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步驟 2：建立 OpenSearch 網域 （目標帳戶）
<a name="scenario-1-step-2"></a>

在已啟用精細存取控制和加密的目標帳戶中建立 OpenSearch 網域：

```
aws opensearch create-domain \
  --domain-name domain-name \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/domain-name/*"}]}' \
  --region region
```

等待網域狀態變為 ，`Active`再繼續。

### 步驟 3：建立 OpenSearch UI 應用程式 （來源帳戶）
<a name="scenario-1-step-3"></a>

使用跨帳戶資料來源在來源帳戶中建立應用程式：

```
aws opensearch create-application \
  --region region \
  --name "cross-account-iam-app" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name",
    "dataSourceDescription":"Cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步驟 4：驗證和存取
<a name="scenario-1-step-4"></a>

擷取應用程式詳細資訊以取得端點 URL：

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 從回應導覽至應用程式端點 URL。
+ 使用 IAM 登入資料登入。
+ IAM 使用者使用自己的登入資料簽署資料平面請求。
+ 目標網域存取政策控制使用者可以存取哪些資料。

## 案例 2：存取公有網域的 IAM Identity Center 使用者
<a name="cross-account-scenario-2"></a>

### 步驟 1：建立跨帳戶 IAM 角色 （目標帳戶）
<a name="scenario-2-step-1"></a>

在目標帳戶中建立 IAM 角色，允許來源帳戶擔任該角色進行網域驗證。

**建立跨帳戶角色**

1. 建立允許來源帳戶擔任角色的信任政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 建立角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 建立僅具有 `es:DescribeDomain`動作的許可政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 將許可政策連接至角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步驟 2：建立 OpenSearch 網域 （目標帳戶）
<a name="scenario-2-step-2"></a>

在目標帳戶中建立 OpenSearch 網域。使用與 相同的命令[步驟 2：建立 OpenSearch 網域 （目標帳戶）](#scenario-1-step-2)，但更新存取政策以允許來源帳戶的 IAM Identity Center 應用程式角色：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole"
    },
    "Action": "es:ESHttp*",
    "Resource": "arn:aws:es:region:target-account-id:domain/domain-name/*"
  }]
}
```

等待網域狀態變為 ，`Active`再繼續。

### 步驟 3：建立 IAM Identity Center 應用程式的 IAM 角色 （來源帳戶）
<a name="scenario-2-step-3"></a>

在 OpenSearch UI 用於 IAM Identity Center 使用者資料平面存取的來源帳戶中建立 IAM 角色。

**建立 IAM Identity Center 應用程式角色**

1. 建立信任政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:SetContext",
         "Condition": {
           "ForAllValues:ArnEquals": {
             "sts:RequestContextProviders": "arn:aws:iam::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id"
           }
         }
       }
     ]
   }
   ```

1. 建立許可政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "*"
     }]
   }
   ```

1. 建立角色並連接政策：

   ```
   aws iam create-role \
     --role-name NeoIdCAppRole \
     --assume-role-policy-document file://neoidc-trust-policy.json
   
   aws iam put-role-policy \
     --role-name NeoIdCAppRole \
     --policy-name NeoIdCAppPermissions \
     --policy-document file://neoidc-permissions-policy.json
   ```

### 步驟 4：使用 IAM Identity Center （來源帳戶） 建立 OpenSearch UI 應用程式
<a name="scenario-2-step-4"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-idc-app" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-name",
    "dataSourceDescription":"Cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步驟 5：建立和指派 IAM Identity Center 使用者和群組
<a name="scenario-2-step-5"></a>

**建立 IAM Identity Center 使用者**  
執行下列命令。使用您的資訊取代*預留位置的值*。

```
aws identitystore create-user \
  --identity-store-id d-directory-id \
  --user-name user-email \
  --display-name "display-name" \
  --name Formatted=string,FamilyName=last-name,GivenName=first-name \
  --emails Value=user-email,Type=work,Primary=true
```

**建立 IAM Identity Center 群組並新增使用者**  
執行下列命令：

```
aws identitystore create-group \
  --identity-store-id d-directory-id \
  --display-name "OpenSearchUsers" \
  --description "Users with OpenSearch access"

aws identitystore create-group-membership \
  --identity-store-id d-directory-id \
  --group-id group-id \
  --member-id UserId=user-id
```

**將使用者或群組指派給應用程式**  
執行以下命令：

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \
  --principal-id user-id-or-group-id \
  --principal-type USER
```

**在目標網域上設定後端角色映射**  
將 IAM Identity Center 群組映射至目標網域上的 OpenSearch 安全角色：

```
curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \
  -u admin:master-password \
  -H 'Content-Type: application/json' \
  -d '{
    "backend_roles": ["group-id"],
    "hosts": [],
    "users": []
  }'
```

### 步驟 6：驗證和存取
<a name="scenario-2-step-6"></a>

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 導覽至應用程式端點 URL。
+ 使用 IAM Identity Center 使用者憑證登入。
+ IAM Identity Center 使用者的資料請求會使用 IAM Identity Center 應用程式角色簽署，而不是跨帳戶角色。
+ 網域控制資料存取許可上的後端角色映射。

## 案例 3：存取 VPC 網域的 IAM 使用者
<a name="cross-account-scenario-3"></a>

### 步驟 1：建立跨帳戶 IAM 角色 （目標帳戶）
<a name="scenario-3-step-1"></a>

在目標帳戶中建立 IAM 角色，允許來源帳戶擔任該角色進行網域驗證。

**建立跨帳戶角色**

1. 建立允許來源帳戶擔任角色的信任政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 建立角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 建立僅具有 `es:DescribeDomain`動作的許可政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 將許可政策連接至角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步驟 2：設定 VPC （目標帳戶）
<a name="scenario-3-step-2"></a>

如果目標帳戶中已存在 VPC，請略過此步驟。

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region region

# Create subnet
aws ec2 create-subnet \
  --vpc-id vpc-id \
  --cidr-block 10.0.1.0/24 \
  --availability-zone regiona \
  --region region

# Create security group
aws ec2 create-security-group \
  --group-name opensearch-vpc-sg \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id vpc-id \
  --region region

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id security-group-id \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region region
```

進一步了解 [VPC 網域建立](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)。

### 步驟 3：建立 VPC 網域 （目標帳戶）
<a name="scenario-3-step-3"></a>

```
aws opensearch create-domain \
  --domain-name vpc-domain-name \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --vpc-options "SubnetIds=subnet-id,SecurityGroupIds=security-group-id" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"admin","MasterUserPassword":"master-password"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:ESHttp*","Resource":"arn:aws:es:region:target-account-id:domain/vpc-domain-name/*"}]}' \
  --region region
```

等待網域狀態變為 ，`Active`再繼續。

### 步驟 4：授權 OpenSearch UI 服務主體的 VPC 端點 （目標帳戶）
<a name="scenario-3-step-4"></a>

**重要**  
這是 VPC 網域獨有的關鍵步驟。OpenSearch UI 服務必須明確授權才能存取 VPC 端點。

```
# Authorize the service principal
aws opensearch authorize-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --region region
```

預期回應：

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com"
    }
  ]
}
```

### 步驟 5：建立 OpenSearch UI 應用程式 （來源帳戶）
<a name="scenario-3-step-5"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-vpc-iam-app" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name",
    "dataSourceDescription":"Cross-account VPC domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步驟 6：驗證和存取
<a name="scenario-3-step-6"></a>

擷取應用程式詳細資訊以取得端點 URL：

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 從回應導覽至應用程式端點 URL。
+ 使用 IAM 登入資料登入。
+ IAM 使用者使用自己的登入資料簽署資料平面請求。
+ 目標網域存取政策控制使用者可以存取哪些資料。

## 案例 4：存取 VPC 網域的 IAM Identity Center 使用者
<a name="cross-account-scenario-4"></a>

### 步驟 1：建立跨帳戶 IAM 角色 （目標帳戶）
<a name="scenario-4-step-1"></a>

在目標帳戶中建立 IAM 角色，允許來源帳戶擔任該角色進行網域驗證。

**建立跨帳戶角色**

1. 建立允許來源帳戶擔任角色的信任政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::source-account-id:root"
       },
       "Action": "sts:AssumeRole"
     }]
   }
   ```

1. 建立角色：

   ```
   aws iam create-role \
     --role-name OpenSearchUIAccessRole \
     --assume-role-policy-document file://trust-policy.json
   ```

1. 建立僅具有 `es:DescribeDomain`動作的許可政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": "es:DescribeDomain",
       "Resource": "arn:aws:es:region:target-account-id:domain/*"
     }]
   }
   ```

1. 將許可政策連接至角色：

   ```
   aws iam put-role-policy \
     --role-name OpenSearchUIAccessRole \
     --policy-name ValidationOnly \
     --policy-document file://permissions-policy.json
   ```

### 步驟 2：設定 VPC （目標帳戶）
<a name="scenario-4-step-2"></a>

如果目標帳戶中已存在 VPC，請略過此步驟。

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region region

# Create subnet
aws ec2 create-subnet \
  --vpc-id vpc-id \
  --cidr-block 10.0.1.0/24 \
  --availability-zone regiona \
  --region region

# Create security group
aws ec2 create-security-group \
  --group-name opensearch-vpc-sg \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id vpc-id \
  --region region

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id security-group-id \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region region
```

進一步了解 [VPC 網域建立](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)。

### 步驟 3：建立 VPC 網域 （目標帳戶）
<a name="scenario-4-step-3"></a>

使用與 相同的命令[步驟 3：建立 VPC 網域 （目標帳戶）](#scenario-3-step-3)，但更新存取政策以允許來源帳戶的 IAM Identity Center 應用程式角色：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::source-account-id:role/NeoIdCAppRole"
    },
    "Action": "es:ESHttp*",
    "Resource": "arn:aws:es:region:target-account-id:domain/vpc-domain-name/*"
  }]
}
```

等待網域狀態變為 ，`Active`再繼續。

### 步驟 4：授權 OpenSearch UI 服務主體的 VPC 端點 （目標帳戶）
<a name="scenario-4-step-4"></a>

**重要**  
這是 VPC 網域獨有的關鍵步驟。OpenSearch UI 服務必須明確授權才能存取 VPC 端點。

```
# Authorize the service principal
aws opensearch authorize-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --region region
```

預期回應：

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com"
    }
  ]
}
```

### 步驟 5：建立 IAM Identity Center 應用程式的 IAM 角色 （來源帳戶）
<a name="scenario-4-step-5"></a>

在 OpenSearch UI 用於 IAM Identity Center 使用者資料平面存取的來源帳戶中建立 IAM 角色。

**建立 IAM Identity Center 應用程式角色**

1. 建立信任政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "application.opensearchservice.amazonaws.com"
         },
         "Action": "sts:SetContext",
         "Condition": {
           "ForAllValues:ArnEquals": {
             "sts:RequestContextProviders": "arn:aws:iam::source-account-id:oidc-provider/portal.sso.region.amazonaws.com/apl/application-id"
           }
         }
       }
     ]
   }
   ```

1. 建立許可政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "*"
     }]
   }
   ```

1. 建立角色並連接政策：

   ```
   aws iam create-role \
     --role-name NeoIdCAppRole \
     --assume-role-policy-document file://neoidc-trust-policy.json
   
   aws iam put-role-policy \
     --role-name NeoIdCAppRole \
     --policy-name NeoIdCAppPermissions \
     --policy-document file://neoidc-permissions-policy.json
   ```

### 步驟 6：使用 IAM Identity Center （來源帳戶） 建立 OpenSearch UI 應用程式
<a name="scenario-4-step-6"></a>

```
aws opensearch create-application \
  --region region \
  --name "cross-account-vpc-idc-app" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-instance-id",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::source-account-id:role/NeoIdCAppRole"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/vpc-domain-name",
    "dataSourceDescription":"Cross-account VPC domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"*\"]"}]'
```

### 步驟 7：建立和指派 IAM Identity Center 使用者和群組
<a name="scenario-4-step-7"></a>

**建立 IAM Identity Center 使用者**  
執行下列命令。使用您的資訊取代*預留位置的值*。

```
aws identitystore create-user \
  --identity-store-id d-directory-id \
  --user-name user-email \
  --display-name "display-name" \
  --name Formatted=string,FamilyName=last-name,GivenName=first-name \
  --emails Value=user-email,Type=work,Primary=true
```

**建立 IAM Identity Center 群組並新增使用者**  
執行下列命令：

```
aws identitystore create-group \
  --identity-store-id d-directory-id \
  --display-name "OpenSearchUsers" \
  --description "Users with OpenSearch access"

aws identitystore create-group-membership \
  --identity-store-id d-directory-id \
  --group-id group-id \
  --member-id UserId=user-id
```

**將使用者或群組指派給應用程式**  
執行以下命令：

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso:::source-account-id:application/ssoins-instance-id/apl-application-id" \
  --principal-id user-id-or-group-id \
  --principal-type USER
```

**在目標網域上設定後端角色映射**  
將 IAM Identity Center 群組對應至目標網域上的 OpenSearch 安全角色：

```
curl -XPUT "https://domain-endpoint/_plugins/_security/api/rolesmapping/all_access" \
  -u admin:master-password \
  -H 'Content-Type: application/json' \
  -d '{
    "backend_roles": ["group-id"],
    "hosts": [],
    "users": []
  }'
```

### 步驟 8：驗證和存取
<a name="scenario-4-step-8"></a>

```
aws opensearch get-application \
  --region region \
  --id application-id
```
+ 導覽至應用程式端點 URL。
+ 使用 IAM Identity Center 使用者憑證登入。
+ IAM Identity Center 使用者的資料請求會使用 IAM Identity Center 應用程式角色簽署，而不是跨帳戶角色。
+ 網域控制資料存取許可上的後端角色映射。

## 管理 應用程式
<a name="cross-account-managing-applications"></a>

**使用跨帳戶資料來源更新應用程式**  
執行下列命令。使用您的資訊取代*預留位置的值*。

```
aws opensearch update-application \
  --region region \
  --id application-id \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-1",
    "dataSourceDescription":"First cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  },{
    "dataSourceArn":"arn:aws:es:region:target-account-id:domain/domain-2",
    "dataSourceDescription":"Second cross-account domain",
    "iamRoleForDataSourceArn":"arn:aws:iam::target-account-id:role/OpenSearchUIAccessRole"
  }]'
```

**重要**  
更新操作會取代整個資料來源陣列。包含您要保留的所有資料來源。

**列出應用程式**  
執行以下命令：

```
aws opensearch list-applications \
  --region region
```

**刪除應用程式**  
執行以下命令：

```
aws opensearch delete-application \
  --region region \
  --id application-id
```

**撤銷 VPC 端點存取**  
執行以下命令：

```
aws opensearch revoke-vpc-endpoint-access \
  --domain-name vpc-domain-name \
  --service "application.opensearchservice.amazonaws.com" \
  --region region
```

## 快速參考
<a name="cross-account-quick-reference"></a>

下表摘要說明網域類型和身分驗證方法之間的主要差異。


**公有網域與 VPC 網域的比較**  

| 面向 | 公有網域 | VPC 網域 | 
| --- | --- | --- | 
| VPC 端點授權 | 非必要 | 必要 – 必須授權 application.opensearchservice.amazonaws.com | 
| 網路設定 | 無 | VPC、子網路、具有 HTTPS (443) 傳入的安全群組 | 
| IAM 存取政策 | 必要 | 必要 | 
| 跨帳戶角色 | 跨帳戶的必要項目 | 跨帳戶的必要項目 | 


**IAM 使用者相較於 IAM Identity Center 使用者**  

| 面向 | IAM 使用者 | IAM Identity Center 使用者 | 
| --- | --- | --- | 
| 資料平面登入資料 | 使用者自己的 IAM 登入資料 | IAM Identity Center 應用程式角色 | 
| 存取控制 | 網域存取政策 | 網域存取政策和後端角色映射 | 
| 其他設定 | 無 | IAM Identity Center 應用程式角色、使用者/群組建立、應用程式指派、後端角色映射 | 
| OpenSearch UI 應用程式組態 | 沒有 IAM Identity Center 選項 | --iam-identity-center-options 必要 | 

## 重要說明
<a name="cross-account-important-notes"></a>
+ `iamRoleForDataSourceArn` 必須與 位於相同的 帳戶中`dataSourceArn`。
+ 只有跨帳戶資料來源`iamRoleForDataSourceArn`需要 。為相同帳戶資料來源省略它。
+ 跨帳戶角色只需要 `es:DescribeDomain`許可。它永遠不會用於資料平面存取。
+ 對於 VPC 網域，必須同時設定 IAM 政策和 VPC 端點授權。
+ 支援的引擎版本：OpenSearch 1.3 及更高版本。

## 疑難排解
<a name="cross-account-troubleshooting"></a>


| 問題 | Resolution | 
| --- | --- | 
| 應用程式建立失敗，並顯示「無法存取網域」 | 確認跨帳戶角色具有 es:DescribeDomain許可，且信任政策允許來源帳戶。 | 
| VPC 網域關聯失敗 | 確定 VPC 端點已獲得 的授權application.opensearchservice.amazonaws.com。 | 
| IAM 使用者的資料平面存取遭拒 | 檢查目標網域存取政策是否允許 IAM 使用者或角色主體。 | 
| IAM Identity Center 使用者的資料平面存取遭拒 | 確認後端角色映射包含 IAM Identity Center 群組 ID，且網域政策允許 IAM Identity Center 應用程式角色。 | 
| 帳戶不相符錯誤 | 確定 iamRoleForDataSourceArn 位於與 中網域相同的 帳戶中dataSourceArn。 | 

# 跨叢集搜尋
<a name="application-cross-cluster-search"></a>

在 Amazon OpenSearch Serverless 中使用[跨叢集搜尋](cross-cluster-search.md)，您可以跨多個連線網域執行查詢和彙總。

Amazon OpenSearch Serverless 中的跨叢集搜尋會使用*來源網域*和*目的地網域*的概念。跨叢集搜尋請求來自來源網域。要查詢來源網域的目的地網域可以位於不同的 AWS 帳戶 或 AWS 區域 （或兩者）。使用跨叢集搜尋，您可以設定來源網域，以與相同帳戶中的 OpenSearch UI 建立關聯，然後建立目的地網域的連線。因此，您可以使用 OpenSearch UI 搭配來自目的地網域的資料，即使它們位於不同的帳戶或區域。

對於傳入和傳出 Amazon OpenSearch Service 的資料，您需要支付[標準 AWS 資料傳輸費用](https://aws.amazon.com/opensearch-service/pricing/)。您無需為 OpenSearch Service 網域內節點之間的資料傳輸付費。如需「輸入」和「輸出」費用的詳細資訊，請參閱 *Amazon EC2 隨需定價*頁面上的[資料傳輸](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer)。

您可以使用跨叢集搜尋作為 OpenSearch UI 與不同帳戶或不同區域中叢集相關聯的機制。根據預設，網域之間的請求會在傳輸中加密，作為node-to-node加密的一部分。

**注意**  
開放原始碼 OpenSearch 工具也會記錄[跨叢集搜尋](https://opensearch.org/docs/latest/search-plugins/cross-cluster-search/)。請注意，開放原始碼工具的設定與 受管 Amazon OpenSearch Serverless 網域相比，開放原始碼叢集有很大的差異。  
最值得注意的是，在 Amazon OpenSearch Serverless 中，您使用 AWS 管理主控台 而不是使用 `cURL` 請求來設定跨叢集連線。除了精細存取控制之外， 受管服務還使用 AWS Identity and Access Management (IAM) 進行跨叢集身分驗證。  
因此，我們建議您使用本主題中的內容來設定網域的跨叢集搜尋，而不是開放原始碼 OpenSearch 文件。

**使用跨叢集搜尋時的功能差異**  
相較於一般網域，使用跨叢集搜尋建立的目的地網域具有下列功能差異和要求：
+ 您無法寫入或執行`PUT`命令至遠端叢集。您對遠端叢集的存取是*唯讀*的。
+ 來源和目的地網域都必須是 OpenSearch 網域。您無法為 OpenSearch UI 連接 Elasticsearch 網域或自我管理的 OpenSearch/Elasticsearch 叢集。 OpenSearch 
+ 網域最多可以有 20 個與其他網域的連線。這包括傳出和傳入連線。
+ 來源網域的 OpenSearch 版本必須與目的地網域相同或更高。如果您想要在兩個網域之間設定雙向連線，這兩個網域應該位於相同的版本中。我們建議您先將兩個網域升級至最新版本，再進行連線。如果您在設定雙向連線後需要更新網域，您必須先刪除連線，然後在之後重新建立。
+ 您無法搭配遠端叢集使用自訂字典或 SQL。
+ 您無法使用 CloudFormation 來連接網域。
+ 您無法在 M3 或高載 (T2 和 T3) 執行個體上使用跨叢集搜尋。
+ 跨叢集搜尋不適用於 Amazon OpenSearch Serverless 集合。

**OpenSearch UI 的跨叢集搜尋先決條件**  
使用兩個 OpenSearch 網域設定跨叢集搜尋之前，請確定您的網域符合下列要求：
+ 兩個網域都已啟用精細存取控制
+ 兩個網域都已啟用Node-to-node加密

**Topics**
+ [使用跨叢集搜尋設定跨區域和跨帳戶資料存取的存取許可](#cross-cluster-search-security)
+ [在網域之間建立連線](#cross-cluster-search-create-connection)
+ [使用跨叢集搜尋測試跨區域和跨帳戶資料存取的安全設定](#cross-cluster-search-security-testing)
+ [刪除連線](#cross-cluster-search-deleting-connection)

## 使用跨叢集搜尋設定跨區域和跨帳戶資料存取的存取許可
<a name="cross-cluster-search-security"></a>

當您將跨叢集搜尋請求傳送至來源網域時，網域會根據其網域存取政策評估該請求。跨叢集搜尋需要精細存取控制。以下是來源網域上具有開放存取政策的範例。

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "*"
        ]
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-1:111222333444:domain/src-domain/*"
    }
  ]
}
```

------

**注意**  
如果您在路徑中包含遠端索引，則必須對網域 ARN 中的 URI 進行 URL 編碼。  
例如，使用下列 ARN 格式：  
`:arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst%3Aremote_index`  
請勿使用下列 ARN 格式：  
`arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst:remote_index.`

如果您選擇在精細存取控制之外使用限制性存取政策，則您的政策必須至少允許存取 `es:ESHttpGet`。以下是範例：

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111222333444:user/john-doe"
        ]
      },
      "Action": "es:ESHttpGet",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/my-domain/*"
    }
  ]
}
```

------

來源網域上的[精細存取控制](fgac.md)會評估請求，以判斷該請求是否使用有效的 IAM 或 HTTP 基本登入資料簽署。如果是，精細存取控制接下來會評估使用者是否具有執行搜尋和存取資料的許可。

以下是搜尋的許可要求：
+ 如果請求只搜尋目的地網域上的資料 （例如 `dest-alias:dest-index/_search)`，則只需要目的地網域上的許可。
+ 如果請求搜尋兩個網域上的資料 （例如 `source-index,dest-alias:dest-index/_search)`，則兩個網域都需要許可。
+ 若要使用精細存取控制，除了相關索引的標準讀取或搜尋許可之外，`indices:admin/shards/search_shards`還需要 許可。

來源網域會將請求傳遞至目的地網域。目的地網域會根據其網域存取政策評估此請求。若要支援 OpenSearch UI 中的所有功能，例如編製文件索引和執行標準搜尋，必須設定完整許可。以下是我們在目的地網域上建議的政策範例：

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

****  

```
{
"Version":"2012-10-17",		 	 	 
 "Statement": [
    {
       "Effect": "Allow",
       "Principal": {
         "AWS": [
           "*"
        ]
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-2:111222333444:domain/my-destination-domain/*"
    },
    {
    "Effect": "Allow",
        "Principal": {
    "AWS": "*"
      },
      "Action": "es:ESCrossClusterGet",
      "Resource": "arn:aws:es:us-east-2:111222333444:domain/"
    }
  ]
}
```

------

如果您只想要執行基本搜尋，則最低政策要求是在沒有萬用字元支援的情況下套用`es:ESCrossClusterGet`許可到目的地網域。例如，在上述政策中，您將網域名稱指定為 */my-destination-domain*，而不是 */my-destination-domain/\$1*。

在此情況下，目的地網域會執行搜尋，並將結果傳回來源網域。來源網域會將其自身結果 (如果有的話) 與來自目的地網域的結果加以結合，然後將其傳回給您。

## 在網域之間建立連線
<a name="cross-cluster-search-create-connection"></a>

跨叢集搜尋連線從來源網域到目的地網域是單向的。這表示目的地網域 （在不同帳戶或區域中） 無法查詢來源網域，這是 OpenSearch UI 的本機網域。來源網域會建立與目的地網域的*傳出*連線。目的地網域會從來源網域接收*傳入*連線請求。

![\[此影像說明跨叢集搜尋連線從來源網域到目的地網域是單向的。\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ui-oubound-inbound-connections.png)


**在網域之間建立連線**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽中，選擇**網域**。

1. 選擇要做為來源網域的網域名稱，然後選擇**連線**索引標籤。

1. 在**傳出連線**區域中，選擇**請求**。

1. 對於 **Connection alias** (連線別名)，輸入連線的名稱。在 OpenSearch UI 中使用連線別名來選取目的地網域。

1. 針對**連線模式**，選擇跨叢集搜尋或複寫的**直接**。

1. 若要指定連線應該在搜尋期間略過無法使用的叢集，請選取**略過無法使用的叢集**方塊。選擇此選項可確保您的跨叢集查詢傳回部分結果，無論一或多個遠端叢集是否失敗。

1. 對於**目的地叢集**，請在**連線至此 中的叢集 AWS 帳戶**和**連線至另一個叢集 AWS 帳戶**之間進行選擇。

1. 針對**遠端網域 ARN**，輸入叢集的 Amazon Resource Name (ARN)。網域 ARN 可以位於網域詳細資訊頁面的**一般資訊**區域中。

   網域必須符合下列要求：
   + ARN 格式必須為 `arn:partition:es:regionaccount-id:type/domain-id`。例如：

     `arn:aws:es:us-east-2:111222333444:domain/my-domain`
   + 網域必須設定為使用 OpenSearch 1.0 版 （或更新版本） 或 Elasticsearch 6.7 版 （或更新版本）。
   + 必須在網域上啟用精細存取控制。
   + 網域必須執行 OpenSearch。

1. 選擇**請求**。

跨叢集搜尋會先驗證連線請求，確認是否符合先決條件。如果網域不相容，連線請求會進入 `Validation failed` 狀態。

如果成功驗證連線請求，則會將其傳送至必須核准的目的地網域。在此核准之前，連線會保持 `Pending acceptance` 狀態。在目的地網域接受連線請求後，狀態會變更為 `Active`，而目的地網域會變為可供查詢。

網域頁面會顯示目的地網域的整體網域運作狀態和執行個體運作狀態詳細資訊。只有網域擁有者才能靈活建立、檢視、移除和監控與其網域的連線。

建立連線後，在連線網域節點之間流動的任何流量都會加密。當您將 VPC 網域連線至非 VPC 網域，且非 VPC 網域是可從網際網路接收流量的公有端點時，網域之間的跨叢集流量仍會加密且安全。

## 使用跨叢集搜尋測試跨區域和跨帳戶資料存取的安全設定
<a name="cross-cluster-search-security-testing"></a>

使用跨叢集搜尋設定跨區域和跨帳戶資料存取的存取許可後，建議您使用 測試設定[https://www.postman.com/](https://www.postman.com/)，這是協作 API 開發的第三方平台。

**使用 設定您的安全設定 Postman**

1. 在目的地網域上，為文件編製索引。以下是範例請求：

   ```
   POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1
   {
   "Dracula": "Bram Stoker"
   }
   ```

1. 若要從來源網域查詢此索引，請在查詢內包含目的地網域的連線別名。您可以在網域儀表板的 Connections (連線) 索引標籤上找到連線別名。以下是範例請求和截斷的回應：

   ```
   GET https://src-domain.us-east-1.es.amazonaws.com/connection_alias:books/_search
   {
   ...
     "hits": [
   {
   "_index": "source-destination:books",
     "_type": "_doc",
     "_id": "1",
     "_score": 1,
     "_source": {
   "Dracula": "Bram Stoker"
     }
   }
     ]
   }
   ```

1. （選用） 您可以在單一搜尋中建立包含多個網域的組態。例如，假設您設定了下列項目：

   `domain-a` 與 之間的連線`domain-b`，具有名為 的連線別名 `cluster_b`

   `domain-a` 與 之間的連線`domain-c`，具有名為 的連線別名 `cluster_c`

   在此情況下，您的搜尋會包含內容 `domain-a`、 `domain-b`和 `domain-c`。以下是範例請求和回應：

   請求

   ```
   GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search
   {
     "query": {
   "match": {
     "user": "domino"
   }
     }
   }
   ```

   回應：

   ```
   {
   "took": 150,
     "timed_out": false,
     "_shards": {
   "total": 3,
   "successful": 3,
   "failed": 0,
   "skipped": 0
     },
     "_clusters": {
   "total": 3,
   "successful": 3,
   "skipped": 0
     },
     "hits": {
   "total": 3,
   "max_score": 1,
   "hits": [
     {
   "_index": "local_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 1,
       "_source": {
   "user": "domino",
         "message": "This is message 1",
         "likes": 0
       }
     },
     {
   "_index": "cluster_b:b_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 2,
       "_source": {
   "user": "domino",
         "message": "This is message 2",
         "likes": 0
       }
     },
     {
   "_index": "cluster_c:c_index",
       "_type": "_doc",
       "_id": "0",
       "_score": 3,
       "_source": {
   "user": "domino",
         "message": "This is message 3",
         "likes": 0
       }
     }
   ]
     }
   }
   ```

如果您未選擇在連線設定中略過無法使用的叢集，則您搜尋的所有目的地叢集都必須可供搜尋請求成功執行。否則，整個請求會失敗，即使其中一個網域無法使用，也不會傳回任何搜尋結果。

## 刪除連線
<a name="cross-cluster-search-deleting-connection"></a>

刪除連線會停止目的地網域上的任何跨叢集搜尋操作。

您可以在來源或目的地網域上執行下列程序，以移除連線。移除連線後，狀態為 的連線會保持可見 `Deleted` 15 天。

您無法刪除具有作用中跨叢集連線的網域。若要刪除網域，請先從該網域中移除所有傳入和傳出連線。這可確保您在刪除網域前，將跨叢集網域使用者納入考量。

**刪除連線**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽中，選擇**網域**。

1. 選擇要刪除的網域名稱，然後選擇**連線**索引標籤。

1. 選取要刪除的連線名稱。

1. 選擇**刪除**，然後確認刪除。

# 從 VPC 端點管理對 OpenSearch UI 的存取
<a name="application-access-ui-from-vpc-endpoint"></a>

您可以使用 在 VPC 和 OpenSearch UI 之間建立私有連線 AWS PrivateLink。使用此連線，您可以存取 OpenSearch UI 應用程式，就像在相同的 VPC 中一樣。如此一來，您就不需要設定網際網路閘道、NAT 裝置、VPN 連線或 AWS Direct Connect 建立連線。VPC 中的執行個體不需要公有 IP 地址即可存取 OpenSearch UI。

若要建立此私有連線，您必須先建立採用 的介面端點 AWS PrivateLink。端點網路介面會自動在您為介面端點指定的每個子網路中建立。這些是請求者管理的網路介面，可做為目的地為 OpenSearch UI 應用程式之流量的進入點。

## 在 VPC 和 OpenSearch UI 之間建立私有連線
<a name="ui-access-from-vpc-endpoint-create"></a>

您可以使用 AWS 管理主控台 或 建立私有連線，以從 VPC 存取 OpenSearch UI AWS CLI。

### 在 VPC 和 OpenSearch UI 之間建立私有連線 （主控台）
<a name="ui-access-from-vpc-endpoint-create-console"></a>

**使用主控台在 VPC 和 OpenSearch UI 之間建立私有連線**

1. 登入 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 在左側導覽的**無伺服器**下，選擇 **VPC 端點**。

1. 選擇 **Create VPC endpoint** (建立 VPC 端點)。

1. 在**名稱**中，輸入端點的名稱。

1. 針對 **VPC**，選取您將從中存取 OpenSearch UI 應用程式的 VPC。

1. 針對**子網路**，選取您要從中存取 OpenSearch UI 應用程式的子網路。
**注意**  
端點的 IP 地址和 DNS 類型是以子網路類型為基礎：  
雙堆疊：如果所有子網路同時具有 IPv4 和 IPv6 地址範圍。
IPv6：如果所有子網路都是僅限 IPv6 的子網路。
IPv4：如果所有子網路都有 IPv4 地址範圍。

1. 針對**安全群組**，選取要與端點網路介面建立關聯的一或多個安全群組。
**注意**  
在此步驟中，您要限制您授權至端點之傳入流量的連接埠、通訊協定和來源。確保安全群組規則允許將使用 VPC 端點與 OpenSearch UI 應用程式通訊的資源，也可以與端點網路介面通訊。

1. 8. 選擇**建立端點**。

### 在 VPC 和 OpenSearch UI 之間建立私有連線 (AWS CLI)
<a name="ui-access-from-vpc-endpoint-create-cli"></a>

**使用 在 VPC 和 OpenSearch UI 之間建立私有連線 AWS CLI**  
執行下列命令。使用您的資訊取代*預留位置的值*。

```
aws opensearchserverless create-vpc-endpoint \
    --region region \
    --endpoint endpoint \
    --name vpc_endpoint_name \
    --vpc-id vpc_id \
    --subnet-ids subnet_ids
```

## 更新 VPC 端點政策以允許存取 OpenSearch UI 應用程式
<a name="ui-access-from-vpc-endpoint-allow"></a>

建立私有連線後，請更新 VPC 端點政策，以透過指定應用程式 ID 來允許存取 VPC 端點政策中的 OpenSearch UI 應用程式。

如需有關更新 VPC 端點政策的資訊，請參閱《 *AWS PrivateLink 指南*》中的[更新 VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)。

確定 VPC 端點政策包含下列陳述式。將*預留位置值*取代為您自己的資訊。

```
{
    "Statement": [{
        "Action": ["opensearch:*"],
        "Effect": "Allow",
        "Principal": "*",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "opensearch:ApplicationId": ["opensearch-ui-application-id"]
            }
        }
    }]
}
```

## 在 VPC 端點政策中撤銷對 OpenSearch UI 的存取
<a name="ui-access-from-vpc-endpoint-deny"></a>

OpenSearch UI 需要 VPC 端點政策中的明確許可，以允許使用者從 VPC 存取應用程式。如果您不再希望使用者從 VPC 存取 OpenSearch UI，您可以在端點政策中移除 許可。之後，使用者在嘗試存取 OpenSearch UI 時遇到`403 forbidden`錯誤訊息。

如需有關更新 VPC 端點政策的資訊，請參閱《 *AWS PrivateLink 指南*》中的[更新 VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)。

以下是拒絕從 VPC 存取 UI 應用程式的 VPC 端點政策範例：

```
{
    "Statement": [{
        "Action": ["opensearch:*"],
        "Effect": "Allow",
        "Principal": "*",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "opensearch:ApplicationId": [""]
            }
        }
    }]
}
```

# 將儲存的物件從 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`（如果使用臨時登入資料）。

# OpenSearch UI 端點和配額
<a name="opensearch-ui-endpoints-quotas"></a>

若要以程式設計方式連線至 AWS 服務，您可以使用 端點。服務配額也稱為限制，是您的帳戶 AWS 的服務資源或操作數量上限。

Amazon OpenSearch UI 是 OpenSearch Dashboards 的新一代 OpenSearch 使用者介面。它提供端點以存取您的 OpenSearch 儀表板。使用此主題來尋找 OpenSearch UI 的服務端點和服務配額。

如需其他 OpenSearch 服務的詳細資訊，請參閱[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html)。

## OpenSearch UI 端點
<a name="opensearch-ui-endpoints"></a>

OpenSearch UI 適用於下列區域：


| 區域名稱 | 區域 | 端點 | 通訊協定 | 
| --- | --- | --- | --- | 
| 亞太區域 (孟買) | ap-south-1 |  opensearch.ap-south-1.amazonaws.com es.ap-south-1.amazonaws.com  |  HTTPS HTTPS  | 
| Europe (Paris) | eu-west-3 |  opensearch.eu-west-3.amazonaws.com es.eu-west-3.amazonaws.com  |  HTTPS HTTPS  | 
| 美國東部 (俄亥俄) | us-east-2 |  opensearch.us-east-2.amazonaws.com es.us-east-2.amazonaws.com  |  HTTPS HTTPS  | 
| 歐洲 (愛爾蘭) | eu-west-1 |  opensearch.eu-west-1.amazonaws.com es.eu-west-1.amazonaws.com  |  HTTPS HTTPS  | 
| 歐洲 (法蘭克福) | eu-central-1 |  opensearch.eu-central-1.amazonaws.com es.eu-central-1.amazonaws.com  |  HTTPS HTTPS  | 
| 南美洲 (聖保羅) | sa-east-1 |  opensearch.sa-east-1.amazonaws.com es.sa-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 美國東部 (維吉尼亞北部) | us-east-1 |  opensearch.us-east-1.amazonaws.com es.us-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 歐洲 (倫敦) | eu-west-2 |  opensearch.eu-west-2.amazonaws.com es.eu-west-2.amazonaws.com  |  HTTPS HTTPS  | 
| 亞太地區 (東京) | ap-northeast-1 |  opensearch.ap-northeast-1.amazonaws.com es.ap-northeast-1.amazonaws.com  |  HTTPS HTTPS  | 
| 美國西部 (奧勒岡) | us-west-2 |  opensearch.us-west-2.amazonaws.com es.us-west-2.amazonaws.com  |  HTTPS HTTPS  | 
| 亞太區域 (新加坡) | ap-southeast-1 |  opensearch.ap-southeast-1.amazonaws.com es.ap-southeast-1.amazonaws.com  |  HTTPS HTTPS  | 
| 亞太地區 (悉尼) | ap-southeast-2 |  opensearch.ap-southeast-2.amazonaws.com es.ap-southeast-2.amazonaws.com  |  HTTPS HTTPS  | 
| 加拿大 (中部) | ca-central-1 |  opensearch.ca-central-1.amazonaws.com es.ca-central-1.amazonaws.com  |  HTTPS HTTPS  | 
| Europe (Stockholm) | eu-north-1 |  opensearch.eu-north-1.amazonaws.com es.eu-north-1.amazonaws.com  |  HTTPS HTTPS  | 
| 亞太地區 (香港) | ap-east-1 |  opensearch.ap-east-1.amazonaws.com es.ap-east-1.amazonaws.com  |  HTTPS HTTPS  | 
| 亞太地區 (首爾) | ap-northeast-2 |  opensearch.ap-northeast-2.amazonaws.com es.ap-northeast-2.amazonaws.com  |  HTTPS HTTPS  | 
| 亞太地區 (大阪) | ap-northeast-3 |  opensearch.ap-northeast-3.amazonaws.com es.ap-northeast-3.amazonaws.com  |  HTTPS HTTPS  | 
| 亞太地區 (海德拉巴) | ap-south-2 |  opensearch.ap-south-2.amazonaws.com es.ap-south-2.amazonaws.com  |  HTTPS HTTPS  | 
| 歐洲 (西班牙) | eu-south-2 |  opensearch.eu-south-2.amazonaws.com es.eu-south-2.amazonaws.com  |  HTTPS HTTPS  | 
| 美國西部 (加利佛尼亞北部) | us-west-1 |  opensearch.us-west-1.amazonaws.com es.us-west-1.amazonaws.com  |  HTTPS HTTPS  | 
| 歐洲 (蘇黎世) | eu-central-2 |  opensearch.eu-central-2.amazonaws.com es.eu-central-2.amazonaws.com  |  HTTPS HTTPS  | 
| 歐洲 (米蘭) | eu-south-1 |  opensearch.eu-south-1.amazonaws.com es.eu-south-1.amazonaws.com  |  HTTPS HTTPS  | 

## OpenSearch UI 服務配額
<a name="opensearch-ui-dashboards-quotas"></a>

 AWS 您的帳戶具有下列與 OpenSearch UI 資源相關的配額。


| 名稱 | 預設 | 可調整 | 備註 | 
| --- | --- | --- | --- | 
| 每個區域每個帳戶的 OpenSearch UI 應用程式 | 30 | 是 |  每個區域每個帳戶可建立的 OpenSearch UI 應用程式數量上限。 您可以使用服務配額將限制提高到 50，並自動獲得核准。若要請求更高的限制，請提交支援票證。  | 