

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

# Amazon OpenSearch Serverless
<a name="serverless"></a>

Amazon OpenSearch Serverless 是 Amazon OpenSearch Service 的隨需自動擴展組態。與需要手動容量管理的佈建 OpenSearch 網域不同，OpenSearch Serverless 集合會根據應用程式的需求自動擴展運算資源。

OpenSearch Serverless 為不常見、間歇性或無法預測的工作負載提供經濟實惠的解決方案。它會根據應用程式的用量，自動擴展運算容量來最佳化成本。無伺服器集合使用與佈建 OpenSearch Service 網域相同的高容量、分散式和高可用性儲存磁碟區。

OpenSearch Serverless 集合一律會加密。您可以選擇加密金鑰，但無法停用加密。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 中的加密](serverless-encryption.md)

## 優勢
<a name="serverless-benefits"></a>

OpenSearch Serverless 具有下列優勢：
+ **比佈建簡單**：OpenSearch Serverless 可消除管理 OpenSearch 叢集和容量的大部分複雜性。它會自動調整叢集的大小並進行調校，負責碎片和索引生命週期管理。它也會管理服務軟體更新和 OpenSearch 版本升級。所有更新和升級都屬於非中斷式。
+ **具有成本效益**：使用 OpenSearch Serverless 時，您僅需為實際使用的資源付費。如此就不需要為尖峰工作負載預先佈建和過度佈建。
+ **高可用性**：OpenSearch Serverless 透過備援功能支援生產工作負載，以防止可用區域中斷和基礎架構故障。
+ **可擴展性**：OpenSearch Serverless 會自動調整資源規模，以維持一致的快速資料擷取速率和查詢回應時間。

# 什麼是 Amazon OpenSearch Serverless？
<a name="serverless-overview"></a>

Amazon OpenSearch Serverless 是 Amazon OpenSearch Service 的隨需無伺服器選項，可消除佈建、設定和調校 OpenSearch 叢集的操作複雜性。對於偏好不自我管理叢集或缺乏專用資源和專業知識來操作大規模部署的組織來說，這是理想的選擇。使用 OpenSearch Serverless，您可以搜尋和分析大量資料，而無需管理基礎基礎設施。

OpenSearch Serverless *集合*是一組 OpenSearch 索引，可共同運作以支援特定工作負載或使用案例。相較於需要手動佈建的自我管理 OpenSearch 叢集，集合可簡化操作。

集合使用與佈建 OpenSearch Service 網域相同的高容量、分散式和高可用性儲存體，但透過消除手動組態和調校來進一步降低複雜性。集合內的資料會在傳輸中加密。OpenSearch Serverless 也支援 OpenSearch Dashboards，提供用於資料分析的介面。

目前，無伺服器集合執行 OpenSearch 2.17.x 版。隨著新版本發佈，OpenSearch Serverless 會自動升級集合，以整合新功能、錯誤修正和效能改善。

OpenSearch Serverless 支援與 OpenSearch 開放原始碼套件相同的擷取和查詢 API 操作，因此您可以繼續使用現有的用戶端和應用程式。您的用戶端必須相容於 OpenSearch 2.x，以便使用 OpenSearch Serverless。如需詳細資訊，請參閱[將資料擷取至 Amazon OpenSearch Serverless 集合](serverless-clients.md)。

**Topics**
+ [OpenSearch Serverless 使用案例](#serverless-use-cases)
+ [運作方式](#serverless-process)
+ [選擇集合類型](#serverless-usecase)
+ [定價](#serverless-pricing)
+ [支援的 AWS 區域](#serverless-regions)
+ [限制](#serverless-limitations)
+ [比較 OpenSearch Service 和 OpenSearch Serverless](serverless-comparison.md)

## OpenSearch Serverless 使用案例
<a name="serverless-use-cases"></a>

OpenSearch Serverless 支援兩種主要使用案例：
+ **日誌分析**：日誌分析區段專注於分析大量半結構化、機器產生的時間序列資料，以提供操作和使用者行為洞察。
+ **全文檢索搜尋**：全文檢索搜尋區段強化內部網路中的應用程式 (內容管理系統、法律文件) 以及面向網際網路的應用程式，例如電子商務網站內容搜尋。

 建立集合時，您可以選擇上述其中一種使用案例。如需詳細資訊，請參閱[選擇集合類型](#serverless-usecase)。

## 運作方式
<a name="serverless-process"></a>

傳統 OpenSearch 叢集有一組執行個體，可執行索引編製和搜尋操作，而索引儲存與運算容量緊密結合。相反地，OpenSearch Serverless 使用雲端原生架構，將索引 （擷取） 元件與搜尋 （查詢） 元件分開，並將 Amazon S3 作為索引的主要資料儲存體。

此分開的架構可讓您獨立擴展搜尋和索引編製功能，並且獨立於 S3 中的索引資料。該架構也會隔離擷取和查詢操作，以便同時執行這兩項操作，而不會爭用資源。

將資料寫入集合時，OpenSearch Serverless 會將資料分發到*索引編製*運算單元。索引編製運算單元會擷取傳入資料，並將索引移至 S3。對集合資料執行搜尋時，OpenSearch Serverless 會將請求路由至容納所查詢資料的*搜尋*運算單元。搜尋運算單元會直接從 S3 下載索引資料 (如果尚未在本機快取資料)、執行搜尋操作並執行彙總。

下圖說明了此分開的架構：

![\[Diagram showing indexing and search processes using compute units and Amazon S3 storage.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/Serverless.png)


用於資料擷取、搜尋和查詢的 OpenSearch Serverless 運算容量是以 OpenSearch 運算單元 (OCU) 來測量。每個 OCU 都是 6 GiB 記憶體和對應虛擬 CPU (vCPU) 的組合，並會建立 Amazon S3 的資料管道。每個 OCU 都包含足夠的暫時性熱儲存，可容納 120 GiB 的索引資料。

建立第一個集合時，OpenSearch Serverless 會執行個體化兩個 OCU，一個用於索引編製，另一個用於搜尋。為確保高可用性，它也會啟動另一個可用區域中的待命節點集。為了開發和測試目的，您可以停用集合的**啟用備援**設定，這會消除兩個待命複本，並且只會執行個體化兩個 OCUs。根據預設，會啟用備援作用中複本，這表示帳戶的第一個集合總共會執行個體化四個 OCUs。

即使在任何集合端點上沒有任何活動，這些 OCU 也會存在。所有後續的集合都會共用這些 OCU。當您在同一個帳戶中建立其他集合時，OpenSearch Serverless 只會根據您指定的[容量限制](serverless-scaling.md#serverless-scaling-configure)，視需要新增額外的搜尋和擷取 OCU 來支援集合。容量會隨著運算用量的減少而縮減。

如需有關這些 OCU 如何計費的資訊，請參閱 [定價](#serverless-pricing)。

## 選擇集合類型
<a name="serverless-usecase"></a>

OpenSearch Serverless 支援三種主要集合類型：

**時間序列** – 日誌分析區段，可即時分析大量半結構化、機器產生的資料，提供操作、安全性、使用者行為和業務效能的洞見。

**搜尋** – 啟用內部網路內應用程式的全文搜尋，例如內容管理系統和法律文件儲存庫，以及電子商務網站搜尋和內容探索等面向網際網路的應用程式。

**向量搜尋** – 向量內嵌的語意搜尋可簡化向量資料管理，並啟用機器學習 (ML) 擴增搜尋體驗。它支援生成式 AI 應用程式，例如聊天機器人、個人助理和詐騙偵測。

您可以在第一次建立集合時選擇集合類型：

![\[Three collection type options: Time series, Search, and Vector search for different data use cases.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-collection-type.png)


您選擇的集合類型取決於您計劃擷取至集合的資料類型，以及計劃的查詢方式。您無法在建立後變更集合類型。

集合類型有以下顯著**差異**：
+ 對於*搜尋*和*向量搜尋*集合，所有資料都會存放在熱儲存體中，以確保快速的查詢回應時間。*時間序列*集合使用熱儲存和暖儲存組合，其中最新的資料會保留在熱儲存中，以優化更頻繁存取資料的查詢回應時間。
+ 對於*時間序列*和*向量搜尋*集合，您無法依自訂文件 ID 編製索引，也無法依 upsert 請求更新。此操作保留給搜尋使用案例。您可以改為依文件 ID 更新。如需詳細資訊，請參閱[支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations)。
+ 對於*搜尋*和*時間序列*集合，您無法使用 k-NN 類型索引。

## 定價
<a name="serverless-pricing"></a>

AWS 會向您收取下列 OpenSearch Serverless 元件的費用：
+ 資料擷取運算
+ 搜尋和查詢運算
+ 保留在 Amazon S3 中的儲存

一個 OCU 包含 6 GB 的 RAM、對應的 vCPU、GP3 儲存和資料傳輸到 Amazon S3。您可以計費的最小單位是每小時 0.5 個 OCU. AWS bills OCU，具有第二級精細程度。在您的帳戶陳述式中，您會看到一個以 OCU 小時為單位的運算項目，其中包含用於資料擷取的標籤和用於搜尋的標籤。 AWS 也會每月針對存放在 Amazon S3 中的資料向您收費。它不會向您收取使用 OpenSearch Dashboards 的費用。

當您建立具有備援作用中複本的集合時，您至少需要為擷取支付 1 個 OCU (0.5 個 OCU × 2)，包括主要和待命，以及為搜尋支付 1 個 OCU (0.5 個 OCU × 2)：
+ 1 個用於擷取的 OCU (0.5 個 OCU × 2)，包括主要和待命
+ 1 個用於搜尋的 OCU (0.5 個 OCU × 2)

如果您停用備援作用中複本，則會針對您帳戶中的第一個集合向您收取至少 1 個 OCU (0.5 個 OCU x 2) 的費用。所有後續的集合可以共用這些 OCU。

OpenSearch Serverless 會根據支援集合所需的運算能力和儲存體， OCUs 以 1 個 OCU 的增量新增額外的 OCU。您可以為您的帳戶設定 OCU 數量上限，以控制成本。

**注意**  
具有唯一 的集合 AWS KMS keys 無法與其他集合共用 OCUs。

OpenSearch Serverless 會嘗試使用所需的最低資源來考慮不斷變化的工作負載。隨時佈建OCUs 數量可能不同，也不確切。隨著時間的推移，OpenSearch Serverless 使用的演算法會持續改進，以將系統用量降至最低。

如需完整定價資訊，請參閱 [Amazon OpenSearch Service 定價](https://aws.amazon.com/opensearch-service/pricing/)。

## 支援的 AWS 區域
<a name="serverless-regions"></a>

OpenSearch Serverless 可在 AWS 區域 OpenSearch Service 提供的子集中使用。如需支援區域的清單，請參閱《》中的 [Amazon OpenSearch Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html)*AWS 一般參考*。

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

OpenSearch Serverless 具有下列限制：
+ 不支援某些 OpenSearch API 操作。請參閱 [支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations)。
+ 不支援某些 OpenSearch 外掛程式。請參閱 [支援的 OpenSearch 外掛程式](serverless-genref.md#serverless-plugins)。
+ 目前無法將您的資料從受管的 OpenSearch Service 網域自動遷移至無伺服器集合。您必須將資料從網域重新索引至集合。
+ 不支援集合的跨帳户存取權。您無法在加密或資料存取政策中包含其他帳戶的集合。
+ 不支援自訂 OpenSearch 外掛程式。
+ OpenSearch Serverless 集合支援自動化快照。不支援手動快照。如需詳細資訊，請參閱[使用快照備份集合](serverless-snapshots.md)。
+ 不支援跨區域搜尋和複寫。
+ 您可以在單一帳戶和區域中擁有的無伺服器資源數量有限制。請參閱 [OpenSearch Serverless 配額](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-limits-serverless)。
+ 向量搜尋集合中索引的重新整理間隔約為 60 秒。搜尋和時間序列集合中索引的重新整理間隔約為 10 秒。
+ 碎片數量、間隔數量和重新整理間隔不可修改，並由 OpenSearch Serverless 處理。碎片策略是以集合類型和流量為基礎。例如，時間序列集合會根據寫入流量瓶頸擴展主要碎片。
+ 支援 OpenSearch 版本最高達 2.1 的地理空間功能。

# 比較 OpenSearch Service 和 OpenSearch Serverless
<a name="serverless-comparison"></a>

在 OpenSearch Serverless 中，某些概念和功能不同於佈建的 OpenSearch Service 網域的對應功能。例如，一個重要的差異是 OpenSearch Serverless 沒有叢集或節點的概念。

下表說明 OpenSearch Serverless 中的重要功能和概念與佈建的 OpenSearch Service 網域中的同等功能有何不同。


| 功能 | OpenSearch Service | OpenSearch Serverless | 
| --- | --- | --- | 
|  **網域與集合比較**  |  索引會保留在*網域*中，這些是預先佈建的 OpenSearch 叢集。 如需詳細資訊，請參閱[建立和管理 Amazon OpenSearch Service 網域](createupdatedomains.md)。  |  索引會保留在*集合*中，這些是代表特定工作負載或使用案例的索引邏輯分組。 如需詳細資訊，請參閱[管理 Amazon OpenSearch Serverless 集合](serverless-manage.md)。  | 
|  **節點類型和容量管理**  |  您可以使用符合成本和效能規格的節點類型來建置叢集。您必須計算自己的儲存要求，並選擇網域的執行個體類型。 如需詳細資訊，請參閱[調整 Amazon OpenSearch Service 網域的大小](sizing-domains.md)。  |  OpenSearch Serverless 會根據容量用量，為您的帳戶自動擴展和佈建額外的運算單元。 如需詳細資訊，請參閱[管理 Amazon OpenSearch Serverless 的容量限制](serverless-scaling.md)。  | 
|  **帳單**  |  您需對於每小時 EC2 執行個體的使用，以及連接到執行個體的任何 EBS 儲存磁碟區的累積大小支付費用。 如需詳細資訊，請參閱[Amazon OpenSearch Service 定價](what-is.md#pricing)。  |  我們會向您收取資料擷取運算、搜尋和查詢運算以及保留在 S3 中的儲存的費用 (以 OCU 小時計算)。 如需詳細資訊，請參閱[定價](serverless-overview.md#serverless-pricing)。  | 
|  **加密**  |  網域的靜態加密是*選擇性*。 如需詳細資訊，請參閱[Amazon OpenSearch Service 的靜態資料加密](encryption-at-rest.md)。  |  集合*需要*靜態加密。 如需詳細資訊，請參閱[Amazon OpenSearch Serverless 中的加密](serverless-encryption.md)。  | 
|  **資料存取控制**  |  網域內資料的存取權由 IAM 政策和[精細存取控制](fgac.md)決定。  |  集合內的資料存取權由[資料存取政策](serverless-data-access.md)決定。  | 
| 支援的 OpenSearch 操作 |  OpenSearch Service 支援所有 OpenSearch API 操作的子集。 如需詳細資訊，請參閱[Amazon OpenSearch Service 中支援的操作](supported-operations.md)。  |  OpenSearch Serverless 支援 OpenSearch API 操作的不同子集。 如需詳細資訊，請參閱[Amazon OpenSearch Serverless 中支援的操作和外掛程式](serverless-genref.md)。  | 
| Dashboards 登入 |  使用使用者名稱和密碼登入。 如需詳細資訊，請參閱[以主要使用者身分存取 OpenSearch Dashboards](fgac.md#fgac-dashboards)。  |  如果您登入 AWS 主控台並導覽至儀表板 URL，您將自動登入。 如需詳細資訊，請參閱[存取 OpenSearch Dashboards](serverless-dashboards.md)。  | 
| API |  使用 [OpenSearch Service API 操作](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/Welcome.html)，以程式設計方式與 OpenSearch Service 互動。  |  使用 [OpenSearch Serverless API 操作](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html)，以程式設計方式與 OpenSearch Serverless 互動。  | 
| 網路存取 |  網域的網路設定會套用至網域端點和 OpenSearch Dashboards 端點。兩者的網路存取緊密結合。  |  網域端點和 OpenSearch Dashboards 端點的網路設定會分開。您可以選擇不設定 OpenSearch Dashboards 的網路存取。 如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的網路存取](serverless-network.md)。  | 
| 簽署請求 |  使用 OpenSearch 高階和低階 REST 用戶端來簽署請求。將服務名稱指定為 `es`。  |  OpenSearch Serverless 此時支援 OpenSearch Service 支援的用戶端子集。 簽署請求時，請將服務名稱指定為 `aoss`。需要有 `x-amz-content-sha256` 標頭。如需詳細資訊，請參閱[使用其他用戶端簽署 HTTP 請求](serverless-clients.md#serverless-signing)。  | 
| OpenSearch 版本升級 |  新版本的 OpenSearch 推出時，您可以手動升級網域。您有責任確保您的網域符合升級要求，並且已解決任何突破性變更。  |  OpenSearch Serverless 會自動將您的集合升級至新的 OpenSearch 版本。一旦有新版本可用，不一定需要升級。  | 
| 服務軟體更新 |  您可以在服務軟體更新可用時，手動將更新套用至您的網域。  |  OpenSearch Serverless 將自動更新您的集合，以使用最新錯誤修正、功能和效能改善。  | 
| VPC 存取 |  您可以[在 VPC 中佈建您的網域](vpc.md)。 您也可以建立其他 [OpenSearch Service 受管 VPC 端點](vpc-interface-endpoints.md)來存取網域。  |  您可以為帳戶建立一個或多個 [OpenSearch Serverless 受管 VPC 端點](serverless-vpc.md)。然後，請將這些端點包含在[網路政策](serverless-network.md)中。  | 
| SAML 身分驗證 |  您可以針對每個網域啟用 SAML 身分驗證。 如需詳細資訊，請參閱[OpenSearch Dashboards 的 SAML 身分驗證](saml.md)。  |  您可以在帳戶層級設定一個或多個 SAML 提供者，然後在資料存取政策中包含相關聯的使用者和群組 ID。 如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的 SAML 身分驗證](serverless-saml.md)。  | 
| Transport Layer Security (TLS) | OpenSearch Service 支援 TLS 1.2，但建議您使用 TLS 1.3。 | OpenSearch Serverless 支援 TLS 1.2，但建議您使用 TLS 1.3。 | 

# 教學課程：Amazon OpenSearch Serverless 入門
<a name="serverless-getting-started"></a>

本教學課程會逐步引導您快速啟動和執行 Amazon OpenSearch Serverless *搜尋*集合的基本步驟。搜尋集合可讓您為內部網路中的應用程式和面向網際網路的應用程式提供支援，例如電子商務網站搜尋和內容搜尋。

若要了解如何使用*向量搜尋*集合，請參閱 [使用向量搜尋集合](serverless-vector-search.md)。如需使用集合的詳細資訊，請參閱本指南中的 [管理 Amazon OpenSearch Serverless 集合](serverless-manage.md)和其他主題。

在本教學課程中，您會完成下列步驟：

1. [設定許可](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-getting-started.html#serverless-gsg-permissions)

1. [建立集合](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-getting-started.html#serverless-gsg-create)

1. [上傳並搜尋資料](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-getting-started.html#serverless-gsg-index)

1. [刪除集合](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-getting-started.html#serverless-gsg-delete)
**注意**  
建議您僅針對 使用 ASCII 字元`IndexName`。如果您不將 ASCII 字元用於 `IndexName`，CloudWatch 指標`IndexName`中的 會轉換為非 ASCII 字元的 URL 編碼格式。

## 步驟 1：設定許可
<a name="serverless-gsg-permissions"></a>

若要完成本教學課程並在一般情形下使用 OpenSearch Serverless，您必須擁有正確的 IAM 許可。在本教學課程中，您將建立集合、上傳並搜尋資料，然後刪除該集合。

使用者或角色必須連接[身分型政策](security-iam-serverless.md#security-iam-serverless-id-based-policies)，該政策包含以下最低許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "aoss:CreateCollection",
        "aoss:ListCollections",
        "aoss:BatchGetCollection",
        "aoss:DeleteCollection",
        "aoss:CreateAccessPolicy",
        "aoss:ListAccessPolicies",
        "aoss:UpdateAccessPolicy",
        "aoss:CreateSecurityPolicy",
        "aoss:GetSecurityPolicy",
        "aoss:UpdateSecurityPolicy",
        "iam:ListUsers",
        "iam:ListRoles"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

如需有關 OpenSearch Serverless IAM 許可的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的身分和存取管理](security-iam-serverless.md)。

## 步驟 2：建立集合
<a name="serverless-gsg-create"></a>

集合是一組 OpenSearch 索引，可共同運作以支援特定工作負載或使用案例。

**建立 OpenSearch Serverless 集合**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **Create collection** (建立集合)。

1. 將集合命名為 **movies**。

1. 對於集合類型，選擇 **Search** (搜尋)。如需詳細資訊，請參閱[選擇集合類型](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html#serverless-usecase)。

1. 針對**安全性**，選擇**標準建立**。

1. 在**加密**下，選取**使用 AWS 擁有的金鑰**。這是 AWS KMS key OpenSearch Serverless 用來加密資料的 。

1. 在 **Network** (網路) 下，設定集合的網路設定。
   + 對於存取類型，選取 **Public** (公用)。
   + 針對 資源類型，選擇**啟用對 OpenSearch 端點的存取**和**啟用對 OpenSearch Dashboards 的存取**。您將使用 OpenSearch Dashboards 上傳並搜尋資料，因此您需同時啟用兩者。

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

1. 對於 **Configure data access** (設定資料存取)，請設定集合的存取設定。[資料存取政策](serverless-data-access.md)讓使用者和角色可以存取集合中的資料。在本教學課程中，我們將為單一使用者提供為 *movies* 集合中資料編製索引和進行搜尋所需的許可。

   建立可存取 *movies* 集合的單一規則。將規則命名為 **Movies collection access** (電影集合存取)。

1. 選擇 **Add principals** (新增主體)、**IAM users and roles** (IAM 使用者和角色)，然後選取您將用來登入 OpenSearch Dashboards，並為資料編制索引的使用者或角色。選擇**儲存**。

1. 在 **Index permissions** (索引許可) 下，選取所有許可。

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

1. 對於存取政策設定，請選擇 **Create a new data access policy** (建立新的資料存取政策) 並命名政策 **movies**。

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

1. 檢閱集合設定，然後選擇 **Submit** (提交)。等待幾分鐘，讓收集狀態變成 `Active`。

## 步驟 3：上傳並搜尋資料
<a name="serverless-gsg-index"></a>

您可以使用 [Postman](https://www.postman.com/downloads/) 或 cURL 將資料上傳至 OpenSearch Serverless 集合。為了簡潔起見，這些範例使用 OpenSearch Dashboards 主控台中的 **Dev Tools** (開發工具)。

**為 movies 集合中的資料編製索引和進行搜尋**

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **movies** 集合以開啟其詳細資訊頁面。

1. 選擇集合的 OpenSearch Dashboards URL。URL 採用的格式為 `https://dashboards.{region}.aoss.amazonaws.com/_login/?collectionId={collection-id}`。

1. 在 OpenSearch Dashboards 中，開啟左側導覽窗格，然後選擇 **Dev Tools** (開發工具)。

1. 若要建立名為 *movies-index* 的單一索引，請傳送以下請求：

   ```
   PUT movies-index 
   ```  
![\[OpenSearch Dashboards console showing PUT request for movies-index with JSON response.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-gsg-create.png)

1. 若要將單一文件的索引編製為 *movies-index*，請傳送以下請求：

   ```
   PUT movies-index/_doc/1
   { 
     "title": "Shawshank Redemption",
     "genre": "Drama",
     "year": 1994
   }
   ```

1. 若要在 OpenSearch Dashboards 中搜尋資料，您需要設定至少一個索引模式。OpenSearch 使用這些模式來識別您要分析的索引。開啟左側導覽窗格，依序選擇 **Stack Management** (堆疊管理)、**Index Patterns** (索引模式)，然後選擇 **Create index pattern** (建立索引模式)。對於本教學課程，輸入 *movies*。

1. 選擇 **Next step** (下一步)，然後選擇 **Create index pattern** (建立索引模式)。建立模式之後，您可以檢視各種文件欄位，例如 `title` 和 `genre`。

1. 若要開始搜尋資料，請再次開啟左側導覽窗格，然後選擇 **Discover** (探索)，或使用開發工具中的[搜尋 API](https://opensearch.org/docs/latest/api-reference/search/)。

## 處理錯誤
<a name="serverless-gsg-data-plane-errors"></a>

執行索引和搜尋操作時，您可能會收到下列錯誤回應：
+ `HTTP 507` – 表示發生內部伺服器錯誤。此錯誤通常表示 OpenSearch 運算單位 OCUs) 因請求的磁碟區或複雜性而超載。雖然 OpenSearch Serverless 會自動擴展以管理負載，但部署其他資源可能會延遲。

  若要緩解此錯誤，請實作指數退避重試政策。此方法會暫時降低請求率，以有效管理負載。如需詳細資訊，請參閱 SDK *AWS SDKs 和工具參考指南*中的[重試行為](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html)。
+ `HTTP 402` – 表示您已達到 OpenSearch 運算單位 (OCU) 容量上限。最佳化工作負載以減少 OCU 用量或請求增加配額。

## 步驟 4：刪除集合
<a name="serverless-gsg-delete"></a>

*movies* 集合用於測試目的，因此請確保在完成實驗後將其刪除。

**刪除 OpenSearch Serverless 集合**

1. 返回 **Amazon OpenSearch Service** 主控台。

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **movies** 集合。

1. 選擇 **Delete** (刪除)，並確認刪除。

## 後續步驟
<a name="serverless-gsg-next"></a>

您現在已知道如何建立集合並為資料編製索引，您可能想要嘗試以下一些練習：
+ 查看用於建立集合的更多進階選項。如需詳細資訊，請參閱[管理 Amazon OpenSearch Serverless 集合](serverless-manage.md)。
+ 了解如何設定安全政策以大規模管理集合安全性。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的安全概觀](serverless-security.md)。
+ 探索將資料的索引編製為集合的其他方法。如需詳細資訊，請參閱[將資料擷取至 Amazon OpenSearch Serverless 集合](serverless-clients.md)。

# Amazon OpenSearch Serverless 集合
<a name="serverless-collections"></a>

Amazon OpenSearch Serverless 中的*集合*是代表分析工作負載的一個或多個索引的邏輯分組。OpenSearch Serverless 會自動管理和調整集合，需要最少的手動輸入。

**Topics**
+ [管理 Amazon OpenSearch Serverless 集合](serverless-manage.md)
+ [使用向量搜尋集合](serverless-vector-search.md)
+ [搭配 Amazon OpenSearch Serverless 使用資料生命週期政策](serverless-lifecycle.md)
+ [使用 AWS SDKs與 Amazon OpenSearch Serverless 互動](serverless-sdk.md)
+ [使用 CloudFormation 建立 Amazon OpenSearch Serverless 集合](serverless-cfn.md)
+ [使用快照備份集合](serverless-snapshots.md)
+ [Amazon OpenSearch Serverless 中的 Zstandard Codec 支援](serverless-zstd-compression.md)
+ [使用衍生來源儲存儲存體](serverless-derived-source.md)

# 管理 Amazon OpenSearch Serverless 集合
<a name="serverless-manage"></a>

Amazon OpenSearch Serverless 中的*集合*是代表分析工作負載的一個或多個索引的邏輯分組。OpenSearch Serverless 會自動管理和調整集合，需要最少的手動輸入。

**Topics**
+ [設定集合的許可](serverless-collection-permissions.md)
+ [Serverless 的自動語意擴充](serverless-semantic-enrichment.md)
+ [建立集合](serverless-create.md)
+ [存取 OpenSearch Dashboards](serverless-dashboards.md)
+ [檢視集合](serverless-list.md)
+ [刪除集合](serverless-delete.md)

# 設定集合的許可
<a name="serverless-collection-permissions"></a>

OpenSearch Serverless 使用下列 AWS Identity and Access Management (IAM) 許可來建立和管理集合。您可以指定 IAM 條件，將使用者限制在特定集合內。
+ `aoss:CreateCollection` ：建立集合。
+ `aoss:ListCollections` ：列出目前帳戶中的集合。
+ `aoss:BatchGetCollection` ：取得有關一個或多個集合的詳細資訊。
+ `aoss:UpdateCollection` ：修改集合。
+ `aoss:DeleteCollection` ：刪除集合。

下列身分型存取政策範例提供使用者管理名為 `Logs` 的單一集合所需的最低許可：

```
[
   {
      "Sid":"Allows managing logs collections",
      "Effect":"Allow",
      "Action":[
         "aoss:CreateCollection",
         "aoss:ListCollections",
         "aoss:BatchGetCollection",
         "aoss:UpdateCollection",
         "aoss:DeleteCollection",
         "aoss:CreateAccessPolicy",
         "aoss:CreateSecurityPolicy"
      ],
      "Resource":"*",
      "Condition":{
         "StringEquals":{
            "aoss:collection":"Logs"
         }
      }
   }
]
```

需要加密、網路和資料存取政策，才能讓集合正常運作，因此要將 `aoss:CreateAccessPolicy` 和 `aoss:CreateSecurityPolicy` 包含在內。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的身分和存取管理](security-iam-serverless.md)。

**注意**  
如果您要在帳戶中建立第一個集合，您也需要 `iam:CreateServiceLinkedRole` 許可。如需詳細資訊，請參閱[使用服務連結角色建立 OpenSearch Serverless 集合](serverless-service-linked-roles.md)。

# Serverless 的自動語意擴充
<a name="serverless-semantic-enrichment"></a>

## 簡介
<a name="serverless-semantic-enrichment-intro"></a>

相較於語義搜尋，自動語意擴充功能可協助將搜尋相關性提高高達 20%。自動語意擴充可免除管理您自己的 ML （機器學習） 模型基礎設施以及與搜尋引擎整合的繁重工作。此功能適用於所有三種無伺服器集合類型：搜尋、時間序列和向量。

## 什麼是語意搜尋
<a name="serverless-semantic-enrichment-whats-is"></a>

 傳統搜尋引擎依賴word-to-word字比對 （稱為語彙搜尋） 來尋找查詢的結果。雖然這適用於電視型號等特定查詢，但它難以進行更抽象的搜尋。例如，在搜尋 "shoes for the Beach" 時，語彙搜尋只會比對目錄項目中的個別單字 "shoes"、"beach"、"for" 和 "the"，可能會缺少不包含確切搜尋詞彙的相關產品，例如 "water-resistantss" 或 "surf shoes"。

 語意搜尋會傳回查詢結果，不僅包含關鍵字比對，還包含使用者搜尋的意圖和內容意義。例如，如果使用者搜尋「如何治療問題」，語意搜尋系統可能會傳回下列結果：
+ Migraine 補救措施
+ 疼痛管理技巧
+ Over-the-counter止痛藥 

## 模型詳細資訊和效能基準
<a name="serverless-semantic-enrichment-model-detail"></a>

 雖然此功能可處理幕後的技術複雜性，而不會暴露基礎模型，但我們透過簡短的模型描述和基準結果來提供透明度，協助您在關鍵工作負載中做出採用特徵的明智決策。

 自動語意擴充使用服務受管、預先訓練的稀疏模型，可有效運作，而無需自訂微調。此模型會分析您指定的欄位，並根據從各種訓練資料中學到的關聯將它們擴展到稀疏向量。展開的詞彙及其重要性權重會以原生 Lucene 索引格式存放，以便有效擷取。我們已使用[僅限文件模式最佳化此程序，](https://docs.opensearch.org/docs/latest/vector-search/ai-search/neural-sparse-with-pipelines/#step-1a-choose-the-search-mode)其中編碼只會在資料擷取期間發生。搜尋查詢只是字符化，而不是透過稀疏模型處理，使解決方案同時符合成本效益和效能。

 我們在功能開發期間的效能驗證使用 [MS MARCO](https://huggingface.co/datasets/BeIR/msmarco) 段落擷取資料集，段落平均 334 個字元。對於相關性評分，我們在英文內容的 [BEIR](https://github.com/beir-cellar/beir) 基準上測量了前 10 個搜尋結果的平均標準化折扣累積收益 (NDCG) (ndcg@10)，在多語言內容的 MIRACL 上測量了平均 ndcg@10。我們透過用戶端的第 90 個百分位數 (p90) 測量和搜尋回應 p90 [取得值來評估延遲。](https://github.com/beir-cellar/beir)這些基準提供搜尋相關性和回應時間的基準效能指標。以下是關鍵基準號碼 - 
+ 英文 - 相較於語彙搜尋，相關性改善 20%。它也比語義搜尋降低了 7.7% 的 P90 搜尋延遲 (BM25 為 26 毫秒，而自動語意擴充為 24 毫秒）。
+ 多語言 - 相較於語意搜尋，相關性改善 105%，而相較於語意搜尋，P90 搜尋延遲增加 38.4% (BM25 為 26 毫秒，自動語意擴充為 36 毫秒）。

鑑於每個工作負載的獨特性質，我們建議您在做出實作決策之前，先使用自己的基準標準在開發環境中評估此功能。

## 支援的語言
<a name="serverless-semantic-enrichment-languages"></a>

此功能支援英文。此外，模型也支援阿拉伯文、孟加拉文、中文、芬蘭文、法文、印地文、印尼文、日文、韓文、波斯文、俄文、西班牙文、斯瓦希里文和特拉古文。

## 為無伺服器集合設定自動語意擴充索引
<a name="serverless-semantic-enrichment-index-setup"></a>

為您的文字欄位設定啟用自動語意擴充的索引非常簡單，您可以在新索引建立期間透過主控台、APIs 和 CloudFormation 範本進行管理。若要為現有索引啟用它，您需要為文字欄位重新建立已啟用自動語意擴充的索引。

主控台體驗 - AWS 主控台可讓您使用自動語意擴充欄位輕鬆建立索引。選取集合後，您會在主控台頂端找到建立索引按鈕。按一下建立索引按鈕後，您會找到定義自動語意擴充欄位的選項。在一個索引中，您可以結合英文和多語言的自動語意擴充，以及語彙欄位。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ase-console-exp-serverless.png)


API 體驗 - 若要使用 AWS 命令列界面 (AWS CLI) 建立自動語意擴充索引，請使用 create-index 命令：

```
aws opensearchserverless create-index \
--id [collection_id] \
--index-name [index_name] \
--index-schema [index_body] \
```

 在下列索引結構描述範例中， *title\$1semantic *欄位的欄位類型設定為*文字*，且參數 *semantic\$1enrichment *設定為狀態 *ENABLED*。設定*語意\$1enrichment* 參數可在 *title\$1semantic* 欄位上啟用自動語意擴充。您可以使用 *language\$1options* 欄位來指定*英文*或*多語言*。

```
    aws opensearchserverless create-index \
    --id XXXXXXXXX \
    --index-name 'product-catalog' \
    --index-schema '{
    "mappings": {
        "properties": {
            "product_id": {
                "type": "keyword"
            },
            "title_semantic": {
                "type": "text",
                "semantic_enrichment": {
                    "status": "ENABLED",
                    "language_options": "english"
                }
            },
            "title_non_semantic": {
                "type": "text"
            }
        }
    }
}'
```

若要描述建立的索引，請使用下列命令：

```
aws opensearchserverless get-index \
--id [collection_id] \
--index-name [index_name] \
```

您也可以使用 CloudFormation 範本 (Type：AWS::OpenSearchServerless::CollectionIndex)，在集合佈建期間和建立集合之後建立語意搜尋。

## 資料擷取和搜尋
<a name="serverless-semantic-enrichment-data-ingest"></a>

建立啟用自動語意擴充的索引後，此功能會在資料擷取程序期間自動運作，而不需要額外的組態。

資料擷取：當您將文件新增至索引時，系統會自動：
+ 分析您為語意擴充指定的文字欄位
+ 使用 OpenSearch Service 受管稀疏模型產生語意編碼
+ 將這些豐富的表示與原始資料一起存放

此程序使用 OpenSearch 的內建 ML 連接器和擷取管道，這些管道會在幕後自動建立和管理。

搜尋：語意擴充資料已編製索引，因此查詢會有效率地執行，而不會再次叫用 ML 模型。這表示您可以改善搜尋相關性，而不需要額外的搜尋延遲額外負荷。

## 設定自動語意擴充的許可
<a name="serverless-semantic-enrichment-permissions"></a>

在建立自動語意擴充索引之前，您需要設定必要的許可。本節說明所需的許可，以及如何設定這些許可。

### IAM 政策許可
<a name="iam-policy-permissions"></a>

使用下列 AWS Identity and Access Management (IAM) 政策授予使用自動語意擴充的必要許可：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AutomaticSemanticEnrichmentPermissions",
            "Effect": "Allow",
            "Action": [
                "aoss:CreateIndex",
                "aoss:GetIndex",
                "aoss:UpdateIndex",
                "aoss:DeleteIndex",
                "aoss:APIAccessAll"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**金鑰許可**  
+ `aoss:*Index` 許可啟用索引管理
+ `aoss:APIAccessAll` 許可允許 OpenSearch API 操作
+ 若要限制特定集合的許可，請將 `"Resource": "*"`取代為集合的 ARN

### 設定資料存取許可
<a name="serverless-collection-permissions-data-network"></a>

若要設定自動語意擴充的索引，您必須擁有適當的資料存取政策，以授予存取索引、管道和模型收集資源的許可。如需資料存取政策的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的資料存取控制](serverless-data-access.md)。如需設定資料存取政策的程序，請參閱 [建立資料存取政策 (主控台)](serverless-data-access.md#serverless-data-access-console)。

#### 資料存取許可
<a name="serverless-collection-data-access-permissions"></a>

```
[
    {
        "Description": "Create index permission",
        "Rules": [
            {
                "ResourceType": "index",
                "Resource": ["index/collection_name/*"],
                "Permission": [
                  "aoss:CreateIndex", 
                  "aoss:DescribeIndex",
                  "aoss:UpdateIndex",
                  "aoss:DeleteIndex"
                ]
            }
        ],
        "Principal": [
            "arn:aws:iam::account_id:role/role_name"
        ]
    },
    {
        "Description": "Create pipeline permission",
        "Rules": [
            {
                "ResourceType": "collection",
                "Resource": ["collection/collection_name"],
                "Permission": [
                  "aoss:CreateCollectionItems",
                  "aoss:DescribeCollectionItems"
                ]
            }
        ],
        "Principal": [
            "arn:aws:iam::account_id:role/role_name"
        ]
    },
    {
        "Description": "Create model permission",
        "Rules": [
            {
                "ResourceType": "model",
                "Resource": ["model/collection_name/*"],
                "Permission": ["aoss:CreateMLResource"]
            }
        ],
        "Principal": [
            "arn:aws:iam::account_id:role/role_name"
        ]
    },
]
```

#### 網路存取許可
<a name="serverless-collection-network-access-permissions"></a>

若要允許服務 APIs 存取私有集合，您必須設定允許服務 API 與集合之間必要存取的網路政策。如需網路政策的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的網路存取](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)。

```
[
   {
      "Description":"Enable automatic semantic enrichment in a private collection",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/collection_name"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceServices":[
         "aoss.amazonaws.com"
      ],
   }
]
```

**設定私有集合的網路存取許可**

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

1. 在左側導覽中，選擇*網路政策*。然後執行下列其中一項：
   + 選擇現有的政策名稱，然後選擇*編輯*
   + 選擇*建立網路政策*並設定政策詳細資訊

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

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

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

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

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

## 查詢重寫
<a name="serverless-collection-query-rewrite"></a>

自動語意擴充會自動將您現有的「比對」查詢轉換為語意搜尋查詢，而不需要修改查詢。如果比對查詢是複合查詢的一部分，系統會周遊您的查詢結構、尋找比對查詢，並將它們取代為神經稀疏查詢。目前，此功能僅支援取代「比對」查詢，無論是獨立查詢還是複合查詢的一部分。不支援「多重\$1比對」。此外，此功能支援所有複合查詢來取代其巢狀比對查詢。複合查詢包括：bool、Boosting、 constant\$1score、dis\$1max、 function\$1score 和 hybrid。

## 自動語意擴充的限制
<a name="serverless-collection-ase-limitation"></a>

當套用至包含自然語言內容small-to-medium欄位時，自動語意搜尋最有效，例如電影標題、產品描述、評論和摘要。雖然語意搜尋可增強大多數使用案例的相關性，但可能不適用於某些案例。在決定是否為特定使用案例實作自動語意擴充時，請考慮下列限制。
+ 非常長的文件 – 目前的稀疏模型只會處理每個英文文件的前 8，192 個字符。對於多語言文件，它是 512 個字符。對於冗長的文章，請考慮實作文件區塊，以確保完整的內容處理。
+ 日誌分析工作負載 – 語意擴充會大幅增加索引大小，這對於日誌分析而言可能不必要，其中完全相符通常就足夠。其他語意內容很少改善日誌搜尋的有效性，足以證明增加的儲存需求。
+ 自動語意擴充與衍生來源功能不相容。
+ 調節 – OpenSearch Serverless 的索引推論請求目前上限為 100 TPS。這是軟性限制；請聯絡 AWS Support 以取得更高的限制。

## 定價
<a name="serverless-collection-ase-pricing"></a>

 OpenSearch Serverless 會根據索引時間產生稀疏向量時消耗的 OpenSearch Compute Units (OCUs) 來計費自動語意擴充。您只需支付索引期間實際用量的費用。您可以使用 Amazon CloudWatch 指標 SemanticSearchOCU 監控此消耗。如需模型字符限制、每個 OCU 的磁碟區輸送量，以及範例計算的特定詳細資訊，請造訪 [ OpenSearch Service 定價](https://aws.amazon.com/opensearch-service/pricing/)。

# 建立集合
<a name="serverless-create"></a>

您可以使用 主控台或 AWS CLI 來建立無伺服器集合。這些步驟涵蓋如何建立*搜尋*或*時間序列*集合。若要建立*向量搜尋*集合，請參閱 [使用向量搜尋集合](serverless-vector-search.md)。

**Topics**
+ [建立集合 (主控台)](serverless-create-console.md)
+ [建立集合 (CLI)](serverless-create-cli.md)

# 建立集合 (主控台)
<a name="serverless-create-console"></a>

使用本節中的程序，透過使用 建立集合 AWS 管理主控台。這些步驟涵蓋如何建立*搜尋*或*時間序列*集合。若要建立*向量搜尋*集合，請參閱 [使用向量搜尋集合](serverless-vector-search.md)。

**Topics**
+ [設定集合設定](#serverless-create-console-step-2)
+ [設定其他搜尋欄位](#serverless-create-console-step-3)

## 設定集合設定
<a name="serverless-create-console-step-2"></a>

使用下列程序來設定集合的相關資訊。

**使用主控台設定集合設定**

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

1. 展開左側導覽窗格中的 **Serverless** (無伺服器)，然後選擇 **Collections** (集合)。

1. 選擇 **Create collection** (建立集合)。

1. 提供集合的名稱和描述。名稱必須符合下列條件：
   + 對您的帳戶和 是唯一的 AWS 區域
   + 只能包含小寫字母 a-z、數字 0-9 和連字號 (-)
   + 包含 3 到 32 個之間字元數

1. 選擇集合類型：
   + **Time series** (時間序列)：著重於分析大量半結構化、機器產生之資料的日誌分析區段。至少 24 小時的資料會存放在熱索引上，其餘資料會保留在暖儲存中。
   + **搜尋**：支援內部網路中的應用程式以及面向網際網路之應用程式的全文檢索搜尋。所有搜尋資料均存放在熱儲存中，以確保快速的查詢回應時間。
**注意**  
如果您要啟用自動語意搜尋，請選擇此選項，如 中所述[設定集合設定](#serverless-create-console-step-2)。
   + **向量搜尋** – 向量內嵌的語意搜尋，可簡化向量資料管理。支援機器學習 (ML) 增強型搜尋體驗和生成式 AI 應用程式，例如聊天機器人、個人助理和詐騙偵測。

   如需詳細資訊，請參閱[選擇集合類型](serverless-overview.md#serverless-usecase)。

1. 針對**部署類型**，選擇集合的備援設定。根據預設，每個集合都有備援，這表示索引和搜尋 OpenSearch Compute Units (OCUs) 各自在不同的可用區域中都有自己的待命複本。基於開發和測試目的，您可以選擇停用備援，將集合中的 OCUs 數量減少到兩個。如需詳細資訊，請參閱[運作方式](serverless-overview.md#serverless-process)。

1. 針對**安全性**，選擇**標準建立**。

1. 針對**加密**，選擇用來加密資料的 AWS KMS 金鑰。如果您輸入的集合名稱符合加密政策中定義的模式，OpenSearch Serverless 會通知您。您可以選擇保留此相符項目，也可以使用唯一的加密設定進行覆寫。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 中的加密](serverless-encryption.md)。

1. 針對**網路存取設定**，設定集合的網路存取。
   + 針對**存取類型**，選取公有或私有。

     如果您選擇私有，請指定哪些 VPC 端點和 AWS 服務 可以存取集合。
     + 用於**存取的 VPC 端點** – 指定一或多個 VPC 端點以允許存取。若要建立 VPC 端點，請參閱 [透過 的資料平面存取 AWS PrivateLink](serverless-vpc.md)。
     + **AWS 服務 私有存取** – 選取要允許存取的一或多個支援服務。
   + 針對**資源類型**，選取使用者是否可以透過其 *OpenSearch* 端點 （透過 cURL、Postman 等進行 API 呼叫）、透過 *OpenSearch Dashboards* 端點 （使用視覺化效果並透過主控台進行 API 呼叫） 或兩者存取集合。
**注意**  
AWS 服務 私有存取僅適用於 OpenSearch 端點，不適用於 OpenSearch Dashboards 端點。

   如果您輸入的集合名稱符合網路政策中定義的模式，OpenSearch Serverless 會通知您。您可以選擇保留此相符項目，也可以使用自訂網路設定進行覆寫。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的網路存取](serverless-network.md)。

1. (選用) 將一個或多個標籤新增至集合。如需詳細資訊，請參閱[標記 Amazon OpenSearch Serverless 集合](tag-collection.md)。

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

## 設定其他搜尋欄位
<a name="serverless-create-console-step-3"></a>

您在建立集合工作流程第 2 頁看到的選項取決於您正在建立的集合類型。本節說明如何為每個集合類型設定其他搜尋欄位。本節也說明如何設定自動語意擴充。略過任何不適用於集合類型的區段。

**Topics**
+ [設定自動語意擴充](#serverless-create-console-step-3-semantic-enrichment-fields)
+ [設定時間序列搜尋欄位](#serverless-create-console-step-3-time-series-fields)
+ [設定語彙搜尋欄位](#serverless-create-console-step-3-lexical-fields)
+ [設定向量搜尋欄位](#serverless-create-console-step-3-vector-search-fields)

### 設定自動語意擴充
<a name="serverless-create-console-step-3-semantic-enrichment-fields"></a>

當您建立或編輯集合時，您可以設定自動語意擴充，以簡化 Amazon OpenSearch Service 中的語意搜尋實作和功能。語意搜尋會傳回查詢結果，不僅包含關鍵字比對，還包含使用者搜尋的意圖和內容意義。如需詳細資訊，請參閱[Serverless 的自動語意擴充](serverless-semantic-enrichment.md)。

**設定自動語意擴充**

1. 在**索引詳細資訊**區段中，針對**索引名稱**指定名稱。

1. 在**自動語意擴充欄位**區段中，選擇**新增語意搜尋欄位**。

1. 在**語意擴充欄位的輸入欄位名稱**中，輸入您要擴充的欄位名稱。

1. **資料類型**為**文字**。這無法變更。

1. 針對**語言**，選擇**英文**或**多語言**。

1. 選擇**新增欄位**。

1. 完成集合的選用欄位設定後，請選擇**下一步**。檢閱您的變更，然後選擇**提交**以建立集合。

### 設定時間序列搜尋欄位
<a name="serverless-create-console-step-3-time-series-fields"></a>

**時間序列搜尋欄位**區段中的選項與時間序列資料和資料串流相關。如需這些主題的詳細資訊，請參閱 [使用資料串流管理 Amazon OpenSearch Service 中的時間序列資料](data-streams.md)。

**設定時間序列搜尋欄位**

1. 在**時間序列搜尋欄位**區段中，選擇**新增時間序列欄位**。

1. 針對**欄位名稱**，輸入名稱。

1. 針對**資料類型**，從清單中選擇類型。

1. 選擇**新增欄位**

1. 完成集合的選用欄位設定後，請選擇**下一步**。檢閱您的變更，然後選擇**提交**以建立集合。

### 設定語彙搜尋欄位
<a name="serverless-create-console-step-3-lexical-fields"></a>

文字搜尋會尋找搜尋查詢與索引詞彙或關鍵字之間的完全相符項目。

**設定語彙搜尋欄位**

1. 在**語彙搜尋欄位**區段中，選擇**新增搜尋欄位**。

1. 針對**欄位名稱**，輸入名稱。

1. 針對**資料類型**，從清單中選擇類型。

1. 選擇**新增欄位**

1. 完成集合的選用欄位設定後，請選擇**下一步**。檢閱您的變更，然後選擇**提交**以建立集合。

### 設定向量搜尋欄位
<a name="serverless-create-console-step-3-vector-search-fields"></a>

**設定向量搜尋欄位**

1. 在**向量欄位**區段中，選擇**新增向量欄位**。

1. 針對**欄位名稱**，輸入名稱。

1. 針對**引擎**，從清單中選擇類型。

1. 輸入維度的數量。

1. 針對**距離指標**，從清單中選擇類型。

1. 完成集合的選用欄位設定後，請選擇**下一步**。

1. 檢閱您的變更，然後選擇**提交**以建立集合。

# 建立集合 (CLI)
<a name="serverless-create-cli"></a>

使用本節中的程序，使用 建立 OpenSearch Serverless 集合 AWS CLI。

**Topics**
+ [開始之前](#serverless-create-cli-before-you-begin)
+ [建立集合](#serverless-create-cli-creating)
+ [使用自動語意擴充索引建立集合](#serverless-create-cli-automatic-semantic-enrichment)

## 開始之前
<a name="serverless-create-cli-before-you-begin"></a>

使用 建立集合之前 AWS CLI，請使用下列程序來建立集合所需的政策。

**注意**  
在下列每個程序中，當您指定集合的名稱時，名稱必須符合下列條件：  
對您的帳戶和 是唯一的 AWS 區域
只能包含小寫字母 a-z、數字 0-9 和連字號 (-)
包含 3 到 32 個之間字元數

**建立集合的必要政策**

1. 開啟 AWS CLI 並執行下列命令，以建立資源模式符合集合預期名稱的[加密政策](serverless-encryption.md)。

   ```
   &aws opensearchserverless create-security-policy \
     --name policy name \
     --type encryption --policy "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/collection name\"]}],\"AWSOwnedKey\":true}"
   ```

   例如，如果您計劃將集合命名為 *logs-application*，則可以建立如下所示的加密政策：

   ```
   &aws opensearchserverless create-security-policy \
     --name logs-policy \
     --type encryption --policy "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/logs-application\"]}],\"AWSOwnedKey\":true}"
   ```

   如果您計劃將政策用於其他集合，則可以使規則的範圍更廣泛，例如 `collection/logs*` 或 `collection/*`。

1. 執行下列命令，使用網路[政策來設定集合的網路](serverless-network.md)設定。您可以在建立集合之後建立網路政策，但建議您事先執行此操作。

   ```
   &aws opensearchserverless create-security-policy \
     --name policy name \
     --type network --policy "[{\"Description\":\"description\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/collection name\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/collection name\"]}],\"AllowFromPublic\":true}]"
   ```

   使用先前的 *logs-application* 範例，您可建立下列網路政策：

   ```
   &aws opensearchserverless create-security-policy \
     --name logs-policy \
     --type network --policy "[{\"Description\":\"Public access for logs collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/logs-application\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/logs-application\"]}],\"AllowFromPublic\":true}]"
   ```

## 建立集合
<a name="serverless-create-cli-creating"></a>

下列程序使用 [CreateCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateCollection.html) API 動作來建立類型 `SEARCH`或 的集合`TIMESERIES`。如果您未在請求中指定集合類型，即會預設為 `TIMESERIES`。如需這些類型的詳細資訊，請參閱 [選擇集合類型](serverless-overview.md#serverless-usecase)。若要建立*向量搜尋*集合，請參閱 [使用向量搜尋集合](serverless-vector-search.md)。

如果您的集合使用 加密 AWS 擁有的金鑰，則 `kmsKeyArn``auto`不是 ARN。

**重要**  
建立集合後，除非該集合符合資料存取政策，否則您將無法存取它。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的資料存取控制](serverless-data-access.md)。

**建立集合**

1. 確認您已建立 中所述的必要政策[開始之前](#serverless-create-cli-before-you-begin)。

1. 執行下列命令。對於 ，`type`請指定 `SEARCH`或 `TIMESERIES`。

   ```
   &aws opensearchserverless create-collection --name "collection name" --type collection type --description "description"
   ```

## 使用自動語意擴充索引建立集合
<a name="serverless-create-cli-automatic-semantic-enrichment"></a>

使用下列程序，使用為[自動語意擴充](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-semantic-enrichment.html)設定的索引建立新的 OpenSearch Serverless 集合。程序使用 OpenSearch Serverless [CreateIndex](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateIndex.html) API 動作。

**使用為自動語意擴充設定的索引建立新的集合**

執行下列命令來建立集合和索引。

```
&aws opensearchserverless create-index \
--region Region ID \
--id collection name --index-name index name \
--index-schema \
'mapping in json'
```

範例如下。

```
&aws opensearchserverless create-index \
--region us-east-1 \
--id conversation_history --index-name conversation_history_index \
--index-schema \ 
'{
    "mappings": {
        "properties": {
            "age": {
                "type": "integer"
            },
            "name": {
                "type": "keyword"
            },
            "user_description": {
                "type": "text"
            },
            "conversation_history": {
                "type": "text",
                "semantic_enrichment": {
                    "status": "ENABLED",
                    // Specifies the sparse tokenizer for processing multi-lingual text
                    "language_option": "MULTI-LINGUAL", 
                    // If embedding_field is provided, the semantic embedding field will be set to the given name rather than original field name + "_embedding"
                    "embedding_field": "conversation_history_user_defined" 
                }
            },
            "book_title": {
                "type": "text",
                "semantic_enrichment": {
                    // No embedding_field is provided, so the semantic embedding field is set to "book_title_embedding"
                    "status": "ENABLED",
                    "language_option": "ENGLISH"
                }
            },
            "abstract": {
                "type": "text",
                "semantic_enrichment": {
                    // If no language_option is provided, it will be set to English.
                    // No embedding_field is provided, so the semantic embedding field is set to "abstract_embedding"
                    "status": "ENABLED" 
                }
            }
        }
    }
}'
```

# 存取 OpenSearch Dashboards
<a name="serverless-dashboards"></a>

使用 建立集合之後 AWS 管理主控台，您可以導覽至集合的 OpenSearch Dashboards URL。您可以在左側導覽窗格中選擇**集合**，然後選取集合以開啟其詳細資訊頁面，以尋找儀表板 URL。URL 採用的格式為 `https://dashboards.us-east-1.aoss.amazonaws.com/_login/?collectionId=07tjusf2h91cunochc`。導覽至 URL 後，您將自動登入 Dashboards。

如果您已有可用的 OpenSearch Dashboards URL，但未在 上 AWS 管理主控台，從瀏覽器呼叫 Dashboards URL 將重新導向至 主控台。輸入 AWS 登入資料後，您會自動登入 Dashboards。如需有關存取 SAML 集合的資訊，請參閱[使用 SAML 存取 OpenSearch Dashboards](serverless-saml.md#serverless-saml-dashboards)。

OpenSearch Dashboards 主控台逾時為一小時，無法設定。

**注意**  
2023 年 5 月 10 日，OpenSearch 推出了 OpenSearch Dashboards 的通用全域端點。您現在可以使用採用 格式的 URL，在瀏覽器中導覽至 OpenSearch Dashboards`https://dashboards.us-east-1.aoss.amazonaws.com/_login/?collectionId=07tjusf2h91cunochc`。為了確保回溯相容性，我們將繼續支援格式為 的現有集合特定 OpenSearch Dashboards 端點`https://07tjusf2h91cunochc.us-east-1.aoss.amazonaws.com/_dashboards`。

# 檢視集合
<a name="serverless-list"></a>

您可以在 Amazon OpenSearch Service 主控台的集合索引標籤 AWS 帳戶 上檢視 中的現有**集合**。

若要列出集合及其 ID，請傳送 [ListCollections](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListCollections.html) 請求。

```
&aws opensearchserverless list-collections
```

**回應範例**

```
{
   "collectionSummaries":[
      {
         "arn":"arn:aws:aoss:us-east-1:123456789012:collection/07tjusf2h91cunochc",
         "id":"07tjusf2h91cunochc",
         "name":"my-collection",
         "status":"CREATING"
      }
   ]
}
```

若要限制搜尋結果，請使用集合篩選條件。此請求會篩選對處於 `ACTIVE` 狀態之集合的回應：

```
&aws opensearchserverless list-collections --collection-filters '{ "status": "ACTIVE" }'
```

若要取得有關一個或多個集合的詳細資訊，包括 OpenSearch 端點和 OpenSearch Dashboards 端點，請傳送 [BatchGetCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_BatchGetCollection.html) 請求：

```
&aws opensearchserverless batch-get-collection --ids "07tjusf2h91cunochc" "1iu5usc4rame"
```

**注意**  
您可以在請求中包含 `--names` 或 `--ids`，但不能同時包含兩者。

**回應範例**

```
{
   "collectionDetails":[
      {
         "id": "07tjusf2h91cunochc",
         "name": "my-collection",
         "status": "ACTIVE",
         "type": "SEARCH",
         "description": "",
         "arn": "arn:aws:aoss:us-east-1:123456789012:collection/07tjusf2h91cunochc",
         "kmsKeyArn": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
         "createdDate": 1667446262828,
         "lastModifiedDate": 1667446300769,
         "collectionEndpoint": "https://07tjusf2h91cunochc.us-east-1.aoss.amazonaws.com",
         "dashboardEndpoint": "https://07tjusf2h91cunochc.us-east-1.aoss.amazonaws.com/_dashboards"
      },
      {
         "id": "178ukvtg3i82dvopdid",
         "name": "another-collection",
         "status": "ACTIVE",
         "type": "TIMESERIES",
         "description": "",
         "arn": "arn:aws:aoss:us-east-1:123456789012:collection/178ukvtg3i82dvopdid",
         "kmsKeyArn": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
         "createdDate": 1667446262828,
         "lastModifiedDate": 1667446300769,
         "collectionEndpoint": "https://178ukvtg3i82dvopdid.us-east-1.aoss.amazonaws.com",
         "dashboardEndpoint": "https://178ukvtg3i82dvopdid.us-east-1.aoss.amazonaws.com/_dashboards"
      }
   ],
   "collectionErrorDetails":[]
}
```

# 刪除集合
<a name="serverless-delete"></a>

刪除集合會刪除集合中的所有資料和索引。刪除集合後，您將無法復原集合。

**使用主控台刪除集合**

1. 從 Amazon OpenSearch Service 主控台的 **Collections** (集合) 面板中，選取您要刪除的集合。

1. 選擇 **Delete** (刪除)，並確認刪除。

若要使用 刪除集合 AWS CLI，請傳送 [DeleteCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteCollection.html) 請求：

```
&aws opensearchserverless delete-collection --id 07tjusf2h91cunochc
```

**回應範例**

```
{
   "deleteCollectionDetail":{
      "id":"07tjusf2h91cunochc",
      "name":"my-collection",
      "status":"DELETING"
   }
}
```

# 使用向量搜尋集合
<a name="serverless-vector-search"></a>

OpenSearch Serverless 中的*向量搜尋*集合類型提供可擴展且高效能的相似性搜尋功能。這可讓您輕鬆地建置現代機器學習 (ML) 增強型搜尋體驗和生成式人工智慧 (AI) 應用程式，而無需管理基礎向量資料庫基礎設施。

向量搜尋集合的使用案例包括影像搜尋、文件搜尋、音樂擷取、產品建議、影片搜尋、以位置為基礎的搜尋、詐騙偵測和異常偵測。

由於 OpenSearch Serverless 的向量引擎由 OpenSearch 中的 [k 近鄰 (k-NN) 搜尋功能](https://opensearch.org/docs/latest/search-plugins/knn/index/)提供支援，因此您可以簡單地取得相同的功能和無伺服器環境。引擎支援 [k-NN 外掛程式 API](https://opensearch.org/docs/latest/search-plugins/knn/api/)。透過這些操作，您可以利用全文搜尋、進階篩選、彙總、地理空間查詢、巢狀查詢，以更快速地擷取資料，以及增強的搜尋結果。

向量引擎提供距離指標，例如歐幾里德距離、餘弦相似性和點產品相似性，可容納 16，000 個維度。您可以存放具有各種中繼資料資料類型的欄位，例如數字、布林值、日期、關鍵字和地理位置。您也可以使用文字存放欄位以取得描述性資訊，以將更多內容新增至存放的向量。協調資料類型可降低複雜性、提高可維護性，並避免資料重複、版本相容性挑戰和授權問題。

**注意**  
記下以下資訊：  
Amazon OpenSearch Serverless 支援 Faiss 16 位元純量量化，可用於在 32 位元浮點數和 16 位元向量之間執行轉換。若要進一步了解，請參閱 [ Faiss 16 位元純量量化](https://opensearch.org/docs/latest/search-plugins/knn/knn-vector-quantization/#faiss-16-bit-scalar-quantization)。您也可以使用二進位向量來降低記憶體成本。如需詳細資訊，請參閱[二進位向量](https://opensearch.org/docs/latest/field-types/supported-field-types/knn-vector#binary-vectors)。
Amazon OpenSearch Serverless 支援磁碟型向量搜尋。磁碟型向量搜尋可大幅降低低記憶體環境中向量工作負載的操作成本。如需詳細資訊，請參閱[磁碟型向量搜尋](https://docs.opensearch.org/2.19/vector-search/optimizing-storage/disk-based-vector-search/)。

## 向量搜尋集合入門
<a name="serverless-vector-tutorial"></a>

在本教學課程中，您將完成下列步驟，以即時儲存、搜尋和擷取向量內嵌：

1. [設定許可](#serverless-vector-permissions)

1. [建立集合](#serverless-vector-create)

1. [上傳並搜尋資料](#serverless-vector-index)

1. [刪除集合](#serverless-vector-delete)

### 步驟 1：設定許可
<a name="serverless-vector-permissions"></a>

若要完成本教學課程 （以及一般使用 OpenSearch Serverless)，您必須擁有正確的 AWS Identity and Access Management (IAM) 許可。在本教學課程中，您會建立集合、上傳和搜尋資料，然後刪除集合。

使用者或角色必須連接[身分型政策](security-iam-serverless.md#security-iam-serverless-id-based-policies)，該政策包含以下最低許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "aoss:CreateCollection",
        "aoss:ListCollections",
        "aoss:BatchGetCollection",
        "aoss:DeleteCollection",
        "aoss:CreateAccessPolicy",
        "aoss:ListAccessPolicies",
        "aoss:UpdateAccessPolicy",
        "aoss:CreateSecurityPolicy",
        "iam:ListUsers",
        "iam:ListRoles"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

如需有關 OpenSearch Serverless IAM 許可的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的身分和存取管理](security-iam-serverless.md)。

### 步驟 2：建立集合
<a name="serverless-vector-create"></a>

*集合*是一組 OpenSearch 索引，可一起運作以支援特定工作負載或使用案例。

**建立 OpenSearch Serverless 集合**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **Create collection** (建立集合)。

1. 命名集合**外殼**。

1. 針對集合類型，選擇**向量搜尋**。如需詳細資訊，請參閱[選擇集合類型](serverless-overview.md#serverless-usecase)。

1. 在**部署類型**下，清除**啟用備援 （作用中複本）**。這會在開發或測試模式中建立集合，並將集合中的 OpenSearch 運算單位 (OCUs數目減少為兩個。如果您想要在本教學課程中建立生產環境，請保持選取核取方塊。

1. 在**安全**下，選取**輕鬆建立**以簡化您的安全組態。根據預設，向量引擎中的所有資料都會在傳輸中和靜態時加密。向量引擎支援精細的 IAM 許可，讓您可以定義誰可以建立、更新和刪除加密、網路、集合和索引。

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

1. 檢閱集合設定，然後選擇 **Submit** (提交)。等待幾分鐘，讓收集狀態變成 `Active`。

### 步驟 3：上傳並搜尋資料
<a name="serverless-vector-index"></a>

*索引*是具有常見資料結構描述的文件集合，可讓您儲存、搜尋和擷取向量內嵌和其他欄位。您可以使用 OpenSearch Dashboards 中的[開發工具](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/)主控台或 [Postman](https://www.postman.com/downloads/) 或 [awscurl](https://github.com/okigan/awscurl) 等 HTTP 工具，在 OpenSearch Serverless 集合中建立和上傳資料至索引。本教學課程使用開發工具。

**索引和搜尋房屋集合中的資料**

1. 若要為新集合建立單一索引，請在[開發工具](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/)主控台中傳送下列請求。根據預設，這會建立具有`nmslib`引擎和歐幾里得距離的索引。

   ```
   PUT housing-index
   {
      "settings": {
         "index.knn": true
      },
      "mappings": {
         "properties": {
            "housing-vector": {
               "type": "knn_vector",
               "dimension": 3
            },
            "title": {
               "type": "text"
            },
            "price": {
               "type": "long"
            },
            "location": {
               "type": "geo_point"
            }
         }
      }
   }
   ```

1. 若要將單一文件編製索引為 *housing-index*，請傳送下列請求：

   ```
   POST housing-index/_doc
   {
     "housing-vector": [
       10,
       20,
       30
     ],
     "title": "2 bedroom in downtown Seattle",
     "price": "2800",
     "location": "47.71, 122.00"
   }
   ```

1. 若要搜尋與索引中屬性類似的屬性，請傳送下列查詢：

   ```
   GET housing-index/_search
   {
       "size": 5,
       "query": {
           "knn": {
               "housing-vector": {
                   "vector": [
                       10,
                       20,
                       30
                   ],
                   "k": 5
               }
           }
       }
   }
   ```

### 步驟 4：刪除集合
<a name="serverless-vector-delete"></a>

由於*房屋*集合是用於測試目的，因此請務必在完成實驗時將其刪除。

**刪除 OpenSearch Serverless 集合**

1. 返回 **Amazon OpenSearch Service** 主控台。

1. 在左側導覽窗格中選擇**集合**，然後選取**屬性**集合。

1. 選擇**刪除**並確認刪除。

## 篩選的搜尋
<a name="serverless-vector-filter"></a>

您可以使用篩選條件來精簡語意搜尋結果。若要建立索引並對文件執行篩選搜尋，請將上一個教學課程中的[上傳和搜尋資料](#serverless-vector-index)替換為下列指示。其他步驟保持不變。如需篩選條件的詳細資訊，請參閱[使用篩選條件進行 k-NN 搜尋](https://opensearch.org/docs/latest/search-plugins/knn/filter-search-knn/)。

**索引和搜尋房屋集合中的資料**

1. 若要為您的集合建立單一索引，請在[開發工具](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/)主控台中傳送下列請求：

   ```
   PUT housing-index-filtered
   {
     "settings": {
       "index.knn": true
     },
     "mappings": {
       "properties": {
         "housing-vector": {
           "type": "knn_vector",
           "dimension": 3,
           "method": {
             "engine": "faiss",
             "name": "hnsw"
           }
         },
         "title": {
           "type": "text"
         },
         "price": {
           "type": "long"
         },
         "location": {
           "type": "geo_point"
         }
       }
     }
   }
   ```

1. 若要將單一文件索引為已*housing-index-filtered*，請傳送下列請求：

   ```
   POST housing-index-filtered/_doc
   {
     "housing-vector": [
       10,
       20,
       30
     ],
     "title": "2 bedroom in downtown Seattle",
     "price": "2800",
     "location": "47.71, 122.00"
   }
   ```

1. 若要以指定價格在地理點的指定距離內搜尋西雅圖的公寓，請傳送下列請求：

   ```
   GET housing-index-filtered/_search
   {
     "size": 5,
     "query": {
       "knn": {
         "housing-vector": {
           "vector": [
             0.1,
             0.2,
             0.3
           ],
           "k": 5,
           "filter": {
             "bool": {
               "must": [
                 {
                   "query_string": {
                     "query": "Find me 2 bedroom apartment in Seattle under $3000 ",
                     "fields": [
                       "title"
                     ]
                   }
                 },
                 {
                   "range": {
                     "price": {
                       "lte": 3000
                     }
                   }
                 },
                 {
                   "geo_distance": {
                     "distance": "100miles",
                     "location": {
                       "lat": 48,
                       "lon": 121
                     }
                   }
                 }
               ]
             }
           }
         }
       }
     }
   }
   ```

## 數十億個規模的工作負載
<a name="serverless-vector-billion"></a>

向量搜尋集合支援具有數十億個向量的工作負載。您不需要為擴展目的重新編製索引，因為自動擴展會為您執行此操作。如果您有數百萬個具有大量維度的向量 （或更多），且需要超過 200 OCUs，請聯絡 [AWS Support](https://aws.amazon.com/premiumsupport/) 來提高您帳戶的 OpenSearch 運算單位 (OCUs上限。

## 限制
<a name="serverless-vector-limitations"></a>

向量搜尋集合有下列限制：
+ 向量搜尋集合不支援 Apache Lucene ANN 引擎。
+ 向量搜尋集合僅支援具有 Faiss 的 HNSW 演算法，不支援 IVF 和 IVFQ。
+ 向量搜尋集合不支援暖機、統計資料和模型訓練 API 操作。
+ 向量搜尋集合不支援內嵌或預存指令碼。
+  AWS 管理主控台 向量搜尋集合的 中不提供索引計數資訊。
+ 向量搜尋集合上索引的重新整理間隔為 60 秒。

## 後續步驟
<a name="serverless-vector-next"></a>

現在您知道如何建立向量搜尋集合和索引資料，建議您嘗試下列一些練習：
+ 使用 OpenSearch Python 用戶端來使用向量搜尋集合。請參閱 [GitHub](https://github.com/opensearch-project/opensearch-py/blob/main/guides/plugins/knn.md) 上的本教學課程。
+ 使用 OpenSearch Java 用戶端來使用向量搜尋集合。請參閱 [GitHub](https://github.com/opensearch-project/opensearch-java/blob/main/guides/plugins/knn.md) 上的本教學課程。
+ 設定 LangChain 以使用 OpenSearch 作為向量存放區。LangChain 是一種開放原始碼架構，用於開發採用語言模型的應用程式。如需詳細資訊，請參閱 [LangChain 文件](https://python.langchain.com/docs/integrations/vectorstores/opensearch)。

# 搭配 Amazon OpenSearch Serverless 使用資料生命週期政策
<a name="serverless-lifecycle"></a>

Amazon OpenSearch Serverless 中的資料生命週期政策會定義 OpenSearch Serverless 在時間序列集合中保留資料的時間長度。例如，您可以設定政策，在 OpenSearch Serverless 刪除日誌資料之前將其保留 30 天。

您可以在 中的每個時間序列集合中為每個索引設定個別政策 AWS 帳戶。OpenSearch Serverless 會保留文件至少您在政策中指定的持續時間。然後，它會盡力自動刪除文件，通常是在保留期間的 48 小時或 10% 內，以較長者為準。

只有時間序列集合支援資料生命週期政策。搜尋和向量搜尋集合不會。

**Topics**
+ [資料生命週期政策](#serverless-lifecycle-policies)
+ [所需的許可](#serverless-lifecycle-permissions)
+ [政策優先順序](#serverless-lifecycle-precedence)
+ [政策語法](#serverless-lifecycle-syntax)
+ [建立資料生命週期政策](#serverless-lifecycle-create)
+ [更新資料生命週期政策](#serverless-lifecycle-update)
+ [刪除資料生命週期政策](#serverless-lifecycle-delete)

## 資料生命週期政策
<a name="serverless-lifecycle-policies"></a>

在資料生命週期政策中，您可以指定一系列規則。資料生命週期政策可讓您管理與符合這些規則的索引或集合相關聯的資料保留期。這些規則定義索引或索引群組中資料的保留期間。每個規則都包含資源類型 (`index`)、保留期間，以及保留期間適用的資源 （索引） 清單。

您可以使用下列其中一種格式定義保留期：
+ `"MinIndexRetention": "24h"` – OpenSearch Serverless 會保留指定期間內的索引資料，以小時或天為單位。您可以將此期間設定為從 `24h`到 `3650d`。
+ `"NoMinIndexRetention": true` – OpenSearch Serverless 無限期保留索引資料。

在下列範例政策中，第一個規則會為集合 中的所有索引指定 15 天的保留期間`marketing`。第二個規則指定`finance`集合`log`中以 開頭的所有索引名稱都未設定保留期間，且將無限期保留。

```
{
   "lifeCyclePolicyDetail": {
      "type": "retention",
      "name": "my-policy",
      "policyVersion": "MTY4ODI0NTM2OTk1N18x",
      "policy": {
         "Rules": [
            {
            "ResourceType":"index",
            "Resource":[
               "index/marketing/*"
            ],
            "MinIndexRetention": "15d"
         },
         {
            "ResourceType":"index",
            "Resource":[
               "index/finance/log*"
            ],
            "NoMinIndexRetention": true
         }
         ]
      },
      "createdDate": 1688245369957,
      "lastModifiedDate": 1688245369957
   }
}
```

在下列範例政策規則中，OpenSearch Serverless 會無限期保留帳戶內所有集合之所有索引中的資料。

```
{
   "Rules": [
      {
         "ResourceType": "index",
         "Resource": [
            "index/*/*"
         ]
      }
   ],
   "NoMinIndexRetention": true
}
```

## 所需的許可
<a name="serverless-lifecycle-permissions"></a>

OpenSearch Serverless 的生命週期政策使用以下 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件，將使用者限制為與特定集合和索引相關聯的資料生命週期政策。
+ `aoss:CreateLifecyclePolicy` – 建立資料生命週期政策。
+ `aoss:ListLifecyclePolicies` – 列出目前帳戶中的所有資料生命週期政策。
+ `aoss:BatchGetLifecyclePolicy` – 檢視與帳戶或政策名稱相關聯的資料生命週期政策。
+ `aoss:BatchGetEffectiveLifecyclePolicy` – 檢視指定資源的資料生命週期政策 (`index` 是唯一支援的資源）。
+ `aoss:UpdateLifecyclePolicy` – 修改指定的資料生命週期政策，並變更其保留設定或資源。
+ `aoss:DeleteLifecyclePolicy` – 刪除資料生命週期政策。

下列身分型存取政策可讓使用者檢視所有資料生命週期政策，並使用資源模式 更新政策`index/application-logs`：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aoss:UpdateLifecyclePolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": "application-logs"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:ListLifecyclePolicies",
                "aoss:BatchGetLifecyclePolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 政策優先順序
<a name="serverless-lifecycle-precedence"></a>

在某些情況下，資料生命週期政策規則可能會在政策內或跨政策之間重疊。發生這種情況時，具有更特定資源名稱或索引模式的規則會使用更一般的資源名稱或模式覆寫*兩個*規則通用的任何索引的規則。

例如，在下列政策中，兩個規則適用於索引 `index/sales/logstash`。在這種情況下，第二個規則優先，因為 `index/sales/log*` 是 最長的相符項目`index/sales/logstash`。因此，OpenSearch Serverless 不會設定索引的保留期間。

```
{
      "Rules":[
         {
            "ResourceType":"index",
            "Resource":[
               "index/sales/*",
            ],
            "MinIndexRetention": "15d"
         },
         {
            "ResourceType":"index",
            "Resource":[
               "index/sales/log*",
            ],
            "NoMinIndexRetention": true
         }
      ]
   }
```

## 政策語法
<a name="serverless-lifecycle-syntax"></a>

提供一個或多個*規則*。這些規則會為您的 OpenSearch Serverless 索引定義資料生命週期設定。

每個規則都包含下列元素。您可以在每個規則`NoMinIndexRetention`中提供 `MinIndexRetention`或 ，但不能同時提供兩者。


| Element | Description | 
| --- | --- | 
| Resource Type (資源類型) | 套用規則的資源類型。資料生命週期政策唯一支援的選項是 index。 | 
| Resource | 資源名稱和/或模式的清單。模式由字首和萬用字元 (\$1) 組成，允許相關聯的許可套用至多個資源。例如 index/<collection-name\$1pattern>/<index-name\$1pattern>。 | 
| MinIndexRetention | 將文件保留在索引中的最短期間，以天 (d) 或小時 (h) 為單位。下限為 24h，上限為 3650d。 | 
| NoMinIndexRetention | 如果為 true，OpenSearch Serverless 會無限期保留文件。 | 

在下列範例中，第一個規則會套用至`autoparts-inventory`模式 (`index/autoparts-inventory/*`) 下的所有索引，並要求資料保留至少 20 天，才能進行任何動作，例如刪除或封存。

第二個規則以符合`auto*/gear`模式 (`index/auto*/gear`) 的索引為目標，將最短保留期間設定為 24 小時。

第三個規則特別適用於`tires`索引，沒有最短保留期間，這表示可以立即刪除或封存此索引中的資料，或根據其他條件。這些規則有助於管理具有不同保留時間或沒有保留限制的索引資料的保留。

```
{
  "Rules": [
    {
      "ResourceType": "index",
      "Resource": [
        "index/autoparts-inventory/*"
      ],
      "MinIndexRetention": "20d"
    },
    {
      "ResourceType": "index",
      "Resource": [
        "index/auto*/gear"
      ],
      "MinIndexRetention": "24h"
    },
    {
      "ResourceType": "index",
      "Resource": [
        "index/autoparts-inventory/tires"
      ],
      "NoMinIndexRetention": true
    }
  ]
}
```

## 建立資料生命週期政策
<a name="serverless-lifecycle-create"></a>

若要建立資料生命週期政策，您可以定義根據指定條件管理資料保留和刪除的規則。

### 主控台
<a name="serverless-lifecycle-create-console"></a>

**建立資料生命週期政策**

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

1. 在左側導覽窗格中，選擇**資料生命週期政策**。

1. 選擇**建立資料生命週期政策**。

1. 輸入政策的描述性名稱。

1. 針對**資料生命週期**，選擇**新增**並選取政策的集合和索引。

   首先選擇索引所屬的集合。然後，從清單中選擇索引或輸入索引模式。若要選取所有集合做為來源，請輸入星號 (`*`)。

1. 對於**資料保留**，您可以選擇無限期保留資料，或取消選取**無限制 （絕不刪除）**，並指定一段時間後 OpenSearch Serverless 會自動從 Amazon S3 刪除資料。

1. 選擇**儲存**，然後選擇**建立**。

### AWS CLI
<a name="serverless-lifecycle-create-cli"></a>

若要使用 建立資料生命週期政策 AWS CLI，請使用 [create-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/create-lifecycle-policy.html) 命令搭配下列選項：
+ `--name` – 政策的名稱。
+ `--type` – 政策的類型。目前，唯一可用的值是 `retention`。
+ `--policy` – 資料生命週期政策。此參數同時接受內嵌政策和 .json 檔案。您必須將內嵌政策編碼為 JSON 逸出字串。若要在 檔案中提供政策，請使用 格式 `--policy file://my-policy.json`。

**Example**  

```
aws opensearchserverless create-lifecycle-policy \
  --name my-policy \
  --type retention \
  --policy "{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index/autoparts-inventory/*\"],\"MinIndexRetention\": \"81d\"},{\"ResourceType\":\"index\",\"Resource\":[\"index/sales/orders*\"],\"NoMinIndexRetention\":true}]}"
```

## 更新資料生命週期政策
<a name="serverless-lifecycle-update"></a>

若要更新資料生命週期政策，您可以修改現有的規則，以反映資料保留或刪除需求的變更。這可讓您隨著資料管理需求的演進調整政策。

從更新政策到 OpenSearch Serverless 開始強制執行新的保留期間，可能會有幾分鐘的延遲時間。

### 主控台
<a name="serverless-lifecycle-update-console"></a>

**更新資料生命週期政策**

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

1. 在左側導覽窗格中，選擇**資料生命週期政策**。

1. 選取您要更新的資料生命週期政策，然後選擇**編輯**。

1. 使用視覺化編輯器或 JSON 編輯器修改政策。

1. 選擇**儲存**。

### AWS CLI
<a name="serverless-lifecycle-update-cli"></a>

若要使用 更新資料生命週期政策 AWS CLI，請使用 [update-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-lifecycle-policy.html) 命令。

您必須在請求中包含 `--policy-version` 參數。您可以使用 [list-lifecycle-policies](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/list-lifecycle-policies.html) 或 [batch-get-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/batch-get-lifecycle-policy.html) 命令來擷取政策版本。我們建議您包含最新的政策版本，以防止意外覆寫其他人所做的變更。

下列請求會使用新的政策 JSON 文件更新資料生命週期政策。

**Example**  

```
aws opensearchserverless update-lifecycle-policy \
  --name my-policy \
  --type retention \
  --policy-version MTY2MzY5MTY1MDA3Ml8x \
  --policy file://my-new-policy.json
```

## 刪除資料生命週期政策
<a name="serverless-lifecycle-delete"></a>

當您刪除資料生命週期政策時，OpenSearch Serverless 不會再在任何相符的索引上強制執行它。

### 主控台
<a name="serverless-lifecycle-delete-console"></a>

**刪除資料生命週期政策**

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

1. 在左側導覽窗格中，選擇**資料生命週期政策**。

1. 選取您要刪除的政策，然後選擇**刪除**並確認刪除。

### AWS CLI
<a name="serverless-lifecycle-delete-cli"></a>

若要使用 刪除資料生命週期政策 AWS CLI，請使用 [delete-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/delete-lifecycle-policy.html) 命令。

**Example**  

```
aws opensearchserverless delete-lifecycle-policy \
  --name my-policy \
  --type retention
```

# 使用 AWS SDKs與 Amazon OpenSearch Serverless 互動
<a name="serverless-sdk"></a>

本節包含如何使用 AWS SDKs 與 Amazon OpenSearch Serverless 互動的範例。這些程式碼範例顯示如何建立安全政策和集合，以及如何查詢集合。

**注意**  
我們目前正在建置這些程式碼範例。如果您想貢獻程式碼範例 (Java、Go 等)，請直接在 [GitHub 儲存庫](https://github.com/awsdocs/amazon-opensearch-service-developer-guide/blob/master/doc_source/serverless-sdk.md)中開立提取請求。

**Topics**
+ [Python](#serverless-sdk-python)
+ [JavaScript](#serverless-sdk-javascript)

## Python
<a name="serverless-sdk-python"></a>

下列範例指令碼會使用 Python 的 [適用於 Python (Boto3) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/opensearchserverless.html) 以及 [opensearch-py](https://pypi.org/project/opensearch-py/) 用戶端，來建立加密、網路和資料存取政策、建立相符的集合，以及為某些範例資料編製索引。

若要安裝所需的相依性，請執行下列命令：

```
pip install opensearch-py
pip install boto3
pip install botocore
pip install requests-aws4auth
```

在指令碼中，將 `Principal` 元素取代為簽署請求的使用者或角色的 Amazon Resource Name (ARN)。您也可以選擇性地修改 `region`。

```
from opensearchpy import OpenSearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth
import boto3
import botocore
import time

# Build the client using the default credential configuration.
# You can use the CLI and run 'aws configure' to set access key, secret
# key, and default region.

client = boto3.client('opensearchserverless')
service = 'aoss'
region = 'us-east-1'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key,
                   region, service, session_token=credentials.token)


def createEncryptionPolicy(client):
    """Creates an encryption policy that matches all collections beginning with tv-"""
    try:
        response = client.create_security_policy(
            description='Encryption policy for TV collections',
            name='tv-policy',
            policy="""
                {
                    \"Rules\":[
                        {
                            \"ResourceType\":\"collection\",
                            \"Resource\":[
                                \"collection\/tv-*\"
                            ]
                        }
                    ],
                    \"AWSOwnedKey\":true
                }
                """,
            type='encryption'
        )
        print('\nEncryption policy created:')
        print(response)
    except botocore.exceptions.ClientError as error:
        if error.response['Error']['Code'] == 'ConflictException':
            print(
                '[ConflictException] The policy name or rules conflict with an existing policy.')
        else:
            raise error


def createNetworkPolicy(client):
    """Creates a network policy that matches all collections beginning with tv-"""
    try:
        response = client.create_security_policy(
            description='Network policy for TV collections',
            name='tv-policy',
            policy="""
                [{
                    \"Description\":\"Public access for TV collection\",
                    \"Rules\":[
                        {
                            \"ResourceType\":\"dashboard\",
                            \"Resource\":[\"collection\/tv-*\"]
                        },
                        {
                            \"ResourceType\":\"collection\",
                            \"Resource\":[\"collection\/tv-*\"]
                        }
                    ],
                    \"AllowFromPublic\":true
                }]
                """,
            type='network'
        )
        print('\nNetwork policy created:')
        print(response)
    except botocore.exceptions.ClientError as error:
        if error.response['Error']['Code'] == 'ConflictException':
            print(
                '[ConflictException] A network policy with this name already exists.')
        else:
            raise error


def createAccessPolicy(client):
    """Creates a data access policy that matches all collections beginning with tv-"""
    try:
        response = client.create_access_policy(
            description='Data access policy for TV collections',
            name='tv-policy',
            policy="""
                [{
                    \"Rules\":[
                        {
                            \"Resource\":[
                                \"index\/tv-*\/*\"
                            ],
                            \"Permission\":[
                                \"aoss:CreateIndex\",
                                \"aoss:DeleteIndex\",
                                \"aoss:UpdateIndex\",
                                \"aoss:DescribeIndex\",
                                \"aoss:ReadDocument\",
                                \"aoss:WriteDocument\"
                            ],
                            \"ResourceType\": \"index\"
                        },
                        {
                            \"Resource\":[
                                \"collection\/tv-*\"
                            ],
                            \"Permission\":[
                                \"aoss:CreateCollectionItems\"
                            ],
                            \"ResourceType\": \"collection\"
                        }
                    ],
                    \"Principal\":[
                        \"arn:aws:iam::123456789012:role\/Admin\"
                    ]
                }]
                """,
            type='data'
        )
        print('\nAccess policy created:')
        print(response)
    except botocore.exceptions.ClientError as error:
        if error.response['Error']['Code'] == 'ConflictException':
            print(
                '[ConflictException] An access policy with this name already exists.')
        else:
            raise error


def createCollection(client):
    """Creates a collection"""
    try:
        response = client.create_collection(
            name='tv-sitcoms',
            type='SEARCH'
        )
        return(response)
    except botocore.exceptions.ClientError as error:
        if error.response['Error']['Code'] == 'ConflictException':
            print(
                '[ConflictException] A collection with this name already exists. Try another name.')
        else:
            raise error


def waitForCollectionCreation(client):
    """Waits for the collection to become active"""
    response = client.batch_get_collection(
        names=['tv-sitcoms'])
    # Periodically check collection status
    while (response['collectionDetails'][0]['status']) == 'CREATING':
        print('Creating collection...')
        time.sleep(30)
        response = client.batch_get_collection(
            names=['tv-sitcoms'])
    print('\nCollection successfully created:')
    print(response["collectionDetails"])
    # Extract the collection endpoint from the response
    host = (response['collectionDetails'][0]['collectionEndpoint'])
    final_host = host.replace("https://", "")
    indexData(final_host)


def indexData(host):
    """Create an index and add some sample data"""
    # Build the OpenSearch client
    client = OpenSearch(
        hosts=[{'host': host, 'port': 443}],
        http_auth=awsauth,
        use_ssl=True,
        verify_certs=True,
        connection_class=RequestsHttpConnection,
        timeout=300
    )
    # It can take up to a minute for data access rules to be enforced
    time.sleep(45)

    # Create index
    response = client.indices.create('sitcoms-eighties')
    print('\nCreating index:')
    print(response)

    # Add a document to the index.
    response = client.index(
        index='sitcoms-eighties',
        body={
            'title': 'Seinfeld',
            'creator': 'Larry David',
            'year': 1989
        },
        id='1',
    )
    print('\nDocument added:')
    print(response)


def main():
    createEncryptionPolicy(client)
    createNetworkPolicy(client)
    createAccessPolicy(client)
    createCollection(client)
    waitForCollectionCreation(client)


if __name__ == "__main__":
    main()
```

## JavaScript
<a name="serverless-sdk-javascript"></a>

下列範例指令碼會使用 JavaScript 的[適用於 Node.js 中 JavaScript 的 SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-opensearchserverless/) 以及 [opensearch-js](https://www.npmjs.com/package/@opensearch-project/opensearch) 用戶端，來建立加密、網路和資料存取政策、建立相符的集合，以及為某些範例資料編製索引。

若要安裝所需的相依性，請執行下列命令：

```
npm i aws-sdk
npm i aws4
npm i @opensearch-project/opensearch
```

在指令碼中，將 `Principal` 元素取代為簽署請求的使用者或角色的 Amazon Resource Name (ARN)。您也可以選擇性地修改 `region`。

```
var AWS = require('aws-sdk');
var aws4 = require('aws4');
var {
    Client,
    Connection
} = require("@opensearch-project/opensearch");
var {
    OpenSearchServerlessClient,
    CreateSecurityPolicyCommand,
    CreateAccessPolicyCommand,
    CreateCollectionCommand,
    BatchGetCollectionCommand
} = require("@aws-sdk/client-opensearchserverless");
var client = new OpenSearchServerlessClient();

async function execute() {
    await createEncryptionPolicy(client)
    await createNetworkPolicy(client)
    await createAccessPolicy(client)
    await createCollection(client)
    await waitForCollectionCreation(client)
}

async function createEncryptionPolicy(client) {
    // Creates an encryption policy that matches all collections beginning with 'tv-'
    try {
        var command = new CreateSecurityPolicyCommand({
            description: 'Encryption policy for TV collections',
            name: 'tv-policy',
            type: 'encryption',
            policy: " \
        { \
            \"Rules\":[ \
                { \
                    \"ResourceType\":\"collection\", \
                    \"Resource\":[ \
                        \"collection\/tv-*\" \
                    ] \
                } \
            ], \
            \"AWSOwnedKey\":true \
        }"
        });
        const response = await client.send(command);
        console.log("Encryption policy created:");
        console.log(response['securityPolicyDetail']);
    } catch (error) {
        if (error.name === 'ConflictException') {
            console.log('[ConflictException] The policy name or rules conflict with an existing policy.');
        } else
            console.error(error);
    };
}

async function createNetworkPolicy(client) {
    // Creates a network policy that matches all collections beginning with 'tv-'
    try {
        var command = new CreateSecurityPolicyCommand({
            description: 'Network policy for TV collections',
            name: 'tv-policy',
            type: 'network',
            policy: " \
            [{ \
                \"Description\":\"Public access for television collection\", \
                \"Rules\":[ \
                    { \
                        \"ResourceType\":\"dashboard\", \
                        \"Resource\":[\"collection\/tv-*\"] \
                    }, \
                    { \
                        \"ResourceType\":\"collection\", \
                        \"Resource\":[\"collection\/tv-*\"] \
                    } \
                ], \
                \"AllowFromPublic\":true \
            }]"
        });
        const response = await client.send(command);
        console.log("Network policy created:");
        console.log(response['securityPolicyDetail']);
    } catch (error) {
        if (error.name === 'ConflictException') {
            console.log('[ConflictException] A network policy with that name already exists.');
        } else
            console.error(error);
    };
}

async function createAccessPolicy(client) {
    // Creates a data access policy that matches all collections beginning with 'tv-'
    try {
        var command = new CreateAccessPolicyCommand({
            description: 'Data access policy for TV collections',
            name: 'tv-policy',
            type: 'data',
            policy: " \
            [{ \
                \"Rules\":[ \
                    { \
                        \"Resource\":[ \
                            \"index\/tv-*\/*\" \
                        ], \
                        \"Permission\":[ \
                            \"aoss:CreateIndex\", \
                            \"aoss:DeleteIndex\", \
                            \"aoss:UpdateIndex\", \
                            \"aoss:DescribeIndex\", \
                            \"aoss:ReadDocument\", \
                            \"aoss:WriteDocument\" \
                        ], \
                        \"ResourceType\": \"index\" \
                    }, \
                    { \
                        \"Resource\":[ \
                            \"collection\/tv-*\" \
                        ], \
                        \"Permission\":[ \
                            \"aoss:CreateCollectionItems\" \
                        ], \
                        \"ResourceType\": \"collection\" \
                    } \
                ], \
                \"Principal\":[ \
                    \"arn:aws:iam::123456789012:role\/Admin\" \
                ] \
            }]"
        });
        const response = await client.send(command);
        console.log("Access policy created:");
        console.log(response['accessPolicyDetail']);
    } catch (error) {
        if (error.name === 'ConflictException') {
            console.log('[ConflictException] An access policy with that name already exists.');
        } else
            console.error(error);
    };
}

async function createCollection(client) {
    // Creates a collection to hold TV sitcoms indexes
    try {
        var command = new CreateCollectionCommand({
            name: 'tv-sitcoms',
            type: 'SEARCH'
        });
        const response = await client.send(command);
        return (response)
    } catch (error) {
        if (error.name === 'ConflictException') {
            console.log('[ConflictException] A collection with this name already exists. Try another name.');
        } else
            console.error(error);
    };
}

async function waitForCollectionCreation(client) {
    // Waits for the collection to become active
    try {
        var command = new BatchGetCollectionCommand({
            names: ['tv-sitcoms']
        });
        var response = await client.send(command);
        while (response.collectionDetails[0]['status'] == 'CREATING') {
            console.log('Creating collection...')
            await sleep(30000) // Wait for 30 seconds, then check the status again
            function sleep(ms) {
                return new Promise((resolve) => {
                    setTimeout(resolve, ms);
                });
            }
            var response = await client.send(command);
        }
        console.log('Collection successfully created:');
        console.log(response['collectionDetails']);
        // Extract the collection endpoint from the response
        var host = (response.collectionDetails[0]['collectionEndpoint'])
        // Pass collection endpoint to index document request
        indexDocument(host)
    } catch (error) {
        console.error(error);
    };
}

async function indexDocument(host) {

    var client = new Client({
        node: host,
        Connection: class extends Connection {
            buildRequestObject(params) {
                var request = super.buildRequestObject(params)
                request.service = 'aoss';
                request.region = 'us-east-1'; // e.g. us-east-1
                var body = request.body;
                request.body = undefined;
                delete request.headers['content-length'];
                request.headers['x-amz-content-sha256'] = 'UNSIGNED-PAYLOAD';
                request = aws4.sign(request, AWS.config.credentials);
                request.body = body;

                return request
            }
        }
    });

    // Create an index
    try {
        var index_name = "sitcoms-eighties";

        var response = await client.indices.create({
            index: index_name
        });

        console.log("Creating index:");
        console.log(response.body);

        // Add a document to the index
        var document = "{ \"title\": \"Seinfeld\", \"creator\": \"Larry David\", \"year\": \"1989\" }\n";

        var response = await client.index({
            index: index_name,
            body: document
        });

        console.log("Adding document:");
        console.log(response.body);
    } catch (error) {
        console.error(error);
    };
}

execute()
```

# 使用 CloudFormation 建立 Amazon OpenSearch Serverless 集合
<a name="serverless-cfn"></a>

您可以使用 CloudFormation 建立 Amazon OpenSearch Serverless 資源，例如集合、安全政策和 VPC 端點。如需全面的 OpenSearch Serverless CloudFormation 參考資料，請參閱《CloudFormation 使用者指南》**中的 [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_OpenSearchServerless.html)。

下列範例 CloudFormation 範本會建立簡單的資料存取政策、網路政策和安全政策，以及相符的集合。這是使用 Amazon OpenSearch Serverless 快速啟動和執行，並佈建必要元素以建立和使用集合的好方法。

**重要**  
此範例使用公有網路存取，不建議用於生產工作負載。我們建議您使用 VPC 存取權來保護您的集合。如需詳細資訊，請參閱 [AWS::OpenSearchServerless::VpcEndpoint](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opensearchserverless-vpcendpoint.html) 和 [透過 的資料平面存取 AWS PrivateLink](serverless-vpc.md)。

```
AWSTemplateFormatVersion: 2010-09-09
Description: 'Amazon OpenSearch Serverless template to create an IAM user, encryption policy, data access policy and collection'
Resources:
  IAMUSer:
    Type: 'AWS::IAM::User'
    Properties:
      UserName:  aossadmin
  DataAccessPolicy:
    Type: 'AWS::OpenSearchServerless::AccessPolicy'
    Properties:
      Name: quickstart-access-policy
      Type: data
      Description: Access policy for quickstart collection
      Policy: !Sub >-
        [{"Description":"Access for cfn user","Rules":[{"ResourceType":"index","Resource":["index/*/*"],"Permission":["aoss:*"]},
        {"ResourceType":"collection","Resource":["collection/quickstart"],"Permission":["aoss:*"]}],
        "Principal":["arn:aws:iam::${AWS::AccountId}:user/aossadmin"]}]
  NetworkPolicy:
    Type: 'AWS::OpenSearchServerless::SecurityPolicy'
    Properties:
      Name: quickstart-network-policy
      Type: network
      Description: Network policy for quickstart collection
      Policy: >-
        [{"Rules":[{"ResourceType":"collection","Resource":["collection/quickstart"]}, {"ResourceType":"dashboard","Resource":["collection/quickstart"]}],"AllowFromPublic":true}]
  EncryptionPolicy:
    Type: 'AWS::OpenSearchServerless::SecurityPolicy'
    Properties:
      Name: quickstart-security-policy
      Type: encryption
      Description: Encryption policy for quickstart collection
      Policy: >-
        {"Rules":[{"ResourceType":"collection","Resource":["collection/quickstart"]}],"AWSOwnedKey":true}
  Collection:
    Type: 'AWS::OpenSearchServerless::Collection'
    Properties:
      Name: quickstart
      Type: TIMESERIES
      Description: Collection to holds timeseries data
    DependsOn: EncryptionPolicy
Outputs:
  IAMUser:
    Value: !Ref IAMUSer
  DashboardURL:
    Value: !GetAtt Collection.DashboardEndpoint
  CollectionARN:
    Value: !GetAtt Collection.Arn
```

# 使用快照備份集合
<a name="serverless-snapshots"></a>

快照是 Amazon OpenSearch Serverless 集合的point-in-time備份，可提供災難復原功能。OpenSearch Serverless 會自動建立和管理集合的快照，以確保業務連續性和資料保護。每個快照都包含索引中繼資料 （索引的設定和映射）、叢集中繼資料 （索引範本和別名） 和索引資料 （儲存在索引中的所有文件和資料）。

OpenSearch Serverless 提供無需手動組態的自動每小時備份、零維護開銷、無額外儲存成本、快速復原意外資料遺失，以及能夠從快照還原特定索引。

在使用快照之前，請先了解這些重要的考量事項。建立快照需要一些時間才能完成，而且不會立即完成。快照建立期間的新文件或更新將不會包含在快照中。您只能將快照還原至其原始集合，不能還原至新的集合。還原時，索引會收到與其原始版本不同的新 UUIDs。如果未提供新的索引名稱或字首模式，還原至 OpenSearch Serverless 中現有的開啟索引，將會覆寫該索引的資料。這與 OpenSearch 核心行為不同。您一次只能執行一個還原操作，而且無法同時在相同集合上啟動多個還原操作。在作用中還原操作期間嘗試還原索引會導致操作失敗。在還原操作期間，您對索引的請求會失敗。

## 所需的許可
<a name="serverless-snapshots-permissions"></a>

若要使用快照，請在資料存取政策中設定下列許可。如需資料存取政策的詳細資訊，請參閱 [資料存取政策與 IAM 政策比較](serverless-data-access.md#serverless-data-access-vs-iam)。


****  

| 資料存取政策 | API | 
| --- | --- | 
| aoss：DescribeSnapshot | GET /\$1cat/snapshots/aoss-automatedGET \$1snapshot/aoss-automated/snapshot/ | 
| aoss：RestoreSnapshot | POST /\$1snapshot/aoss-automated/snapshot/\$1restore | 
| aoss：DescribeCollectionItems | GET /\$1cat/recovery | 

您可以使用下列 AWS CLI 命令來設定政策：

1.  [ create-access-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/create-access-policy.html) 

1.  [ delete-access-policy ](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/delete-access-policy.html) 

1. [ get-access-policy ](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/get-access-policy.html)

1. [ update-access-policy ](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-access-policy.html)

以下是用於建立存取政策的範例 CLI 命令。在 命令中，將*範例*內容取代為您的特定資訊。

```
aws opensearchserverless create-access-policy \
--type data \
--name Example-data-access-policy \
--region aws-region \
--policy '[
  {
    "Rules": [
      {
        "Resource": [
          "collection/Example-collection"
        ],
        "Permission": [
          "aoss:DescribeSnapshot",
          "aoss:RestoreSnapshot",
          "aoss:DescribeCollectionItems"
        ],
        "ResourceType": "collection"
      }
    ],
    "Principal": [
      "arn:aws:iam::111122223333:user/UserName"
    ],
    "Description": "Data policy to support snapshot operations."
  }
]'
```

## 使用快照
<a name="serverless-snapshots-working-with"></a>

根據預設，當您建立新的集合時，OpenSearch Serverless 會每小時自動建立快照。您無需執行任何動作。每個快照都包含集合中的所有索引。OpenSearch Serverless 建立快照後，您可以使用下列程序列出快照並檢閱快照的詳細資訊。

### 列出快照
<a name="serverless-snapshots-listing"></a>

使用下列程序列出集合中的所有快照，並檢閱其詳細資訊。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合**。

1. 選擇集合的名稱以開啟其詳細資訊頁面。

1. 選擇**快照**索引標籤以顯示所有產生的快照。

1. 檢閱快照資訊，包括：
   + **快照 ID** - 快照的唯一識別符
   + **狀態** - 目前狀態 （可用、進行中）
   + **建立時間** - 拍攝快照的時間

------
#### [ AWS CLI ]
+ 使用下列命令列出集合中的所有快照：

  ```
  GET /_cat/snapshots/aoss-automated
  ```

  OpenSearch Serverless 會傳回類似以下的回應：

  ```
  id                                 status  start_epoch start_time end_epoch  end_time    duration    indexes successful_shards failed_shards total_shards
  snapshot-ExampleSnapshotID1     SUCCESS 1737964331  07:52:11   1737964382 07:53:02    50.4s       1                                             
  snapshot-ExampleSnapshotID2     SUCCESS 1737967931  08:52:11   1737967979 08:52:59    47.7s       2                                             
  snapshot-ExampleSnapshotID3     SUCCESS 1737971531  09:52:11   1737971581 09:53:01    49.1s       3                                             
  snapshot-ExampleSnapshotID4 IN_PROGRESS 1737975131  10:52:11   -          -            4.8d       3
  ```

------

### 取得快照詳細資訊
<a name="serverless-snapshots-get-details"></a>

使用下列程序擷取特定快照的詳細資訊。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合**。

1. 選擇集合的名稱以開啟其詳細資訊頁面。

1. 選擇 **Snapshots** (快照) 索引標籤。

1. 選擇快照任務 ID 以顯示快照的詳細資訊，包括中繼資料、包含的索引和時間資訊。

------
#### [ AWS CLI ]
+ 使用下列命令擷取快照的相關資訊。在 命令中，將*範例*內容取代為您的特定資訊。

  ```
  GET _snapshot/aoss-automated/snapshot/
  ```

  範例請求：

  ```
  GET _snapshot/aoss-automated/snapshot-ExampleSnapshotID1/
  ```

  回應範例：

  ```
  {
      "snapshots": [
          {
              "snapshot": "snapshot-ExampleSnapshotID1-5e01-4423-9833Example",
              "uuid": "Example-5e01-4423-9833-9e9eb757Example",
              "version_id": 136327827,
              "version": "2.11.0",
              "remote_store_index_shallow_copy": true,
              "indexes": [
                  "Example-index-0117"
              ],
              "data_streams": [],
              "include_global_state": true,
              "metadata": {},
              "state": "SUCCESS",
              "start_time": "2025-01-27T09:52:11.953Z",
              "start_time_in_millis": 1737971531953,
              "end_time": "2025-01-27T09:53:01.062Z",
              "end_time_in_millis": 1737971581062,
              "duration_in_millis": 49109,
              "failures": [],
              "shards": {
                  "total": 0,
                  "failed": 0,
                  "successful": 0
              }
          }
      ]
  }
  ```

------

快照回應包含數個金鑰欄位：`id`提供快照操作的唯一識別符、`status`傳回目前狀態 `SUCCESS`或 `IN_PROGRESS`、`duration`指出完成快照操作所需的時間，以及`indexes`傳回快照中包含的索引數量。

## 從快照還原
<a name="serverless-snapshots-restoring"></a>

從快照還原會從先前建立的備份復原資料。此程序對於 OpenSearch Serverless 中的災難復原和資料管理至關重要。在還原之前，請了解還原的索引將具有與其原始版本不同的 UUIDs，如果未提供新的索引名稱或字首模式，還原至 OpenSearch Serverless 中的現有開放索引，將會覆寫該索引的資料，快照只能還原至其原始集合 （不支援跨集合還原），而且還原操作會影響叢集效能，因此請進行相應的規劃。

使用下列程序從快照還原備份的索引。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合**。

1. 選擇集合的名稱以開啟其詳細資訊頁面。

1. 選擇**快照**索引標籤以顯示可用的快照。

1. 選擇您要從中還原的快照，然後選擇**從快照還原**。

1. 在**從快照還原**對話方塊中：
   + 對於**快照名稱**，驗證選取的快照 ID。
   + 針對**快照範圍**，選擇下列其中一項：
     + **集合中的所有索引** - 從快照還原所有索引
     + **特定索引** - 選取要還原的個別索引
   + 針對**目的地**，選擇要還原的集合。
   + （選用） 設定**重新命名設定**以重新命名還原的索引：
     + **請勿重新命名** - 保留原始索引名稱
     + **新增字首至還原的索引名稱** - 新增字首以避免衝突
     + **使用規則表達式重新命名** - 使用進階重新命名模式
   + （選用） 設定**通知**設定，以便在還原完成或發生錯誤時收到通知。

1. 選擇**儲存**以開始還原操作。

------
#### [ OpenSearch API ]

1. 執行下列命令以識別適當的快照。

   ```
   GET /_snapshot/aoss-automated/_all
   ```

   如需較小的快照清單，請執行下列命令。

   ```
   GET /_cat/snapshots/aoss-automated
   ```

1. 執行下列命令，在還原之前驗證快照的詳細資訊。在 命令中，將*範例*內容取代為您的特定資訊。

   ```
   GET _snapshot/aoss-automated/snapshot-ExampleSnapshotID1/
   ```

1. 執行下列命令，從特定快照還原 。

   ```
   POST /_snapshot/aoss-automated/snapshot-ID/_restore
   ```

   您可以透過包含請求內文來自訂還原操作。範例如下。

   ```
   POST /_snapshot/aoss-automated/snapshot-ExampleSnapshotID1-5e01-4423-9833Example/_restore
   {
     "indices": "opensearch-dashboards*,my-index*",
     "ignore_unavailable": true,
     "include_global_state": false,
     "include_aliases": false,
     "rename_pattern": "opensearch-dashboards(.+)",
     "rename_replacement": "restored-opensearch-dashboards$1"
   }
   ```

1. 執行下列命令以檢視還原進度。

   ```
   GET /_cat/recovery
   ```

------

**注意**  
使用包含請求內文的命令還原快照時，您可以使用多個參數來控制還原行為。`indices` 參數指定要還原的索引，並支援萬用字元模式。設定 `ignore_unavailable`以繼續還原操作，即使快照中的索引遺失。使用 `include_global_state` 決定是否還原叢集狀態，以及`include_aliases`控制是否還原相關聯的別名。`rename_pattern` 和 `rename_replacement` 參數會在還原操作期間重新命名索引。

# Amazon OpenSearch Serverless 中的 Zstandard Codec 支援
<a name="serverless-zstd-compression"></a>

索引轉碼器會決定如何壓縮索引的儲存欄位，並將其儲存在磁碟和 S3 中。索引轉碼器是由指定壓縮演算法的靜態`index.codec`設定所控制。此設定會影響索引碎片大小和索引操作效能。

根據預設，OpenSearch Serverless 中的索引會使用預設轉碼器搭配 LZ4 壓縮演算法。OpenSearch Serverless 也支援 `zstd`和 `zstd_no_dict`轉碼器，具有從 1 到 6 的可設定壓縮層級。

**重要**  
由於 `index.codec` 是靜態設定，因此無法在建立索引後變更。

如需詳細資訊，請參閱 [OpenSearch Index Codecs 文件](https://opensearch.org/docs/latest/im-plugin/index-codecs/)。

## 使用 ZSTD 轉碼器建立索引
<a name="serverless-zstd-create-index"></a>

您可以使用 `index.codec`設定，在建立索引期間指定 ZSTD 轉碼器：

```
PUT /your_index
{
  "settings": {
    "index.codec": "zstd"
  }
}
```

## 壓縮層級
<a name="serverless-zstd-compression-levels"></a>

ZSTD 轉碼器透過 `index.codec.compression_level`設定支援選用的壓縮層級，接受範圍 【1， 6】 中的整數。壓縮層級越高，壓縮比越好 （儲存體越小），但壓縮和解壓縮速度越慢。預設壓縮級別為 3。

```
PUT /your_index
{
  "settings": {
    "index.codec": "zstd",
    "index.codec.compression_level": 2
  }
}
```

## 效能基準測試
<a name="serverless-zstd-performance"></a>

根據使用 nyc\$1taxi 資料集的基準測試，相較於基準，ZSTD 壓縮在 `zstd`、 `zstd_no_dict`和 壓縮層級的不同組合之間達到 26-32% 更佳的壓縮。


| 指標 | ZSTD L1 | ZSTD L6 | ZSTD\$1NO\$1DICT L1 | ZSTD\$1NO\$1DICT L6 | 
| --- | --- | --- | --- | --- | 
| 索引大小縮減 | 28.10% | 32% | 26.90% | 28.70% | 
| 編製輸送量變更的索引 | -0.50% | -23.80% | -0.50% | -5.30% | 
| 全部符合查詢 p90 延遲改善 | -16.40% | 29.50% | -16.40% | 23.40% | 
| 範圍查詢 p90 延遲改善 | 90.90% | 92.40% | -282.90% | 92.50% | 
| 距離量 p90 Agg 延遲改善 | 2% | 24.70% | 2% | 13.80% | 

如需詳細資訊，請參閱 [AWS OpenSearch 部落格](https://aws.amazon.com/blogs/big-data/optimize-storage-costs-in-amazon-opensearch-service-using-zstandard-compression/)。

# 使用衍生來源儲存儲存體
<a name="serverless-derived-source"></a>

根據預設，OpenSearch Serverless 會將每個擷取的文件存放在 `_source`欄位中，其中包含原始 JSON 文件內文，並為個別欄位編製索引以供搜尋。雖然 `_source` 欄位無法搜尋，但會保留，以便在執行擷取請求時傳回完整文件，例如取得和搜尋。啟用衍生來源時，OpenSearch Serverless 會略過儲存`_source`欄位，而是隨需動態重建欄位，例如在搜尋、get、mget、reindex 或更新操作期間。使用衍生來源設定可將儲存體用量減少高達 50%。

## Configuration
<a name="serverless-derived-source-config"></a>

若要設定索引的衍生來源，請使用 `index.derived_source.enabled`設定建立索引：

```
PUT my-index1
{
  "settings": {
    "index": {
      "derived_source": {
        "enabled": true
      }
    }
  }
}
```

## 重要考量
<a name="serverless-derived-source-considerations"></a>
+ 僅支援特定欄位類型。如需支援的欄位和限制清單，請參閱 [OpenSearch 文件](https://docs.opensearch.org/latest/mappings/metadata-fields/source/#supported-fields-and-parameters)。如果您使用衍生來源和不支援的欄位建立索引，則索引建立將會失敗。如果您嘗試在已啟用來源的衍生索引中擷取具有不支援欄位的文件，則擷取將會失敗。只有在您知道要新增至索引的欄位類型時，才使用此功能。
+ 設定`index.derived_source.enabled`是靜態設定。這無法在建立索引之後變更。

## 查詢回應的限制
<a name="serverless-derived-source-limitations"></a>

啟用衍生來源時，它會對查詢回應的產生和傳回方式施加特定限制。
+ 指定多種格式的日期欄位一律會針對所有請求的文件使用清單中的第一個格式，無論原始擷取格式為何。
+ Geopoint 值會以固定`{"lat": lat_val, "lon": lon_val}`格式傳回，並可能會失去一些精確度。
+ 多值陣列可以排序，關鍵字欄位可以重複刪除。

如需詳細資訊，請參閱 [OpenSearch 部落格](https://opensearch.org/blog/save-up-to-2x-on-storage-with-derived-source/)。

## 效能基準測試
<a name="serverless-derived-source-performance"></a>

根據使用 nyc\$1taxi 資料集的基準測試，衍生來源的索引大小相較於基準減少了 58%。


| 指標 | 衍生來源 | 
| --- | --- | 
| 索引大小縮減 | 58.3% | 
| 編製輸送量變更的索引 | 3.7% | 
| 索引 p90 延遲變更 | 6.9% | 
| 全部符合查詢 p90 延遲改善 | 19% | 
| 範圍查詢 p90 延遲改善 | -18.8% | 
| 距離量 p90 Agg 延遲改善 | -7.3% | 

如需詳細資訊，請參閱 [OpenSearch 部落格](https://opensearch.org/blog/save-up-to-2x-on-storage-with-derived-source/)。

# Amazon OpenSearch Serverless 集合群組
<a name="serverless-collection-groups"></a>

Amazon OpenSearch Serverless 中的*集合群組*會組織多個集合，並啟用使用不同 KMS 金鑰跨集合的運算資源共用。此共用運算模型透過消除每個 KMS 金鑰對個別 OpenSearch 運算單位 (OCUs) 的需求來降低成本。

您建立的每個 OpenSearch Serverless 集合都會受到靜態資料的加密保護，使用 AWS KMS 來存放和管理加密金鑰。相同集合群組中的集合會共用運算資源和 OCU 記憶體空間，即使它們使用不同的 KMS 金鑰進行加密也一樣。

集合群組可隔離安全與效能需求。您可以將具有相同 KMS 金鑰的集合分組為單一集合群組以進行安全隔離，或將集合與相同群組中的不同 KMS 金鑰結合以最佳化成本。此彈性可讓您平衡安全需求與資源效率。

當您將集合新增至集合群組時，OpenSearch Serverless 會將集合指派給群組的共用運算資源。系統會自動管理跨這些資源的工作負載分佈，同時透過使用其指定的 KMS 金鑰加密每個集合的資料來維護安全性。存取控制會持續在集合層級套用，而共用的運算資源會視需要存取多個 KMS 金鑰，以為群組中的集合提供服務。

您可以透過在集合群組層級設定最小和最大 OCU 限制來控制資源配置。這些限制適用於 群組中的所有集合，可協助您管理成本，同時確保一致的效能。

根據預設，集合群組中的集合數量、集合中的索引數量，以及集合群組中的 OCUs 數量都有服務配額 （限制）。如需詳細資訊，請參閱 [OpenSearch Serverless 配額](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-limits-serverless)。

## 重要概念
<a name="collection-groups-concepts"></a>

集合群組  
做為一或多個集合容器 AWS 的資源。每個集合群組都有唯一的識別符，並且可以有自己的容量限制和組態設定。

共用運算  
相同集合群組中的集合共用相同的一組 OCUs，無論其使用的 KMS 金鑰為何。此共用可免除每個 KMS 金鑰對個別運算資源的需求，進而降低成本。

容量限制  
您可以在集合群組層級為索引和搜尋操作設定最小和最大 OCU 限制。這些限制有助於控制成本並確保一致的效能。

# 集合群組容量限制
<a name="collection-groups-capacity-limits"></a>

集合群組透過最小和最大 OCU 限制，提供對資源配置的精細控制。這些限制適用於群組中的所有集合，並與帳戶層級容量設定獨立運作。

根據預設，集合群組中的集合數量、集合中的索引數量，以及集合群組中的 OCUs 數量都有服務配額 （限制）。如需詳細資訊，請參閱 [OpenSearch Serverless 配額](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-limits-serverless)。

## 了解集合群組容量限制
<a name="collection-groups-capacity-overview"></a>

您可以在集合群組層級設定索引和搜尋操作的最小和最大 OCU 限制。這些限制控制 OpenSearch Serverless 如何擴展群組中集合的資源：
+ **最小 OCU** – OpenSearch Serverless 為集合群組維護的最小 OCUs 數量，以確保一致的基準效能。
  + 如果工作負載需要的 OCU 少於指定的最小值，OpenSearch Serverless 仍會維持 OCU 的指定最小值，而帳單也會反映相同的值。
  + 如果工作負載需要的 OCU 數量高於指定的最小值，OpenSearch Serverless 會維持工作負載所需的 OCU 層級，而且帳單會反映較高的 OCU 使用率。
+ **最大 OCU** – OpenSearch Serverless 可為集合群組擴展至 的 OCUs 數目上限，協助您控制成本。

集合群組容量限制會與帳戶層級限制分離。帳戶層級的最大 OCU 設定僅適用於未與任何集合群組相關聯的集合，而集合群組的最大 OCU 設定則適用於該特定群組中的集合。

## 有效的容量限制值
<a name="collection-groups-capacity-values"></a>

設定集合群組的最小和最大 OCU 限制時，您只能使用下列集合中的值：1、2、4、8、16 和 16 的倍數 （例如 32、48、64、80、96)，最多 1，696 OCUs。

當您建立集合群組時，最小和最大 OCU 限制都是選用的。如果您未指定最大 OCU 限制，OpenSearch Serverless 會使用預設值 96 個 OCUs。

最小 OCU 限制必須小於或等於最大 OCU 限制。

## 了解帳戶層級和集合群組 OCU 限制之間的關係
<a name="collection-groups-capacity-relationship"></a>

規劃 OpenSearch Serverless 容量時，請務必了解帳戶層級的 OCU 限制和集合群組 OCU 限制如何互動。所有集合群組的最大 OCU 設定加上帳戶層級的最大 OCU 設定總和必須小於或等於每個帳戶的服務配額限制。如需目前限制值，請參閱 [OpenSearch Serverless 配額](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-limits-serverless)。

**注意**  
帳戶層級的最大 OCU 設定僅適用於與任何集合群組無關的集合。集合群組內的集合受其各自集合群組限制管理，而非帳戶層級限制。

此限制同時適用於索引和搜尋 OCUs。例如，如果您設定帳戶層級設定和集合群組，您必須確保總計不超過索引 OCUs 的服務配額限制，並且單獨不超過搜尋 OCUs 的服務配額限制。此外，每個帳戶最多可以建立 300 個集合群組。

**範例：規劃具有帳戶層級和集合群組限制的容量**  
如果您將帳戶層級的最大搜尋 OCU 設定為 500，且服務配額限制為 1，700：
+ 並建立 2 個集合群組，2 個集合群組的最大 OCU 總和不得超過 1，200 (1，700 - 500)
+ 您可以讓每個集合群組的預設最大 OCU 為 96 (96 \$1 96 \$1 500 = 692)，為未來的成長騰出空間
+ 或者，您可以使用服務配額允許的完整容量，將每個集合群組的上限為 600 (600 \$1 600 \$1 500 = 1，700)

此關係對於容量規劃至關重要。在建立新的集合群組或增加最大 OCU 限制之前，請確認您的總配置不超過服務配額限制。如果您達到此限制，則必須減少現有集合群組的最大 OCU 設定，或減少帳戶層級的最大 OCU 設定，以騰出空間進行新的配置。

## 設定容量限制
<a name="collection-groups-capacity-configure"></a>

您可以在建立集合群組或稍後更新集合群組時設定容量限制。若要使用 設定容量限制 AWS CLI，請使用 [CreateCollectionGroup](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateCollectionGroup.html) 或 [UpdateCollectionGroup](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateCollectionGroup.html) 命令：

```
aws opensearchserverless create-collection-group \
    --name my-collection-group \
    --capacity-limits maxIndexingCapacityInOCU=32,maxSearchCapacityInOCU=32,minIndexingCapacityInOCU=4,minSearchCapacityInOCU=4
```

若要更新現有集合群組的容量限制：

```
aws opensearchserverless update-collection-group \
    --id abcdef123456 \
    --capacity-limits maxIndexingCapacityInOCU=48,maxSearchCapacityInOCU=48,minIndexingCapacityInOCU=8,minSearchCapacityInOCU=8
```

## 監控集合群組容量
<a name="collection-groups-capacity-monitoring"></a>

OpenSearch Serverless 每隔一分鐘發出下列 Amazon CloudWatch Logs 指標，以協助您監控集合群組層級的 OCU 使用率和容量限制：
+ `IndexingOCU` – 集合群組目前正在使用的索引 OCUs 數量。
+ `SearchOCU` – 集合群組目前正在使用的搜尋 OCUs 數目。

OpenSearch Serverless 也會針對與任何集合群組無關的集合，在帳戶層級發出 OCU 指標。您可以在 CloudWatch 中彙總這些指標，以視覺化方式呈現所有集合群組和帳戶層級集合的 OCUs 總和。

設定警示以在集合群組接近其容量限制時通知您，以便您可以視需要調整設定。如需 OpenSearch Serverless 指標的詳細資訊，請參閱 [監控 Amazon OpenSearch Serverless](serverless-monitoring.md)。

## 如何強制執行容量限制
<a name="collection-groups-capacity-enforcement"></a>

OpenSearch Serverless 會在擴展操作期間強制執行集合群組容量限制。當您的集合需要額外資源時，OpenSearch Serverless 會擴展至最大 OCU 限制。當需求減少時，OpenSearch Serverless 會縮減規模，但至少維持最小 OCU 限制，以確保一致的效能。

只有當集合群組包含至少一個集合時，才會強制執行容量限制。空的集合群組不會使用 OCUs 或強制執行容量限制。

如果擴展操作超過最大 OCU 限制或違反最小 OCU 要求，OpenSearch Serverless 會拒絕該操作，以維持符合您設定的限制。

# 集合群組中的加密和 KMS 金鑰
<a name="collection-groups-kms-keys"></a>

您建立的每個 OpenSearch Serverless 集合都受到靜態資料的加密保護 AWS KMS ，使用 存放和管理加密金鑰。使用集合群組時，您可以靈活地指定集合的 KMS 金鑰。

您可以透過兩種方式提供與集合相關聯的 KMS 金鑰：
+ **在 CreateCollection 請求**中 – 使用 `encryption-config` 參數建立集合時，直接指定 KMS 金鑰。
+ **在安全政策**中 – 在加密安全政策中定義 KMS 金鑰關聯。

當您在這兩個位置指定 KMS 金鑰時，CreateCollection 請求中提供的 KMS 金鑰優先於安全政策組態。

這種靈活性可簡化大規模管理集合，尤其是當您需要使用唯一的 KMS 金鑰建立多個集合時。您可以直接在集合建立期間指定 KMS 金鑰，而不是建立和管理數千個加密政策。

## 在不同的 KMS 金鑰之間共用 OCUs
<a name="collection-groups-kms-sharing"></a>

集合群組可使用不同的 KMS 金鑰跨集合啟用運算資源共用。相同集合群組中的集合會共用 OCU 記憶體空間，無論其加密金鑰為何。此共用運算模型透過消除每個 KMS 金鑰個別 OCUs的需求來降低成本。

集合群組可隔離安全與效能需求。您可以將具有相同 KMS 金鑰的集合分組為單一集合群組以進行安全隔離，或將集合與相同群組中的不同 KMS 金鑰結合以最佳化成本。這種靈活性可讓您平衡安全需求和資源效率。

系統會使用其指定的 KMS 金鑰加密每個集合的資料，以維護安全性。存取控制會持續在集合層級套用，而共用的運算資源會視需要存取多個 KMS 金鑰，以為群組中的集合提供服務。

## 必要的 KMS 許可
<a name="collection-groups-kms-permissions"></a>

當您在 CreateCollection 請求中指定 KMS 金鑰時，您需要下列其他許可：
+ `kms:DescribeKey` – 允許 OpenSearch Serverless 擷取 KMS 金鑰的相關資訊。
+ `kms:CreateGrant` – 允許 OpenSearch Serverless 建立 KMS 金鑰的授予，以啟用加密操作。

使用 AWS 擁有的金鑰時，不需要這些許可。

# 建立集合群組
<a name="serverless-collection-groups-procedures"></a>

本主題說明如何在 Amazon OpenSearch Serverless 中建立、設定和管理集合群組。使用集合群組來組織集合並共用運算資源，以最佳化成本。在集合群組層級設定最小和最大 OCU 限制，以控制效能和支出。

## 建立集合群組
<a name="collection-groups-create"></a>

使用下列程序建立新的集合群組並設定其設定。使用 OpenSearch Serverless 主控台 AWS CLI或 AWS SDKs建立集合群組。當您建立集合群組時，您可以指定容量限制和其他組態選項。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合群組**

1. 選擇**建立集合群組**。

1. 針對**集合群組名稱**，輸入集合群組的名稱。名稱長度必須為 3-32 個字元，以小寫字母開頭，且僅包含小寫字母、數字和連字號。

1. （選用） 針對**描述**，輸入集合群組的描述。

1. 在**容量管理**區段中，設定 OCU 限制：
   + **最大索引容量** – 此群組中集合可以擴展的索引 OCUs 數量上限。
   + **最大搜尋容量** – 此群組中集合可以擴展的搜尋 OCUs 數量上限。
   + **最低索引容量** – 要維護的索引 OCUs數量下限，以實現一致的效能。
   + **搜尋容量下限** – 要維護的搜尋 OCUs 數量下限，以保持一致的效能。

1. （選用） 在**標籤**區段中，新增標籤以協助組織和識別您的集合群組。

1. 選擇**建立集合群組**。

------
#### [ AWS CLI ]
+ 使用 [create-collection-group](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/create-collection-group.html) 命令建立新的集合群組。在 命令中，將*範例*內容取代為您自己的特定資訊。

  ```
  aws opensearchserverless create-collection-group \
      --name my-collection-group \
      --description "Collection group for production workloads" \
      --capacity-limits maxIndexingCapacityInOCU=20,maxSearchCapacityInOCU=20,minIndexingCapacityInOCU=2,minSearchCapacityInOCU=2 \
      --tags key=Environment,value=Production key=Team,value=DataEngineering
  ```

  命令會傳回所建立集合群組的詳細資訊，包括其唯一 ID 和 ARN。

------

## 將新集合新增至集合群組
<a name="create-collection-in-group"></a>

建立新的集合時，請指定要與集合建立關聯的現有集合群組名稱。使用下列程序將新集合新增至集合群組。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合**

1. 選擇 **Create collection** (建立集合)。

1. 針對**集合名稱**，輸入集合的名稱。名稱長度必須為 3-28 個字元，以小寫字母開頭，且僅包含小寫字母、數字和連字號。

1. （選用） 針對**描述**，輸入集合的描述。

1. 在**集合群組**區段中，選取您要指派集合的集合群組。集合一次只能屬於一個集合群組。

   （選用） 您也可以選擇**建立新群組**。這會將您導覽至**建立集合群組**工作流程。建立集合群組完成後，請返回此程序的步驟 1，開始建立新的集合。

1. 繼續進行工作流程以建立集合。
**重要**  
請勿離開**建立集合**工作流程。這樣做會停止集合設定。**集合詳細資訊**頁面會在設定完成後顯示。

------
#### [ AWS CLI ]
+ 使用 [create-collection](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/create-collection.html) 命令建立新的集合，並將其新增至現有的集合群組。在 命令中，將*範例*內容取代為您自己的特定資訊。

  ```
  aws opensearchserverless create-collection \
      --name my-collection \
      --type SEARCH \
      --collection-group-name my-collection-group \
      --description "Collection for search workloads"
  ```

------

# 管理 Amazon OpenSearch Serverless 集合群組
<a name="manage-collection-group"></a>

建立 Amazon OpenSearch Serverless 集合群組之後，您可以在需求變更時修改其設定。使用這些管理操作來更新容量限制和檢視集合群組詳細資訊。這些變更可協助您最佳化資源配置，並維持集合的高效率組織。

## 檢視集合群組
<a name="view-collection-groups"></a>

顯示您的 OpenSearch Serverless 集合群組，以檢閱其組態、相關聯的集合和目前狀態。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合**

1. 選擇**集合群組索引標籤**。系統會顯示您帳戶的集合群組。

1.  選擇集合群組**的名稱**以顯示其詳細資訊。

------
#### [ AWS CLI ]
+ 使用 [list-collection-groups](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/list-collection-groups.html) 命令列出您帳戶中的所有集合群組。使用 [batch-get-collection-group](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/batch-get-collection-group.html) 命令來檢視特定集合群組的詳細資訊。在下列命令中，將*範例*內容取代為您自己的特定資訊。

  若要列出所有集合群組：

  ```
  aws opensearchserverless list-collection-groups
  ```

  若要取得特定集合群組的詳細資訊：

  ```
  aws opensearchserverless batch-get-collection-group \
      --names my-collection-group another-group
  ```

------

## 更新集合群組設定
<a name="update-collection-group"></a>

更新您的 OpenSearch Serverless 集合群組設定，以修改容量限制和描述等組態。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合**

1. 選擇**集合群組索引標籤**。系統會顯示您帳戶的集合群組。

1.  選擇集合群組**的名稱**以顯示其詳細資訊。

1. 在**集合群組詳細資訊**中，選擇**編輯**。

1. 進行任何變更，然後選擇**儲存**。

------
#### [ AWS CLI ]
+ 使用 [update-collection-group](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-collection-group.html) 命令更新現有集合群組的描述和容量限制。在下列命令中，將*範例*內容取代為您擁有的資訊。

  ```
  aws opensearchserverless update-collection-group \
      --id abcdef123456 \
      --description "Updated description for production workloads" \
      --capacity-limits maxIndexingCapacityInOCU=30,maxSearchCapacityInOCU=30,minIndexingCapacityInOCU=4,minSearchCapacityInOCU=4
  ```

------

容量限制的變更會立即生效，並可能影響群組中集合的擴展行為。

## 刪除集合群組
<a name="delete-collection-group"></a>

您必須先從群組中移除所有集合，才能刪除集合群組。您無法刪除包含集合的集合群組。

------
#### [ Console ]

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，選擇**無伺服器**，然後選擇**集合**

1. 選擇**集合群組索引標籤**。系統會顯示您帳戶的集合群組。

1.  選擇您要刪除的集合群組**名稱**。
**重要**  
透過更新每個集合以移除集合群組關聯，或將集合移至其他集合群組，從集合群組移除所有集合。

1. 在頁面頂端，選擇 **Delete (刪除)**。

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

------
#### [ AWS CLI ]
+ 使用 [delete-collection-group](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/delete-collection-group.html) 命令來刪除集合群組。
**重要**  
透過更新每個集合以移除集合群組關聯，或將集合移至其他集合群組，從集合群組移除所有集合。

  在下列命令中，將*範例*內容取代為您擁有的資訊。

  刪除空的集合群組：

  ```
  aws opensearchserverless delete-collection-group \
      --id abcdef123456
  ```

------

# 管理 Amazon OpenSearch Serverless 的容量限制
<a name="serverless-scaling"></a>

透過 Amazon OpenSearch Serverless，您就不需自行管理容量。OpenSearch Serverless 會根據目前的工作負載自動擴展帳戶的運算容量。Serverless 運算容量是以 *OpenSearch 運算單元* (OCU) 來測量。每個 OCU 都是 6 GiB 記憶體和對應虛擬 CPU (vCPU) 的組合，並會建立 Amazon S3 的資料管道。如需有關 OpenSearch Serverless 中分開的架構的詳細資訊，請參閱[運作方式](serverless-overview.md#serverless-process)。

當您建立第一個集合時，OpenSearch Serverless 會根據備援設定執行個體化 OCUs。預設會啟用備援作用中複本，這會執行個體化四個 OCUs （兩個用於索引，兩個用於搜尋）。這可確保另一個可用區域中待命節點的高可用性。

對於開發和測試，您可以停用集合的**啟用備援**設定。這會移除待命複本，並僅使用兩個 OCUs （一個用於索引，另一個用於搜尋）。

這些 OCU 會永遠存在，即使沒有索引編製或搜尋活動也一樣。所有後續集合都可以共用這些 OCUs，但具有唯一 AWS KMS 金鑰的集合除外，這會執行個體化自己的一組 OCUs。與集合群組相關聯的所有集合可以共用相同的一組 OCUs。單一集合群組中只能包含一種集合類型 （搜尋、時間序列或向量搜尋）。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 集合群組](serverless-collection-groups.md)。

OpenSearch Serverless 會自動向外擴展，並在索引和搜尋用量增加時新增 OCUs。當流量減少時，容量會縮減至資料大小所需的最小 OCUs 數量。

對於搜尋和時間序列集合，閒置時所需的 OCUs 數量與資料大小和索引計數成正比。對於向量集合，OCU 需求依賴記憶體 (RAM) 來存放向量圖形，以及存放索引的磁碟空間。非閒置時，OCU 需求會考慮這兩個因素。

向量集合會將索引資料儲存在 OCU 本機儲存中。達到 OCU RAM 限制的速度快於磁碟限制，這會依 RAM 空間限制向量集合。

啟用備援後，OCU 容量會縮減至至少 1 個用於索引的 OCU (0.5 個 OCU x 2)，以及 1 個用於搜尋的 OCU (0.5 個 OCU x 2)。當您停用備援時，您的集合可以縮減至 0.5 OCU 進行索引，而 0.5 OCU 進行搜尋。

擴展也會考慮集合或索引所需的碎片數量。每個 OCU 都支援指定的碎片數量，索引數量應與碎片計數成比例。所需的基本 OCUs 總數是資料、記憶體和碎片需求的上限。如需詳細資訊，請參閱*AWS 大數據部落格*上[任何規模的 Amazon OpenSearch Serverless 經濟實惠搜尋功能](https://aws.amazon.com/blogs/big-data/amazon-opensearch-serverless-cost-effective-search-capabilities-at-any-scale/)。

對於*搜尋*和*向量搜尋*集合，所有資料都存放在熱索引上，以確保快速的查詢回應時間。*時間序列*集合使用熱儲存和暖儲存的組合，將最新的資料保留在熱儲存中，以最佳化更頻繁存取資料的查詢回應時間。如需詳細資訊，請參閱[選擇集合類型](serverless-overview.md#serverless-usecase)。

**注意**  
向量搜尋集合無法與*搜尋*和*時間序列*集合共用 OCUs，即使向量搜尋集合使用與*搜尋*或*時間序列*集合相同的 KMS 金鑰。將針對您的第一個向量集合建立新的一組 OCUs。向量集合的 OCUs 會在相同的 KMS 金鑰集合之間共用。

若要管理集合的容量並控制成本，您可以指定目前帳戶和區域的整體索引編制和搜尋容量上限，而 OpenSearch Serverless 會根據這些規格自動橫向擴展集合資源。

索引編製和搜尋容量會分別調整，因此您可以針對每個容量指定帳戶層級限制：
+ **索引編製容量上限**：OpenSearch Serverless 可將索引編製容量提高到這個數目的 OCU。
+ **搜尋容量上限**：OpenSearch Serverless 可將搜尋容量提高到這個數目的 OCU。

**注意**  
目前，容量設定僅適用於帳戶層級。您無法設定每個集合的容量限制。

您的目標應該是確保容量上限足以處理尖峰工作負載。OpenSearch Serverless 會根據設定，自動橫向擴展集合的 OCU 數目，以處理索引編制和搜尋工作負載。

**Topics**
+ [進行容量設定](#serverless-scaling-configure)
+ [容量限制上限](#serverless-scaling-limits)
+ [監控容量用量](#serverless-scaling-monitoring)

## 進行容量設定
<a name="serverless-scaling-configure"></a>

若要在 OpenSearch Serverless 主控台中進行容量設定，請在左側導覽窗格中，展開 **Serverless** (無伺服器)，然後選取 **Dashboard** (儀表板)。在 **Capacity management** (容量管理) 下指定索引編製和搜尋容量上限：

![\[Capacity management dashboard showing indexing and search capacity graphs with 10 OCU limits.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ServerlessCapacity.png)


若要使用 設定容量 AWS CLI，請傳送 [UpdateAccountSettings](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateAccountSettings.html) 請求：

```
aws opensearchserverless update-account-settings \
    --capacity-limits '{ "maxIndexingCapacityInOCU": 8,"maxSearchCapacityInOCU": 9 }'
```

## 容量限制上限
<a name="serverless-scaling-limits"></a>

集合可包含的索引總數上限為 1000。對於這三種類型的集合，預設的 OCU 容量上限為 10 個用於索引OCUs，以及 10 個用於搜尋OCUs。帳戶允許的最小 OCU 容量為 1 個 OCU 【0.5 個 OCU x 2】 用於索引，1 個 OCU 【0.5 個 OCU x 2】 用於搜尋。對於所有集合，允許的容量上限為 1，700 個用於索引OCUs，以及 1，700 個用於搜尋OCUs。您可以將 OCU 計數設定為從 2 到最大允許容量的任何數字，以 2 的倍數表示。

每個 OCU 都包含足夠的暫時性熱儲存，可容納 120 GiB 的索引資料。OpenSearch Serverless 支援*搜尋*和*向量搜尋*集合中每個索引最多 1 TiB 的資料，以及*時間序列*集合中每個索引最多 100 TiB 的熱資料。對於時間序列集合，您仍然可以擷取更多資料，這些資料可以儲存為 S3 中的暖資料。

如需所有配額的清單，請參閱 [OpenSearch Serverless 配額](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-limits-serverless)。

## 監控容量用量
<a name="serverless-scaling-monitoring"></a>

您可以監控 `SearchOCU` 和 `IndexingOCU` 帳戶層級 CloudWatch 指標，以了解集合的擴展方式。建議您設定警示，以在帳戶接近與容量相關的指標閾值時通知您，如此您就可相應調整容量設定。

您也可使用這些指標，判斷容量上限設定是否合適，或者是否需要進行調整。分析這些指標，以將精力集中於集合效率的優化。如需有關 OpenSearch Serverless 傳送至 CloudWatch 的指標的詳細資訊，請參閱[監控 Amazon OpenSearch Serverless](serverless-monitoring.md)。

# 將資料擷取至 Amazon OpenSearch Serverless 集合
<a name="serverless-clients"></a>

這些章節提供有關支援的擷取管道，以將資料擷取至 Amazon OpenSearch Serverless 集合的詳細資訊。同時還涵蓋了一些您可以用於與 OpenSearch API 操作互動的用戶端。您的用戶端應與 OpenSearch 2.x 相容，以便與 OpenSearch Serverless 整合。

**Topics**
+ [所需的最低許可](#serverless-ingestion-permissions)
+ [OpenSearch 擷取](#serverless-osis-ingestion)
+ [Fluent Bit](#serverless-fluentbit)
+ [Amazon Data Firehose](#serverless-kdf)
+ [Go](#serverless-go)
+ [Java](#serverless-java)
+ [JavaScript](#serverless-javascript)
+ [Logstash](#serverless-logstash)
+ [Python](#serverless-python)
+ [Ruby](#serverless-ruby)
+ [使用其他用戶端簽署 HTTP 請求](#serverless-signing)

## 所需的最低許可
<a name="serverless-ingestion-permissions"></a>

若要將資料擷取至 OpenSearch Serverless 集合，寫入資料的主體必須在[資料存取政策](serverless-data-access.md)中指派下列最低許可：

```
[
   {
      "Rules":[
         {
            "ResourceType":"index",
            "Resource":[
               "index/target-collection/logs"
            ],
            "Permission":[
               "aoss:CreateIndex",
               "aoss:WriteDocument",
               "aoss:UpdateIndex"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/my-user"
      ]
   }
]
```

如果您計劃寫入到其他索引，許可的範圍可能會更廣泛。例如，您可以允許對所有索引 (index/*target-collection*/\$1) 或索引子集合 (index/*target-collection*/*logs\$1*) 的許可，而不是指定單一目標索引。

如需所有可用 OpenSearch API 操作及其相關許可的參考資料，請參閱 [Amazon OpenSearch Serverless 中支援的操作和外掛程式](serverless-genref.md)。

## OpenSearch 擷取
<a name="serverless-osis-ingestion"></a>

您可以使用 Amazon OpenSearch Ingestion，而不是使用第三方用戶端直接將資料傳送至 OpenSearch Serverless 集合。 OpenSearch 您可以將資料生產者設定為將資料傳送至 OpenSearch Ingestion，並自動將資料交付至您指定的集合。您也可以設定 OpenSearch Ingestion，在交付資料之前轉換資料。如需詳細資訊，請參閱[Amazon OpenSearch 擷取概觀](ingestion.md)。

OpenSearch Ingestion 管道需要許可，才能寫入設定為接收器的 OpenSearch Serverless 集合。這些許可包括描述集合並向其傳送 HTTP 請求的能力。如需使用 OpenSearch Ingestion 將資料新增至集合的指示，請參閱 [授予 Amazon OpenSearch Ingestion 管道對集合的存取權](pipeline-collection-access.md)。

若要開始使用 OpenSearch Ingestion，請參閱 [教學課程：使用 Amazon OpenSearch Ingestion 將資料擷取至集合](osis-serverless-get-started.md)。

## Fluent Bit
<a name="serverless-fluentbit"></a>

您可以使用 [AWS for Fluent Bit 映像](https://github.com/aws/aws-for-fluent-bit#public-images)和 [OpenSearch 輸出外掛程式](https://docs.fluentbit.io/manual/pipeline/outputs/opensearch)，將資料擷取至 OpenSearch Serverless 集合。

**注意**  
您必須擁有 AWS 適用於 Fluent Bit 映像的 2.30.0 版或更新版本，才能與 OpenSearch Serverless 整合。

**範例組態**：

這個組態檔案的範例輸出區段顯示如何使用 OpenSearch Serverless 集合作為目的地。重要的補充是 `AWS_Service_Name` 參數，也就是 `aoss`。`Host` 是集合端點。

```
[OUTPUT]
    Name  opensearch
    Match *
    Host  collection-endpoint.us-west-2.aoss.amazonaws.com
    Port  443
    Index  my_index
    Trace_Error On
    Trace_Output On
    AWS_Auth On
    AWS_Region <region>
    AWS_Service_Name aoss
    tls     On
    Suppress_Type_Name On
```

## Amazon Data Firehose
<a name="serverless-kdf"></a>

Firehose 支援 OpenSearch Serverless 作為交付目的地。如需將資料傳送至 OpenSearch Serverless 的指示，請參閱《*Amazon* [Data Firehose 開發人員指南》中的建立 Kinesis Data Firehose 交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)和[為您的目的地選擇 OpenSearch Serverless](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-opensearch-serverless)。

您提供給 Firehose 交付的 IAM 角色必須在具有目標集合`aoss:WriteDocument`最低許可的資料存取政策中指定，而且您必須具有預先存在的索引才能傳送資料。如需詳細資訊，請參閱[所需的最低許可](#serverless-ingestion-permissions)。

將資料傳送至 OpenSearch Serverless 之前，您可能需要執行資料轉換。如需進一步了解如何使用 Lambda 函數來執行此任務，請參閱相同指南中的 [Amazon Kinesis Data Firehose 資料轉換](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html)。

## Go
<a name="serverless-go"></a>

下列範本程式碼會使用 Go 的 [opensearch-go](https://github.com/opensearch-project/opensearch-go) 用戶端，建立與指定 OpenSearch Serverless 集合的安全連線，並建立單一索引。您必須提供 `region` 和 `host` 的值。

```
package main

import (
  "context"
  "log"
  "strings"
  "github.com/aws/aws-sdk-go-v2/aws"
  "github.com/aws/aws-sdk-go-v2/config"
  opensearch "github.com/opensearch-project/opensearch-go/v2"
  opensearchapi "github.com/opensearch-project/opensearch-go/v2/opensearchapi"
  requestsigner "github.com/opensearch-project/opensearch-go/v2/signer/awsv2"
)

const endpoint = "" // serverless collection endpoint

func main() {
	ctx := context.Background()

	awsCfg, err := config.LoadDefaultConfig(ctx,
		config.WithRegion("<AWS_REGION>"),
		config.WithCredentialsProvider(
			getCredentialProvider("<AWS_ACCESS_KEY>", "<AWS_SECRET_ACCESS_KEY>", "<AWS_SESSION_TOKEN>"),
		),
	)
	if err != nil {
		log.Fatal(err) // don't log.fatal in a production-ready app
	}

	// create an AWS request Signer and load AWS configuration using default config folder or env vars.
	signer, err := requestsigner.NewSignerWithService(awsCfg, "aoss") // "aoss" for Amazon OpenSearch Serverless
	if err != nil {
		log.Fatal(err) // don't log.fatal in a production-ready app
	}

	// create an opensearch client and use the request-signer
	client, err := opensearch.NewClient(opensearch.Config{
		Addresses: []string{endpoint},
		Signer:    signer,
	})
	if err != nil {
		log.Fatal("client creation err", err)
	}

	indexName := "go-test-index"

  // define index mapping
	mapping := strings.NewReader(`{
	 "settings": {
	   "index": {
	        "number_of_shards": 4
	        }
	      }
	 }`)

	// create an index
	createIndex := opensearchapi.IndicesCreateRequest{
		Index: indexName,
    Body: mapping,
	}
	createIndexResponse, err := createIndex.Do(context.Background(), client)
	if err != nil {
		log.Println("Error ", err.Error())
		log.Println("failed to create index ", err)
		log.Fatal("create response body read err", err)
	}
	log.Println(createIndexResponse)

	// delete the index
	deleteIndex := opensearchapi.IndicesDeleteRequest{
		Index: []string{indexName},
	}

	deleteIndexResponse, err := deleteIndex.Do(context.Background(), client)
	if err != nil {
		log.Println("failed to delete index ", err)
		log.Fatal("delete index response body read err", err)
	}
	log.Println("deleting index", deleteIndexResponse)
}

func getCredentialProvider(accessKey, secretAccessKey, token string) aws.CredentialsProviderFunc {
	return func(ctx context.Context) (aws.Credentials, error) {
		c := &aws.Credentials{
			AccessKeyID:     accessKey,
			SecretAccessKey: secretAccessKey,
			SessionToken:    token,
		}
		return *c, nil
	}
}
```

## Java
<a name="serverless-java"></a>

下列範本程式碼會使用 Java 的 [opensearch-java](https://search.maven.org/artifact/org.opensearch.client/opensearch-java) 用戶端，建立與指定 OpenSearch Serverless 集合的安全連線，並建立單一索引。您必須提供 `region` 和 `host` 的值。

與 OpenSearch Service *網域*相較，重要的區別在於服務名稱 (是 `aoss` 而不是 `es`)。

```
// import OpenSearchClient to establish connection to OpenSearch Serverless collection
import org.opensearch.client.opensearch.OpenSearchClient;

SdkHttpClient httpClient = ApacheHttpClient.builder().build();
// create an opensearch client and use the request-signer
OpenSearchClient client = new OpenSearchClient(
    new AwsSdk2Transport(
        httpClient,
        "...us-west-2.aoss.amazonaws.com", // serverless collection endpoint
        "aoss" // signing service name
        Region.US_WEST_2, // signing service region
        AwsSdk2TransportOptions.builder().build()
    )
);

String index = "sample-index";

// create an index
CreateIndexRequest createIndexRequest = new CreateIndexRequest.Builder().index(index).build();
CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest);
System.out.println("Create index reponse: " + createIndexResponse);

// delete the index
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest.Builder().index(index).build();
DeleteIndexResponse deleteIndexResponse = client.indices().delete(deleteIndexRequest);
System.out.println("Delete index reponse: " + deleteIndexResponse);

httpClient.close();
```

下列範例程式碼會再次建立安全連線，然後搜尋索引。

```
import org.opensearch.client.opensearch.OpenSearchClient;

SdkHttpClient httpClient = ApacheHttpClient.builder().build();

OpenSearchClient client = new OpenSearchClient(
    new AwsSdk2Transport(
        httpClient,
        "...us-west-2.aoss.amazonaws.com", // serverless collection endpoint
        "aoss" // signing service name
        Region.US_WEST_2, // signing service region
        AwsSdk2TransportOptions.builder().build()
    )
);

Response response = client.generic()
    .execute(
        Requests.builder()
            .endpoint("/" + "users" + "/_search?typed_keys=true")
            .method("GET")
            .json("{"
                + "    \"query\": {"
                + "        \"match_all\": {}"
                + "    }"
                + "}")
            .build());

httpClient.close();
```

## JavaScript
<a name="serverless-javascript"></a>

下列範本程式碼會使用 JavaScript 的 [opensearch-js](https://www.npmjs.com/package/@opensearch-project/opensearch) 用戶端，建立與指定 OpenSearch Serverless 集合的安全連線，建立單一索引，新增文件，以及刪除索引。您必須提供 `node` 和 `region` 的值。

與 OpenSearch Service *網域*相較，重要的區別在於服務名稱 (是 `aoss` 而不是 `es`)。

------
#### [ Version 3 ]

此範例使用適用於 JavaScript in Node.js 的 SDK 的[版本 3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)。

```
const { defaultProvider } = require('@aws-sdk/credential-provider-node');
const { Client } = require('@opensearch-project/opensearch');
const { AwsSigv4Signer } = require('@opensearch-project/opensearch/aws');

async function main() {
    // create an opensearch client and use the request-signer
    const client = new Client({
        ...AwsSigv4Signer({
            region: 'us-west-2',
            service: 'aoss',
            getCredentials: () => {
                const credentialsProvider = defaultProvider();
                return credentialsProvider();
            },
        }),
        node: '' # // serverless collection endpoint
    });

    const index = 'movies';

    // create index if it doesn't already exist
    if (!(await client.indices.exists({ index })).body) {
        console.log((await client.indices.create({ index })).body);
    }

    // add a document to the index
    const document = { foo: 'bar' };
    const response = await client.index({
        id: '1',
        index: index,
        body: document,
    });
    console.log(response.body);

    // delete the index
    console.log((await client.indices.delete({ index })).body);
}

main();
```

------
#### [ Version 2 ]

此範例使用適用於 JavaScript in Node.js 的 SDK 的[版本 2](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/)。

```
const AWS = require('aws-sdk');
const { Client } = require('@opensearch-project/opensearch');
const { AwsSigv4Signer } = require('@opensearch-project/opensearch/aws');

async function main() {
    // create an opensearch client and use the request-signer
    const client = new Client({
        ...AwsSigv4Signer({
            region: 'us-west-2',
            service: 'aoss',
            getCredentials: () =>
                new Promise((resolve, reject) => {
                    AWS.config.getCredentials((err, credentials) => {
                        if (err) {
                            reject(err);
                        } else {
                            resolve(credentials);
                        }
                    });
                }),
        }),
        node: '' # // serverless collection endpoint
    });

    const index = 'movies';

    // create index if it doesn't already exist
    if (!(await client.indices.exists({ index })).body) {
        console.log((await client.indices.create({
            index
        })).body);
    }

    // add a document to the index
    const document = {
        foo: 'bar'
    };
    const response = await client.index({
        id: '1',
        index: index,
        body: document,
    });
    console.log(response.body);

    // delete the index
    console.log((await client.indices.delete({ index })).body);
}

main();
```

------

## Logstash
<a name="serverless-logstash"></a>

您可以使用 [Logstash OpenSearch 外掛程式](https://github.com/opensearch-project/logstash-output-opensearch)，將日誌發佈至 OpenSearch Serverless 集合。

**使用 Logstash 將資料傳送至 OpenSearch Serverless**

1. 使用 Docker *或 Linux 安裝 logstash-output-opensearch 外掛程式的 2.0.0 版或更新版本*。 [logstash-output-opensearch](https://github.com/opensearch-project/logstash-output-opensearch) 

------
#### [ Docker ]

   Docker 託管預先安裝了 OpenSearch 輸出外掛程式的 Logstash OSS 軟體：[opensearchproject/logstash-oss-with-opensearch-output-plugin](https://hub.docker.com/r/opensearchproject/logstash-oss-with-opensearch-output-plugin/tags?page=1&ordering=last_updated&name=8.4.0)。您可以像任何其他映像一樣提取映像：

   ```
   docker pull opensearchproject/logstash-oss-with-opensearch-output-plugin:latest
   ```

------
#### [ Linux ]

   首先，如果您尚未[安裝最新版本的 Logstash](https://www.elastic.co/guide/en/logstash/current/installing-logstash.html)，請先安裝。然後，安裝輸出外掛程式的 2.0.0 版本：

   ```
   cd logstash-8.5.0/
   bin/logstash-plugin install --version 2.0.0 logstash-output-opensearch
   ```

   如果外掛程式已安裝，請將其更新至最新版本：

   ```
   bin/logstash-plugin update logstash-output-opensearch 
   ```

   從 2.0.0 版的外掛程式開始， AWS 軟體開發套件使用 第 3 版。如果您使用的是早於 8.4.0 的 Logstash 版本，則必須移除任何預先安裝的 AWS 外掛程式，並安裝`logstash-integration-aws`外掛程式：

   ```
   /usr/share/logstash/bin/logstash-plugin remove logstash-input-s3
   /usr/share/logstash/bin/logstash-plugin remove logstash-input-sqs
   /usr/share/logstash/bin/logstash-plugin remove logstash-output-s3
   /usr/share/logstash/bin/logstash-plugin remove logstash-output-sns
   /usr/share/logstash/bin/logstash-plugin remove logstash-output-sqs
   /usr/share/logstash/bin/logstash-plugin remove logstash-output-cloudwatch
   
   /usr/share/logstash/bin/logstash-plugin install --version 0.1.0.pre logstash-integration-aws
   ```

------

1. 若要讓 OpenSearch 輸出外掛程式與 OpenSearch Serverless 搭配使用，您必須對 logstash.conf 的 `opensearch` 輸出區段進行下列修改：
   + 將 `aoss` 指定為 `auth_type` 下的 `service_name`。
   + 針對 `hosts` 指定您的集合端點。
   + 新增參數 `default_server_major_version` 和 `legacy_template`。外掛程式需要這些參數才能與 OpenSearch Serverless 搭配使用。

   ```
   output {
     opensearch {
       hosts => "collection-endpoint:443"
       auth_type => {
         ...
         service_name => 'aoss'
       }
       default_server_major_version => 2
       legacy_template => false
     }
   }
   ```

   此組態檔案範例會從 S3 儲存貯體中的檔案取得輸入，並將其傳送至 OpenSearch Serverless 集合：

   ```
   input {
     s3  {
       bucket => "my-s3-bucket"
       region => "us-east-1"
     }
   }
   
   output {
     opensearch {
       ecs_compatibility => disabled
       hosts => "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com:443"
       index => my-index
       auth_type => {
         type => 'aws_iam'
         aws_access_key_id => 'your-access-key'
         aws_secret_access_key => 'your-secret-key'
         region => 'us-east-1'
         service_name => 'aoss'
       }
       default_server_major_version => 2
       legacy_template => false
     }
   }
   ```

1. 然後，使用新的組態執行 Logstash 來測試外掛程式：

   ```
   bin/logstash -f config/test-plugin.conf
   ```

## Python
<a name="serverless-python"></a>

下列範本程式碼會使用 Python 的 [opensearch-py](https://pypi.org/project/opensearch-py/) 用戶端，建立與指定 OpenSearch Serverless 集合的安全連線，建立單一索引並搜尋該索引。您必須提供 `region` 和 `host` 的值。

與 OpenSearch Service *網域*相較，重要的區別在於服務名稱 (是 `aoss` 而不是 `es`)。

```
from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth
import boto3

host = ''  # serverless collection endpoint, without https://
region = ''  # e.g. us-east-1

service = 'aoss'
credentials = boto3.Session().get_credentials()
auth = AWSV4SignerAuth(credentials, region, service)

# create an opensearch client and use the request-signer
client = OpenSearch(
    hosts=[{'host': host, 'port': 443}],
    http_auth=auth,
    use_ssl=True,
    verify_certs=True,
    connection_class=RequestsHttpConnection,
    pool_maxsize=20,
)

# create an index
index_name = 'books-index'
create_response = client.indices.create(
    index_name
)

print('\nCreating index:')
print(create_response)

# index a document
document = {
  'title': 'The Green Mile',
  'director': 'Stephen King',
  'year': '1996'
}

response = client.index(
    index = 'books-index',
    body = document,
    id = '1'
)


# delete the index
delete_response = client.indices.delete(
    index_name
)

print('\nDeleting index:')
print(delete_response)
```

## Ruby
<a name="serverless-ruby"></a>

`opensearch-aws-sigv4` Gem 套件提供了立即使用的 OpenSearch Serverless 的存取，以及 OpenSearch 服務。它具有 [opensearch-ruby](https://rubygems.org/gems/opensearch-ruby) 客戶端的所有功能，因為這是此 Gem 套件的相依項目。

執行個體化 Sigv4 簽署者時，請指定 `aoss` 為服務名稱：

```
require 'opensearch-aws-sigv4'
require 'aws-sigv4'

signer = Aws::Sigv4::Signer.new(service: 'aoss',
                                region: 'us-west-2',
                                access_key_id: 'key_id',
                                secret_access_key: 'secret')

# create an opensearch client and use the request-signer
client = OpenSearch::Aws::Sigv4Client.new(
  { host: 'https://your.amz-opensearch-serverless.endpoint',
    log: true },
  signer)

# create an index
index = 'prime'
client.indices.create(index: index)

# insert data
client.index(index: index, id: '1', body: { name: 'Amazon Echo', 
                                            msrp: '5999', 
                                            year: 2011 })

# query the index
client.search(body: { query: { match: { name: 'Echo' } } })

# delete index entry
client.delete(index: index, id: '1')

# delete the index
client.indices.delete(index: index)
```

## 使用其他用戶端簽署 HTTP 請求
<a name="serverless-signing"></a>

當您使用其他用戶端建構 HTTP 請求，並[簽署](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)對 OpenSearch Serverless 集合的請求時，下列要求適用。
+ 您必須將服務名稱指定為 `aoss`。
+ 所有 AWS Signature 版本 4 請求均需要 `x-amz-content-sha256` 標頭。其提供請求承載的雜湊。如果有請求承載，請將值設定為其安全雜湊演算法 (SHA) 加密雜湊 (SHA256)。如果沒有請求承載，請將值設定為 `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`，這是一個空字串的雜湊。

**Topics**
+ [使用 cURL 編製索引](#serverless-signing-curl)
+ [使用 Postman 編製索引](#serverless-signing-postman)

### 使用 cURL 編製索引
<a name="serverless-signing-curl"></a>

下列範例請求使用用戶端 URL 請求程式庫 (cURL)，將單一文件傳送至集合`movies-index`中名為 的索引：

```
curl -XPOST \
    --user "$AWS_ACCESS_KEY_ID":"$AWS_SECRET_ACCESS_KEY" \
    --aws-sigv4 "aws:amz:us-east-1:aoss" \
    --header "x-amz-content-sha256: $REQUEST_PAYLOAD_SHA_HASH" \
    --header "x-amz-security-token: $AWS_SESSION_TOKEN" \
    "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/movies-index/_doc" \
    -H "Content-Type: application/json" -d '{"title": "Shawshank Redemption"}'
```

### 使用 Postman 編製索引
<a name="serverless-signing-postman"></a>

下圖顯示如何使用 Postman 將請求傳送至集合。如需驗證的指示，請參閱 [Postman 中的使用 AWS 簽章驗證工作流程進行驗證](https://learning.postman.com/docs/sending-requests/authorization/aws-signature/)。

![\[JSON response showing creation of a "movies-index" with successful result and no shards.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/ServerlessPostman.png)


# 在 Amazon OpenSearch Serverless 上設定Machine Learning
<a name="serverless-configure-machine-learning"></a>

## 機器學習
<a name="serverless-configure-machine-learning-what-is"></a>

Machine Learning (ML) 以 ML 演算法和遠端模型的形式提供 ML 功能。透過存取這些模型，您可以執行數個 AI 工作流程，例如 RAG 或語意搜尋。ML 支援使用您可以使用連接器設定的最新外部託管模型進行生成式 AI 使用案例的實驗和生產部署。設定連接器之後，您必須將其設定為模型，然後將其部署以執行預測。

## 連接器
<a name="serverless-configure-machine-learning-connectors"></a>

連接器有助於存取第三方 ML 平台上託管的模型。它們可做為 OpenSearch 叢集與遠端模型之間的閘道。如需詳細資訊，請參閱下列 文件：
+ 在 *OpenSearch 文件*網站上[建立第三方 ML 平台的連接器](https://docs.opensearch.org/latest/ml-commons-plugin/remote-models/connectors/) 
+ [外部平台的連接器](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-external-connector.html)
+ [的連接器 AWS 服務](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html)
**重要**  
當您建立信任政策時，請將 新增**ml.opensearchservice.amazonaws.com**為 OpenSearch Service 原則。
略過 [連接器](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html)頁面上顯示如何在政策中設定網域的步驟。
在[設定許可](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html#connector-sagemaker-prereq)步驟中新增 `iam:PassRole`陳述式。
在 OpenSearch Dashboards 中略過**映射 ML 角色**步驟。不需要後端角色組態。這適用於外部平台[的 Connectors AWS 服務](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html) 和 Connectors。 [https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-external-connector.html](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-external-connector.html)
在對集合端點的 SigV4 請求中，將服務名稱設定為 ，**aoss**而不是 **es**。

##   模型
<a name="serverless-configure-machine-learning-models"></a>

模型是用於各種 AI 工作流程的核心功能。一般而言，您可以將連接器與模型建立關聯，以使用連接器執行預測。模型處於部署狀態後，您可以執行預測。如需詳細資訊，請參閱 *OpenSearch 文件*網站上的[註冊託管在第三方平台上的模型](https://docs.opensearch.org/latest/ml-commons-plugin/api/model-apis/register-model/#register-a-model-hosted-on-a-third-party-platform)。

**注意**  
OpenSearch Serverless 不支援所有模型功能，例如本機模型。如需詳細資訊，請參閱[不支援的Machine Learning API 和功能 APIs](serverless-machine-learning-unsupported-features.md)。

## 設定Machine Learning的許可
<a name="serverless-configure-machine-learning-permissions"></a>

下一節說明Machine Learning (ML) 所需的集合資料存取政策。將*預留位置值*取代為您的特定資訊。如需詳細資訊，請參閱[支援的政策許可](serverless-data-access.md#serverless-data-supported-permissions)。

```
{
    "Rules": [
        {
            "Resource": [
                "model/collection_name/*"
            ],
            "Permission": [
                "aoss:DescribeMLResource",
                "aoss:CreateMLResource",
                "aoss:UpdateMLResource",
                "aoss:DeleteMLResource",
                "aoss:ExecuteMLResource"
            ],
            "ResourceType": "model"
        }
    ],
    "Principal": [
        "arn:aws:iam::account_id:role/role_name"
    ],
    "Description": "ML full access policy for collection_name"
}
```
+ **aoss：DescribeMLResource** – 准許搜尋和查詢連接器、模型和模型群組。
+ **aoss：CreateMLResource** – 准許建立連接器、模型和模型群組。
+ **aoss：UpdateMLResource** – 准許更新連接器、模型和模型群組。
+ **aoss：DeleteMLResource** – 准許刪除連接器、模型和模型群組。
+ **aoss：ExecuteMLResource** – 准許對模型執行預測。

# 不支援的Machine Learning API 和功能 APIs
<a name="serverless-machine-learning-unsupported-features"></a>

## 不支援APIs
<a name="serverless-unsupported-ml-api"></a>

Amazon OpenSearch Serverless 不支援下列Machine Learning (ML) APIs：
+ 本機模型功能
+ Model Train API
+ 模型預測演算法 API
+ 模型批次預測 API
+ 代理程式 API 及其對應的工具
+ MCP 伺服器 APIs
+ 記憶體 APIs
+ 控制器 APIs
+ 執行演算法 API
+ ML 設定檔 AP
+ ML 統計資料 API

如需 ML APIs的詳細資訊，請參閱 *OpenSearch 文件*網站上的 [ML APIs](https://docs.opensearch.org/latest/ml-commons-plugin/api/index/)。

## 不支援的功能
<a name="serverless-unsupported-ml-features"></a>

Amazon OpenSearch Serverless 不支援下列 ML 功能：
+ 代理程式和工具
+ 本機模型
+ 搜尋和擷取管道中的 ML 推論處理器
  + ML 推論擷取處理器
  + ML 推論搜尋回應處理器
  + ML 推論搜尋請求處理器

如需這些功能的詳細資訊，請參閱 *OpenSearch 文件網站上的下列文件*：
+ [機器學習](https://docs.opensearch.org/latest/ml-commons-plugin)
+ [ML 推論處理器](https://docs.opensearch.org/latest/ingest-pipelines/processors/ml-inference/)
+ [搜尋管道](https://docs.opensearch.org/latest/search-plugins/search-pipelines/index/)

# 在 OpenSearch Serverless 上設定神經搜尋和混合搜尋
<a name="serverless-configure-neural-search"></a>

## 神經搜尋
<a name="serverless-configure-neural-search-what-is"></a>

Amazon OpenSearch Serverless 支援對資料進行語意搜尋操作的神經搜尋功能。神經搜尋使用機器學習模型來了解查詢的語意意義和內容，提供比傳統關鍵字式搜尋更相關的搜尋結果。本節說明如何在 OpenSearch Serverless 中設定神經搜尋，包括所需的許可、支援的處理器，以及與標準 OpenSearch 實作的金鑰差異。

使用神經搜尋，您可以對資料執行語意搜尋，這會考慮語意意義來了解搜尋查詢的意圖。此功能由下列元件提供支援：
+ 文字內嵌擷取管道處理器
+ 神經查詢
+ 神經稀疏查詢

## 混合搜尋
<a name="serverless-configure-hybrid-search"></a>

透過混合式搜尋，您可以結合關鍵字和語意搜尋功能來改善搜尋相關性。若要使用混合式搜尋，請建立搜尋管道來處理搜尋結果並結合文件分數。如需詳細資訊，請參閱 *OpenSearch 文件*網站上的[搜尋管道](https://docs.opensearch.org/latest/search-plugins/search-pipelines/index/)。使用下列元件實作混合式搜尋：
+ 標準化搜尋管道處理器

**支援的標準化技術**
  + `min_max`
  + `l2`

**支援的組合技術**
  + `arithmetic_mean`
  + `geometric_mean`
  + `harmonic_mean`

  如需標準化和組合技術的詳細資訊，請參閱 *OpenSearch 文件*網站上的[請求內文欄位](https://docs.opensearch.org/latest/search-plugins/search-pipelines/normalization-processor/#request-body-fields)。
+ 混合查詢

## 神經和混合查詢
<a name="serverless-configure-neural-search-hybrid-queries"></a>

根據預設，OpenSearch 會使用關鍵字型 Okapi BM25 演算法計算文件分數，這非常適合包含關鍵字的搜尋查詢。神經搜尋為自然語言查詢提供了新的查詢類型，並能夠結合語意和關鍵字搜尋。

**Example : `neural`**  

```
"neural": {
  "vector_field": {
    "query_text": "query_text",
    "query_image": "image_binary",
    "model_id": "model_id",
    "k": 100
  }
}
```

如需詳細資訊，請參閱 *OpenSearch 文件*網站上的[神經查詢](https://docs.opensearch.org/latest/query-dsl/specialized/neural/)。

**Example : `hybrid`**  

```
"hybrid": {
      "queries": [
        array of lexical, neural, or combined queries
      ]
    }
```

如需詳細資訊，請參閱 *OpenSearch 文件*網站上的[混合查詢](https://docs.opensearch.org/latest/query-dsl/compound/hybrid/)。

若要在 Amazon OpenSearch Serverless 中設定語意搜尋元件，請遵循 *OpenSearch 文件*網站上的[神經搜尋教學](https://docs.opensearch.org/latest/tutorials/vector-search/neural-search-tutorial/)課程中的步驟。請記住這些重要差異：
+ OpenSearch Serverless 僅支援遠端模型。您必須將連接器設定為遠端託管模型。您不需要部署或移除遠端模型。如需詳細資訊，請參閱 *OpenSearch 文件*網站上的[語意和混合式搜尋入門](https://docs.opensearch.org/latest/tutorials/vector-search/neural-search-tutorial/)。
+ 當您搜尋向量索引或搜尋最近建立的搜尋和擷取管道時，最多會有 15 秒的延遲。

## 設定 許可
<a name="serverless-configure-neural-search-permissions"></a>

OpenSearch Serverless 中的神經搜尋需要下列許可。如需詳細資訊，請參閱[支援的政策許可](serverless-data-access.md#serverless-data-supported-permissions)。

**Example ：神經搜尋政策**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "NeuralSearch",
            "Effect": "Allow",
            "Action": [
              "aoss:CreateIndex",
              "aoss:CreateCollection",
              "aoss:UpdateCollection",
              "aoss:DeleteIndex",
              "aoss:DeleteCollection"
            ],
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/your-collection-name"
        }
    ]
}
```
+ **aoss：\$1Index** – 建立存放文字內嵌的向量索引。
+ **aoss：\$1CollectionItems** – 建立擷取和搜尋管道。
+ **aoss：\$1MLResource** – 建立和註冊文字內嵌模型。
+ **aoss：APIAccessAll** – 提供 OpenSearch APIs存取權，以進行搜尋和擷取操作。

以下說明神經搜尋所需的集合資料存取政策。將*預留位置值*取代為您的特定資訊。

**Example ：資料存取政策**  

```
[
    {
        "Description": "Create index permission",
        "Rules": [
            {
                "ResourceType": "index",
                "Resource": ["index/collection_name/*"],
                "Permission": [
                  "aoss:CreateIndex", 
                  "aoss:DescribeIndex",
                  "aoss:UpdateIndex",
                  "aoss:DeleteIndex"
                ]
            }
        ],
        "Principal": [
            "arn:aws:iam::account_id:role/role_name"
        ]
    },
    {
        "Description": "Create pipeline permission",
        "Rules": [
            {
                "ResourceType": "collection",
                "Resource": ["collection/collection_name"],
                "Permission": [
                  "aoss:CreateCollectionItems",
                  "aoss:DescribeCollectionItems",
                  "aoss:UpdateCollectionItems",
                  "aoss:DeleteCollectionItems"
                ]
            }
        ],
        "Principal": [
            "arn:aws:iam::account_id:role/role_name"
        ]
    },
    {
        "Description": "Create model permission",
        "Rules": [
            {
                "ResourceType": "model",
                "Resource": ["model/collection_name/*"],
                "Permission": ["aoss:CreateMLResources"]
            }
        ],
        "Principal": [
            "arn:aws:iam::account_id:role/role_name"
        ]
    }
]
```

# 在 Amazon OpenSearch Serverless 上設定工作流程
<a name="serverless-configure-workflows"></a>

## 工作流程
<a name="serverless-configure-workflows-what-is"></a>

工作流程支援建置者在 OpenSearch 上創新 AI 應用程式。目前在 OpenSearch 中使用機器學習 (ML) 產品的程序，例如語意搜尋，需要複雜的設定和預先處理任務，以及詳細的使用者查詢，這兩者都可能耗時且容易出錯。工作流程是一種簡化架構，可鏈結 OpenSearch 的多個 API 呼叫。

如需設定和使用方式，請參閱 *OpenSearch* 網站上的[自動化組態](https://docs.opensearch.org/docs/latest/automating-configurations/index/)。當您在 OpenSearch Serverless 中使用工作流程時，請考慮下列重要差異：
+ OpenSearch Serverless 在工作流程步驟中僅使用遠端模型。您不需要部署這些模型。
+ OpenSearch Serverless 不支援**重新索引**工作流程步驟。
+ 當您在其他 API 呼叫之後搜尋**工作流程**和**工作流程狀態**時， 預期最多延遲 15 秒，才會顯示更新。

OpenSearch Serverless Collections 在 OpenSearch UI 應用程式中用作資料來源時支援工作流程。如需詳細資訊，請參閱[管理資料來源關聯](application-data-sources-and-vpc.md)。

## 設定 許可
<a name="serverless-configure-workflows-permissions"></a>

在您建立和佈建範本之前，請確認您擁有必要的許可。如果您需要協助，請聯絡您的 帳戶管理員。OpenSearch Serverless Workflows 需要下列許可。您可以在 IAM 政策中定義集合資源 ARN，以限制特定集合的許可範圍。

**Example ：工作流程政策**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "NeuralSearch",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:role/Cognito_identitypoolname/Auth_Role"
        ]
      },
      "Action": [
        "aoss:CreateIndex",
        "aoss:CreateCollection",
        "aoss:UpdateCollection",
        "aoss:DeleteIndex",
        "aoss:DeleteCollection"
      ],
      "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/your-collection-name"
    }
  ]
}
```
+ **aoss：\$1CollectionItems** – 准許建立和管理範本，以及佈建[搜尋和擷取管道](serverless-configure-neural-search.md)。
+ **aoss：\$1Index** – 准許使用 OpenSearch API 操作建立和刪除索引。
+ **aoss：\$1MLResource** – 准許佈建使用[設定Machine Learning](serverless-configure-machine-learning.md)的工作流程步驟。

# Amazon OpenSearch Serverless 的安全概觀
<a name="serverless-security"></a>

Amazon OpenSearch Serverless 的安全功能在以下方面與 Amazon OpenSearch Service 的安全功能有根本上的不同：


| 功能 | OpenSearch Service | OpenSearch Serverless | 
| --- | --- | --- | 
| 資料存取控制 | 資料存取由 IAM 政策和精細存取控制決定。 | 資料存取由資料存取政策決定。 | 
| 靜態加密 | 網域的靜態加密是選擇性。 | 集合需要靜態加密。 | 
| 安全設定和管理 | 您必須個別設定每個網域的網路、加密和資料存取。 | 您可以使用安全政策大規模管理多個集合的安全設定。 | 

下圖說明構成功能集合的安全元件。集合必須具有指派的加密金鑰、網路存取設定和相符的資料存取政策，以授予其資源許可。

![\[Diagram showing encryption, network, data access, and authentication policies for a collection.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-security.png)


**Topics**
+ [加密政策](#serverless-security-encryption)
+ [網路政策](#serverless-security-network)
+ [資料存取政策](#serverless-security-data-access)
+ [IAM 和 SAML 身分驗證](#serverless-security-authentication)
+ [基礎設施安全性](#serverless-infrastructure-security)
+ [開始使用 Amazon OpenSearch Serverless 中的安全功能](serverless-tutorials.md)
+ [Amazon OpenSearch Serverless 的身分和存取管理](security-iam-serverless.md)
+ [Amazon OpenSearch Serverless 中的加密](serverless-encryption.md)
+ [Amazon OpenSearch Serverless 的網路存取](serverless-network.md)
+ [Amazon OpenSearch Serverless 中的 FIPS 合規](fips-compliance-opensearch-serverless.md)
+ [Amazon OpenSearch Serverless 的資料存取控制](serverless-data-access.md)
+ [透過 的資料平面存取 AWS PrivateLink](serverless-vpc.md)
+ [透過 控制平面存取 AWS PrivateLink](serverless-vpc-cp.md)
+ [Amazon OpenSearch Serverless 的 SAML 身分驗證](serverless-saml.md)
+ [Amazon OpenSearch Serverless 的合規驗證](serverless-compliance-validation.md)

## 加密政策
<a name="serverless-security-encryption"></a>

[加密政策](serverless-encryption.md)會定義您的集合是使用 AWS 擁有的金鑰 還是客戶受管金鑰加密。加密政策由兩個元件組成：**資源模式**和**加密金鑰**。資源模式定義政策適用於哪個或哪些集合。加密金鑰決定如何保護相關聯的集合。

若要將政策套用至多個集合，請在政策規則中包含萬用字元 (\$1)。例如，下列政策適用於名稱以「logs」開頭的所有集合。

![\[Input field for specifying a prefix term or collection name, with "logs*" entered.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-security-encryption.png)


加密政策可簡化建立和管理集合的程序，尤其是以程式設計方式這樣做時。您可以指定名稱來建立集合，加密金鑰會在建立時自動指派給集合。

## 網路政策
<a name="serverless-security-network"></a>

[網路政策](serverless-network.md)會定義您的集合是否可私下存取，或從公有網路透過網際網路存取。私有集合可透過 OpenSearch Serverless 受管 VPC 端點，或使用私有存取的特定 Amazon Bedrock AWS 服務 存取。 *AWS 服務 *正如加密政策，網路政策可套用至多個集合，以便您大規模管理許多集合的網路存取。

網路政策由兩個元件組成：**存取類型**和**資源類型**。存取類型可以是公有或私有。資源類型決定您選擇的存取權是否套用至集合端點、OpenSearch Dashboards 端點，或兩者。

![\[Access type and resource type options for configuring network policies in OpenSearch.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-security-network.png)


如果您計劃在網路政策內設定 VPC 存取，您必須先建立一個或多個 [OpenSearch Serverless 受管 VPC 端點](serverless-vpc.md)。這些端點可讓您像在 VPC 中一樣存取 OpenSearch Serverless，無需使用網際網路閘道、NAT 裝置、VPN 連線或 Direct Connect 連線。

的私有存取 AWS 服務 只能套用至集合的 OpenSearch 端點，無法套用至 OpenSearch Dashboards 端點。 AWS 服務 無法授予 OpenSearch Dashboards 的存取權。

## 資料存取政策
<a name="serverless-security-data-access"></a>

[資料存取政策](serverless-data-access.md)定義您的使用者如何存取集合內的資料。資料存取政策會自動將存取許可指派給符合特定模式的集合和索引，以協助您大規模管理集合。可將多個政策套用至單一資源。

資料存取政策由一組規則組成，每個規則都有三個元件：**資源類型**、**授予的資源**和一組**許可**。資源類型可以是集合或索引。授予的資源可以是集合/索引名稱或具有萬用字元 (\$1) 的模式。許可清單指定政策授予存取權的 [OpenSearch API 操作](serverless-genref.md#serverless-operations)。此外，政策包含**主體**清單，其中指定要授予存取權的 IAM 角色、使用者和 SAML 身分。

![\[Selected principals and granted resources with permissions for collection and index access.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-data-access.png)


如需有關資料存取政策格式的詳細資訊，請參閱[政策語法](serverless-data-access.md#serverless-data-access-syntax)。

建立資料存取政策之前，您必須擁有一個或多個 IAM 角色或使用者或 SAML 身分，才能在政策中提供存取權。如需詳細資訊，請參閱下節。

**注意**  
將集合從公有切換到私有存取， 會移除 OpenSearch Serverless 集合主控台中的索引索引標籤。

## IAM 和 SAML 身分驗證
<a name="serverless-security-authentication"></a>

 IAM 主體和 SAML 身分是資料存取政策的其中一個建構區塊。在存取政策的 `principal` 陳述式中，您可以包含 IAM 角色、使用者和 SAML 身分。接著會將您在相關聯政策規則中指定的許可授予這些主體。

```
[
   {
      "Rules":[
         {
            "ResourceType":"index",
            "Resource":[
               "index/marketing/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie"
      ]
   }
]
```

您可以直接在 OpenSearch Serverless 中設定 SAML 身分驗證。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的 SAML 身分驗證](serverless-saml.md)。

## 基礎設施安全性
<a name="serverless-infrastructure-security"></a>

Amazon OpenSearch Serverless 受到 AWS 全球網路安全的保護。如需安全服務以及如何 AWS 保護基礎設施的資訊 AWS ，請參閱[AWS 雲端安全](https://aws.amazon.com/security/)。若要使用基礎設施安全的最佳實務來設計您的 AWS 環境，請參閱*安全支柱 AWS Well-Architected Framework* 中的[基礎設施保護](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 發佈的 API 呼叫，透過網路存取 Amazon OpenSearch Serverless。用戶端必須支援 Transport Layer Security (TLS)。我們需要 TLS 1.2 並建議使用 TLS 1.3。如需 TLS 1.3 支援的密碼清單，請參閱 Elastic Load Balancing 文件中的 [TLS 通訊協定和密碼](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#tls-protocols-ciphers)。

此外，您必須使用存取金鑰 ID 和與 IAM 主體相關聯的私密存取金鑰來簽署請求。或者，您可以使用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) 以產生暫時安全憑證以簽署請求。

# 開始使用 Amazon OpenSearch Serverless 中的安全功能
<a name="serverless-tutorials"></a>

下列教學課程可協助您開始使用 Amazon OpenSearch Serverless。兩個教學課程完成的基本步驟相同，但其中一個使用主控台，另一個則使用 AWS CLI。

請注意，這些教學課程中的使用案例皆已簡化。網路和安全政策都相當公開。在生產工作負載中，建議您設定更強大的安全功能，例如 SAML 身分驗證、VPC 存取權和限制性資料存取政策。

**Topics**
+ [教學課程：開始使用 Amazon OpenSearch Serverless 中的安全功能 (主控台)](gsg-serverless.md)
+ [教學課程：開始使用 Amazon OpenSearch Serverless (CLI) 中的安全功能](gsg-serverless-cli.md)

# 教學課程：開始使用 Amazon OpenSearch Serverless 中的安全功能 (主控台)
<a name="gsg-serverless"></a>

此教學課程會帶您逐步了解使用 Amazon OpenSearch Serverless 主控台建立和管理安全性政策的基本步驟。

在本教學課程中，您將完成下列步驟：

1. [設定許可](#gsgpermissions)

1. [建立加密政策](#gsg-encryption)

1. [建立網路政策](#gsg-network)

1. [設定資料存取政策](#gsg-data-access)

1. [建立集合](#gsgcreate-collection)

1. [上傳並搜尋資料](#gsgindex-collection)

本教學課程會逐步引導您使用 設定集合 AWS 管理主控台。如需使用 的相同步驟 AWS CLI，請參閱 [教學課程：開始使用 Amazon OpenSearch Serverless (CLI) 中的安全功能](gsg-serverless-cli.md)。

## 步驟 1：設定許可
<a name="gsgpermissions"></a>

**注意**  
如果您已經使用更廣泛的身分型政策，例如 `Action":"aoss:*"` 或 `Action":"*"`，則可以略過此步驟。不過，在生產環境中，我們建議您遵循最低權限原則，並且僅指派任務完成所需的最低許可。

為完成本教學課程，您必須具備正確的 IAM 許可。使用者或角色必須連接[身分型政策](security-iam-serverless.md#security-iam-serverless-id-based-policies)，該政策包含以下最低許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "aoss:ListCollections",
        "aoss:BatchGetCollection",
        "aoss:CreateCollection",
        "aoss:CreateSecurityPolicy",
        "aoss:GetSecurityPolicy",
        "aoss:ListSecurityPolicies",
        "aoss:CreateAccessPolicy",
        "aoss:GetAccessPolicy",
        "aoss:ListAccessPolicies"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

如需 OpenSearch Serverless 許可的完整清單，請參閱 [Amazon OpenSearch Serverless 的身分和存取管理](security-iam-serverless.md)。

## 步驟 2：建立加密政策
<a name="gsg-encryption"></a>

[加密政策](serverless-encryption.md)會指定 OpenSearch Serverless 用來加密集合的 AWS KMS 金鑰。您可以使用 AWS 受管金鑰 或不同的金鑰來加密集合。為確保本教學課程簡單易懂，我們將使用 AWS 受管金鑰加密集合。

**建立加密政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，展開 **Serverless** (無伺服器)，然後選擇 **Encryption policies** (加密政策)。

1. 選擇 **Create encryption policy** (建立加密政策)。

1. 將政策命名為 **books-policy**。如需相關描述，請輸入 **Encryption policy for books collection** (書籍集合的加密政策)。

1. 在 **Resources** (資源) 下，輸入 **books** (書籍)，這就是您將為集合命名的名稱。如果您想要更廣泛的名稱，可以包含星號 (`books*`)，以便將政策套用至以「書籍」一詞開頭的所有集合。

1. 對於**加密**，請保持選取**使用 AWS 擁有的金鑰**。

1. 選擇**建立**。

## 步驟 3：建立網路政策
<a name="gsg-network"></a>

[網路政策](serverless-network.md)會決定集合是否可透過網際網路從公用網路存取，或者是否必須透過 OpenSearch Serverless 受管 VPC 端點進行存取。在本教學課程中，我們將設定公用存取權。

**建立網路政策**

1. 在左側導覽窗格中，選擇 **Network policies** (網路政策)，然後選擇 **Create network policy** (建立網路政策)。

1. 將政策命名為 **books-policy**。如需相關描述，請輸入 **Network policy for books collection** (書籍集合的網路政策)。

1. 在 **Rule 1** (規則 1) 下，將規則命名為 **Public access for books collection** (書籍集合的公用存取權)。

1. 為確保本教學課程簡單易懂，我們將為*書籍*集合設定公用存取權。對於存取類型，選取 **Public** (公用)。

1. 我們要從 OpenSearch Dashboards 存取該集合。若要執行這項操作，您需要設定 Dashboards *以及* OpenSearch 端點的網路存取，否則 Dashboards 將無法運作。

   對於資源類型，請同時啟用 **OpenSearch 端點的存取權**和 **OpenSearch Dashboards 的存取權**。

1. 在兩個輸入方塊中，輸入 **Collection Name = books** (集合名稱 = 書籍)。此設定會縮減政策的範圍，使該政策僅套用至單一集合 (`books`)。您的規則應如下所示：  
![\[Search interface showing two input fields for collection or prefix term selection, both set to "books".\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-tutorial-network.png)

1. 選擇**建立**。

## 步驟 4：建立資料存取政策
<a name="gsg-data-access"></a>

在您設定資料存取之前，將無法存取集合資料。[資料存取政策](serverless-data-access.md)與您在步驟 1 中設定的 IAM 身分型政策不同。資料存取政策允許使用者存取集合中的實際資料。

在本教學課程中，我們將為單一使用者提供將資料索引編製為*書籍*集合所需的許可。

**建立資料存取政策**

1. 在左側導覽窗格中，選擇 **Data access policies** (資料存取政策)，然後選擇 **Create access policy** (建立存取政策)。

1. 將政策命名為 **books-policy**。如需相關描述，請輸入 **Data access policy for books collection** (書籍集合的資料存取政策)。

1. 選取 **JSON** 作為政策定義方法，並將下列政策貼到 JSON 編輯器中。

   將主體 ARN 取代為您將用來登入 OpenSearch Dashboards 和為資料編製索引的帳戶 ARN。

   ```
   [
      {
         "Rules":[
            {
               "ResourceType":"index",
               "Resource":[
                  "index/books/*"
               ],
               "Permission":[
                  "aoss:CreateIndex",
                  "aoss:DescribeIndex", 
                  "aoss:ReadDocument",
                  "aoss:WriteDocument",
                  "aoss:UpdateIndex",
                  "aoss:DeleteIndex"
               ]
            }
         ],
         "Principal":[
            "arn:aws:iam::123456789012:user/my-user"
         ]
      }
   ]
   ```

   此政策為單一使用者提供在*書籍*集合中建立索引、為某些資料編製索引以及進行搜尋所需的最低許可。

1. 選擇**建立**。

## 步驟 5：建立集合
<a name="gsgcreate-collection"></a>

現在您已設定加密和網路政策，您可以建立相符的集合，而且安全設定會自動套用至該集合。

**建立 OpenSearch Serverless 集合**

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **Create collection** (建立集合)。

1. 將該集合命名為 **books** (書籍)。

1. 對於集合類型，選擇 **Search** (搜尋)。

1. 在 **Encryption** (加密) 下，OpenSearch Serverless 會告知您集合名稱與 `books-policy` 加密政策相符。

1. 在 **Network access settings** (網路存取設定) 下，OpenSearch Serverless 會告知您集合名稱與 `books-policy` 網路政策相符。

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

1. 在 **Data access policy options** (資料存取政策選項) 下，OpenSearch Serverless 會通知您集合名稱符合 `books-policy` 資料存取政策。

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

1. 檢閱集合組態，然後選擇 **Submit** (提交)。集合初始化所需的時間通常不到一分鐘。

## 步驟 6：上傳並搜尋資料
<a name="gsgindex-collection"></a>

您可以使用 Postman 或 curl，將資料上傳至 OpenSearch Serverless 集合。為了簡潔起見，這些範例使用 OpenSearch Dashboards 主控台中的 **Dev Tools** (開發工具)。

**在集合中為資料編製索引和進行搜尋**

1. 在左側導覽窗格中選擇 **Collections** (集合)，然後選擇 **books** (書籍) 集合以開啟其詳細資訊頁面。

1. 選擇集合的 OpenSearch Dashboards URL。URL 採用的格式為 `https://collection-id.us-east-1.aoss.amazonaws.com/_dashboards`。

1. 使用您在資料存取政策中指定之主體的 [AWS 存取金鑰和私密金鑰](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html)登入 OpenSearch Dashboards。

1. 在 OpenSearch Dashboards 中，開啟左側導覽選單，然後選擇 **Dev Tools** (開發工具)。

1. 若要建立名為 *books-index* 的單一索引，請執行下列命令：

   ```
   PUT books-index 
   ```  
![\[OpenSearch Dashboards console showing PUT request for books-index with JSON response.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-createindex.png)

1. 若要將單一文件的索引編製為 *books-index*，請執行下列命令：

   ```
   PUT books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

1. 若要在 OpenSearch Dashboards 中搜尋資料，您需要設定至少一個索引模式。OpenSearch 使用這些模式來識別您要分析的索引。開啟 Dashboards 主選單，選擇 **Stack Management** (堆疊管理)，選擇 **Index Patterns** (索引模式)，然後選擇 **Create index pattern** (建立索引模式)。在本教學課程中，輸入 *books-index*。

1. 選擇 **Next step** (下一步)，然後選擇 **Create index pattern** (建立索引模式)。建立模式之後，您可以檢視各種文件欄位，例如 `author` 和 `title`。

1. 若要開始搜尋資料，請再次開啟主選單，然後選擇 **Discover** (探索)，或使用[搜尋 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/)。

# 教學課程：開始使用 Amazon OpenSearch Serverless (CLI) 中的安全功能
<a name="gsg-serverless-cli"></a>

本教學課程會逐步引導您完成 [主控台入門安全教學](gsg-serverless.md)課程中所述的步驟，但使用 AWS CLI 而非 OpenSearch Service 主控台。

在本教學課程中，您會完成下列步驟：

1. 建立 IAM 許可政策

1. 將 IAM 政策連接至 IAM 角色

1. 建立加密政策

1. 建立網路政策

1. 建立集合

1. 設定資料存取政策

1. 擷取集合端點

1. 將資料上傳至您的連線

1. 搜尋集合中的資料

本教學課程的目標是使用相當簡單的加密、網路和資料存取設定，來設定單一 OpenSearch Serverless 集合。例如，我們將設定公有網路存取、 AWS 受管金鑰 用於加密的 ，以及將最低許可授予單一使用者的簡化資料存取政策。

在生產案例中，請考慮實作更強大的組態，包括 SAML 身分驗證、自訂加密金鑰和 VPC 存取權。

**在 OpenSearch Serverless 中開始使用安全政策**

1. 
**注意**  
如果您已經使用更廣泛的身分型政策，例如 `Action":"aoss:*"` 或 `Action":"*"`，則可以略過此步驟。不過，在生產環境中，我們建議您遵循最低權限原則，並且僅指派任務完成所需的最低許可。

   若要開始，請建立具有執行本教學課程中步驟所需最低許可 AWS Identity and Access Management 的政策。我們會將該政策命名為 `TutorialPolicy`：

   ```
   aws iam create-policy \
     --policy-name TutorialPolicy \
     --policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Action\": [\"aoss:ListCollections\",\"aoss:BatchGetCollection\",\"aoss:CreateCollection\",\"aoss:CreateSecurityPolicy\",\"aoss:GetSecurityPolicy\",\"aoss:ListSecurityPolicies\",\"aoss:CreateAccessPolicy\",\"aoss:GetAccessPolicy\",\"aoss:ListAccessPolicies\"],\"Effect\": \"Allow\",\"Resource\": \"*\"}]}"
   ```

   **回應範例**

   ```
   {
       "Policy": {
           "PolicyName": "TutorialPolicy",
           "PolicyId": "ANPAW6WRAECKG6QJWUV7U",
           "Arn": "arn:aws:iam::123456789012:policy/TutorialPolicy",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "PermissionsBoundaryUsageCount": 0,
           "IsAttachable": true,
           "CreateDate": "2022-10-16T20:57:18+00:00",
           "UpdateDate": "2022-10-16T20:57:18+00:00"
       }
   }
   ```

1. 將 `TutorialPolicy` 連接至 IAM 角色，該角色將在集合中為資料編制索引和進行搜尋。我們會將該使用者命名為 `TutorialRole`：

   ```
   aws iam attach-role-policy \
     --role-name TutorialRole \
     --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
   ```

1. 建立集合之前，您需要建立[加密政策](serverless-encryption.md)，以將 AWS 擁有的金鑰 指派給您在稍後步驟中建立的*書籍*集合。

   傳送下列請求，以建立*書籍*集合的加密政策：

   ```
   aws opensearchserverless create-security-policy \
     --name books-policy \
     --type encryption --policy "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AWSOwnedKey\":true}"
   ```

   **回應範例**

   ```
   {
       "securityPolicyDetail": {
           "type": "encryption",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDAwNTk5MF8x",
           "policy": {
               "Rules": [
                   {
                       "Resource": [
                           "collection/books"
                       ],
                       "ResourceType": "collection"
                   }
               ],
               "AWSOwnedKey": true
           },
           "createdDate": 1669240005990,
           "lastModifiedDate": 1669240005990
       }
   }
   ```

1. 建立[網路政策](serverless-network.md)，該政策會提供*書籍*集合的公用存取權：

   ```
   aws opensearchserverless create-security-policy --name books-policy --type network \
     --policy "[{\"Description\":\"Public access for books collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/books\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AllowFromPublic\":true}]"
   ```

   **回應範例**

   ```
   {
       "securityPolicyDetail": {
           "type": "network",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDI1Njk1NV8x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "dashboard"
                       },
                       {
                           "Resource": [
                               "collection/books"
                           ],
                           "ResourceType": "collection"
                       }
                   ],
                   "AllowFromPublic": true,
                   "Description": "Public access for books collection"
               }
           ],
           "createdDate": 1669240256955,
           "lastModifiedDate": 1669240256955
       }
   }
   ```

1. 建立*書籍*集合：

   ```
   aws opensearchserverless create-collection --name books --type SEARCH
   ```

   **回應範例**

   ```
   {
       "createCollectionDetail": {
           "id": "8kw362bpwg4gx9b2f6e0",
           "name": "books",
           "status": "CREATING",
           "type": "SEARCH",
           "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
           "kmsKeyArn": "auto",
           "createdDate": 1669240325037,
           "lastModifiedDate": 1669240325037
       }
   }
   ```

1. 建立[資料存取政策](serverless-data-access.md)，該政策會提供在*書籍*集合中為資料編製索引和進行搜尋的最低許可。將主體 ARN 取代為步驟 1 中的 `TutorialRole` ARN：

   ```
   aws opensearchserverless create-access-policy \
     --name books-policy \
     --type data \
     --policy "[{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index\/books\/books-index\"],\"Permission\":[\"aoss:CreateIndex\",\"aoss:DescribeIndex\",\"aoss:ReadDocument\",\"aoss:WriteDocument\",\"aoss:UpdateIndex\",\"aoss:DeleteIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:role\/TutorialRole\"]}]"
   ```

   **回應範例**

   ```
   {
       "accessPolicyDetail": {
           "type": "data",
           "name": "books-policy",
           "policyVersion": "MTY2OTI0MDM5NDY1M18x",
           "policy": [
               {
                   "Rules": [
                       {
                           "Resource": [
                               "index/books/books-index"
                           ],
                           "Permission": [
                               "aoss:CreateIndex",
                               "aoss:DescribeIndex",
                               "aoss:ReadDocument",
                               "aoss:WriteDocument",
                               "aoss:UpdateDocument",
                               "aoss:DeleteDocument"
                           ],
                           "ResourceType": "index"
                       }
                   ],
                   "Principal": [
                       "arn:aws:iam::123456789012:role/TutorialRole"
                   ]
               }
           ],
           "createdDate": 1669240394653,
           "lastModifiedDate": 1669240394653
       }
   }
   ```

   `TutorialRole` 現在應該能夠在*書籍*集合中為文件編製索引和進行搜尋。

1. 若要呼叫 OpenSearch API，您需要集合端點。傳送下列請求以擷取 `collectionEndpoint` 參數：

   ```
   aws opensearchserverless batch-get-collection --names books  
   ```

   **回應範例**

   ```
   {
       "collectionDetails": [
           {
               "id": "8kw362bpwg4gx9b2f6e0",
               "name": "books",
               "status": "ACTIVE",
               "type": "SEARCH",
               "description": "",
               "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0",
               "createdDate": 1665765327107,
               "collectionEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com",
               "dashboardEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/_dashboards"
           }
       ],
       "collectionErrorDetails": []
   }
   ```
**注意**  
在集合狀態變更為 `ACTIVE` 之前，您都無法看到集合端點。在集合成功建立前，您可能必須進行多次呼叫才能檢查狀態。

1. 使用 [Postman](https://www.getpostman.com/) 或 curl 等 HTTP 工具，將資料索引編製為*書籍*集合。我們將建立名為 *books-index* 的索引，並新增單一文件。

   使用 `TutorialRole` 的憑證，將下列請求傳送至您在上一步擷取的集合端點。

   ```
   PUT https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_doc/1
   { 
     "title": "The Shining",
     "author": "Stephen King",
     "year": 1977
   }
   ```

   **回應範例**

   ```
   {
     "_index" : "books-index",
     "_id" : "1",
     "_version" : 1,
     "result" : "created",
     "_shards" : {
       "total" : 0,
       "successful" : 0,
       "failed" : 0
     },
     "_seq_no" : 0,
     "_primary_term" : 0
   }
   ```

1. 若要開始在集合中搜尋資料，請使用[搜尋 API](https://opensearch.org/docs/latest/opensearch/rest-api/search/)。下列查詢會執行基本搜尋：

   ```
   GET https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/books-index/_search
   ```

   **回應範例**

   ```
   {
       "took": 405,
       "timed_out": false,
       "_shards": {
           "total": 6,
           "successful": 6,
           "skipped": 0,
           "failed": 0
       },
       "hits": {
           "total": {
               "value": 2,
               "relation": "eq"
           },
           "max_score": 1.0,
           "hits": [
               {
                   "_index": "books-index:0::3xJq14MBUaOS0wL26UU9:0",
                   "_id": "F_bt4oMBLle5pYmm5q4T",
                   "_score": 1.0,
                   "_source": {
                       "title": "The Shining",
                       "author": "Stephen King",
                       "year": 1977
                   }
               }
           ]
       }
   }
   ```

# Amazon OpenSearch Serverless 的身分和存取管理
<a name="security-iam-serverless"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可以控制經過「身分驗證」** (已登入) 和獲得「授權」** (具有許可) 可使用 OpenSearch Serverless 資源的人員。IAM 是您可以免費使用 AWS 服務 的 。

**Topics**
+ [適用於 OpenSearch Serverless 的身分型政策](#security-iam-serverless-id-based-policies)
+ [OpenSearch Serverless 的政策動作](#security-iam-serverless-id-based-policies-actions)
+ [OpenSearch Serverless 的政策資源](#security-iam-serverless-id-based-policies-resources)
+ [Amazon OpenSearch Serverless 的政策條件索引鍵](#security_iam_serverless-conditionkeys)
+ [使用 OpenSearch Serverless 的 ABAC](#security_iam_serverless-with-iam-tags)
+ [將暫時性憑證與 OpenSearch Serverless 搭配使用](#security_iam_serverless-tempcreds)
+ [OpenSearch Serverless 的服務連結角色](#security_iam_serverless-slr)
+ [其他政策類型](#security_iam_access-manage-other-policies)
+ [OpenSearch Serverless 的身分型政策範例](#security_iam_serverless_id-based-policy-examples)
+ [Amazon OpenSearch Serverless 的 IAM Identity Center 支援](serverless-iam-identity-center.md)

## 適用於 OpenSearch Serverless 的身分型政策
<a name="security-iam-serverless-id-based-policies"></a>

**支援身分型政策：**是

身分型政策是可以附加到身分 (例如 IAM 使用者、使用者群組或角色) 的 JSON 許可政策文件。這些政策可控制身分在何種條件下能對哪些資源執行哪些動作。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。如要了解您在 JSON 政策中使用的所有元素，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### OpenSearch Serverless 的身分型政策範例
<a name="security_iam_id-based-policy-examples"></a>

若要檢視 OpenSearch Serverless 身分型政策範例，請參閱 [OpenSearch Serverless 的身分型政策範例](#security_iam_serverless_id-based-policy-examples)。

## OpenSearch Serverless 的政策動作
<a name="security-iam-serverless-id-based-policies-actions"></a>

**支援政策動作：**是

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策動作通常具有與相關聯 AWS API 操作相同的名稱。有一些例外狀況，例如沒有相符的 API 操作的*僅限許可動作*。也有一些作業需要政策中的多個動作。這些額外的動作稱為*相依動作*。

政策會使用動作來授予執行相關聯動作的許可。

OpenSearch Serverless 中的政策動作會在動作之前使用以下字首：

```
aoss
```

若要在單一陳述式中指定多個動作，請用逗號分隔。

```
"Action": [
      "aoss:action1",
      "aoss:action2"
         ]
```

您可以使用萬用字元 (\$1) 來指定多個動作。例如，若要指定開頭是 `Describe` 文字的所有動作，請包含以下動作：

```
"Action": "aoss:List*"
```

若要檢視 OpenSearch Serverless 身分型政策範例，請參閱 [OpenSearch Serverless 的身分型政策範例](#security_iam_id-based-policy-examples)。

## OpenSearch Serverless 的政策資源
<a name="security-iam-serverless-id-based-policies-resources"></a>

**支援政策資源：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```

## Amazon OpenSearch Serverless 的政策條件索引鍵
<a name="security_iam_serverless-conditionkeys"></a>

**支援服務特定政策條件金鑰：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Condition` 元素會根據定義的條件，指定陳述式的執行時機。您可以建立使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)的條件運算式 (例如等於或小於)，來比對政策中的條件和請求中的值。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

除了屬性型存取控制 (ABAC)，OpenSearch Serverless 支援以下條件索引鍵：
+ `aoss:collection`
+ `aoss:CollectionId`
+ `aoss:index`

即使提供存取政策和安全政策的許可，您仍然可以使用這些條件索引鍵。例如：

```
[
   {
      "Effect":"Allow",
      "Action":[
         "aoss:CreateAccessPolicy",
         "aoss:CreateSecurityPolicy"
      ],
      "Resource":"*",
      "Condition":{
         "StringLike":{
            "aoss:collection":"log"
         }
      }
   }
]
```

在此範例中，此條件適用於包含*規則*的政策，這些規則與集合名稱或模式相符。這些條件具有以下行為：
+ `StringEquals`：適用的政策具有包含*確切*資源字串 "log" (亦即 `collection/log`) 的規則。
+ `StringLike`：適用的政策所具備規則包含的資源字串*包含*字串 "log" (亦即 `collection/log`，但也是 `collection/logs-application` 或 `collection/applogs123`)。

**注意**  
*集合*條件索引鍵不適用於索引層級。例如，在上述政策中，該條件不會套用至包含資源字串 `index/logs-application/*` 的存取或安全政策。

若要查看 OpenSearch Serverless 條件索引鍵的清單，請參閱《服務授權參考》**中的 [Condition keys for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-policy-keys) (Amazon OpenSearch Serverless 的條件索引鍵)。若要了解您可以將條件索引鍵與哪些動作和資源搭配使用，請參閱 [Actions defined by Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html#amazonopensearchserverless-actions-as-permissions) (Amazon OpenSearch Serverless 定義的動作)。

## 使用 OpenSearch Serverless 的 ABAC
<a name="security_iam_serverless-with-iam-tags"></a>

**支援 ABAC (政策中的標籤)：**是

屬性型存取控制 (ABAC) 是一種授權策略，依據稱為標籤的屬性來定義許可。您可以將標籤連接至 IAM 實體 AWS 和資源，然後設計 ABAC 政策，以便在委託人的標籤符合資源上的標籤時允許操作。

如需根據標籤控制存取，請使用 `aws:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。

如果服務支援每個資源類型的全部三個條件金鑰，則對該服務而言，值為 **Yes**。如果服務僅支援某些資源類型的全部三個條件金鑰，則值為 **Partial**。

如需 ABAC 的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 ABAC 授權定義許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。如要查看含有設定 ABAC 步驟的教學課程，請參閱《*IAM 使用者指南*》中的[使用屬性型存取控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

如需有關標記 OpenSearch Serverless 資源的詳細資訊，請參閱[標記 Amazon OpenSearch Serverless 集合](tag-collection.md)。

## 將暫時性憑證與 OpenSearch Serverless 搭配使用
<a name="security_iam_serverless-tempcreds"></a>

**支援臨時憑證：**是

臨時登入資料提供對 AWS 資源的短期存取，並在您使用聯合或切換角色時自動建立。 AWS 建議您動態產生臨時登入資料，而不是使用長期存取金鑰。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)與[可與 IAM 搭配運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## OpenSearch Serverless 的服務連結角色
<a name="security_iam_serverless-slr"></a>

**支援服務連結角色：**是

 服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。

如需有關建立或管理 OpenSearch Serverless 服務連結角色的詳細資訊，請參閱[使用服務連結角色建立 OpenSearch Serverless 集合](serverless-service-linked-roles.md)。

## 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他較不常見的政策類型。這些政策類型可設定較常見政策類型授予您的最大許可。
+ **服務控制政策 SCPs)** – SCPs是 JSON 政策，可指定 中組織或組織單位 (OU) 的最大許可 AWS Organizations。 AWS Organizations 是一種服務，用於分組和集中管理您企業擁有的多個 AWS 帳戶。若您啟用組織中的所有功能，您可以將服務控制政策 (SCP) 套用到任何或所有帳戶。SCP 會限制成員帳戶中實體的許可，包括每個 AWS 帳戶根使用者。如需 Organizations 和 SCP 的詳細資訊，請參閱 *AWS Organizations 使用者指南*中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** - RCP 是 JSON 政策，可用來設定您帳戶中資源的可用許可上限，採取這種方式就不需要更新附加至您所擁有的每個資源的 IAM 政策。RCP 會限制成員帳戶中資源的許可，並可能影響身分的有效許可，包括 AWS 帳戶根使用者，無論它們是否屬於您的組織。如需 Organizations 和 RCPs的詳細資訊，包括支援 RCPs AWS 的服務清單，請參閱*AWS Organizations 《 使用者指南*》中的[資源控制政策 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。

## OpenSearch Serverless 的身分型政策範例
<a name="security_iam_serverless_id-based-policy-examples"></a>

依預設，使用者和角色不具備建立或修改 OpenSearch Serverless 資源的許可。若要授予使用者對其所需資源執行動作的許可，IAM 管理員可以建立 IAM 政策。

如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

如需有關 Amazon OpenSearch Serverless 所定義之動作和資源類型的詳細資訊，包括每種資源類型的 ARN 格式，請參閱《服務授權參考》**中的 [Actions, resources, and condition keys for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonopensearchserverless.html) (適用於 Amazon OpenSearch Serverless 的動作、資源和條件索引鍵)。

**Topics**
+ [政策最佳實務](#security_iam_serverless-policy-best-practices)
+ [在主控台中使用 OpenSearch Serverless](#security_iam_serverless_id-based-policy-examples-console)
+ [管理 OpenSearch Serverless 集合](#security_iam_id-based-policy-examples-collection-admin)
+ [檢視 OpenSearch Serverless 集合](#security_iam_id-based-policy-examples-view-collections)
+ [使用 OpenSearch API 操作](#security_iam_id-based-policy-examples-data-plane)
+ [適用於 OpenSearch API 操作的 ABAC](#security_iam_id-based-policy-examples-data-plane-abac)

### 政策最佳實務
<a name="security_iam_serverless-policy-best-practices"></a>

身分型政策相當強大。他們可以判斷某個人員是否可以在您的帳戶中建立、存取或刪除 OpenSearch Serverless 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 OpenSearch Serverless 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，以進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

### 在主控台中使用 OpenSearch Serverless
<a name="security_iam_serverless_id-based-policy-examples-console"></a>

若要在 OpenSearch Service 主控台中存取 OpenSearch Serverless，您必須擁有一組最低許可。這些許可必須允許您列出和檢視 AWS 帳戶中 OpenSearch Serverless 資源的詳細資訊。如果您建立比最基本必要許可更嚴格的身分型政策，則對於具有該政策的實體 (例如 IAM 角色等) 而言，主控台就無法如預期運作。

對於僅呼叫 AWS CLI 或 AWS API 的使用者，您不需要允許最低主控台許可。反之，只需允許存取符合您嘗試執行之 API 作業的動作就可以了。

下列政策讓使用者可以在 OpenSearch Service 主控台中存取 OpenSearch Serverless：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Effect": "Allow",
            "Action": [
                "aoss:ListCollections",
                "aoss:BatchGetCollection",
                "aoss:ListAccessPolicies",
                "aoss:ListSecurityConfigs",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:ListVpcEndpoints",
                "aoss:GetAccessPolicy",
                "aoss:GetAccountSettings",
                "aoss:GetSecurityConfig",
                "aoss:GetSecurityPolicy"
            ]
        }
    ]
}
```

------

### 管理 OpenSearch Serverless 集合
<a name="security_iam_id-based-policy-examples-collection-admin"></a>

此政策是「集合管理員」政策的範例，讓使用者可以管理 Amazon OpenSearch Serverless 集合。使用者可以建立、檢視和刪除集合。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/*",
            "Action": [
                "aoss:CreateCollection",
                "aoss:DeleteCollection",
                "aoss:UpdateCollection"
            ],
            "Effect": "Allow"
        },
        {
            "Resource": "*",
            "Action": [
                "aoss:BatchGetCollection",
                "aoss:ListCollections",
                "aoss:CreateAccessPolicy",
                "aoss:CreateSecurityPolicy"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### 檢視 OpenSearch Serverless 集合
<a name="security_iam_id-based-policy-examples-view-collections"></a>

此範例政策讓使用者可以檢視其帳戶中所有 Amazon OpenSearch Serverless 集合的詳細資訊。使用者無法修改集合或任何關聯的安全政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Resource": "*",
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:ListCollections",
                "aoss:ListSecurityPolicies",
                "aoss:ListTagsForResource",
                "aoss:BatchGetCollection"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

### 使用 OpenSearch API 操作
<a name="security_iam_id-based-policy-examples-data-plane"></a>

資料平面 API 操作包含您在 OpenSearch Serverless 中使用的函數，以從服務衍生即時值。控制平面 API 操作包含您用來設定環境的函數。

若要從瀏覽器存取 Amazon OpenSearch Serverless 資料平面 APIs 和 OpenSearch Dashboards，您需要為集合資源新增兩個 IAM 許可。這些許可為 `aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`。

**注意**  
從 2023 年 5 月 10 日開始，OpenSearch Serverless 需要這兩個新的集合資源 IAM 許可。`aoss:APIAccessAll` 許可允許資料平面存取，而 `aoss:DashboardsAccessAll`許可允許來自瀏覽器的 OpenSearch Dashboards。未新增兩個新的 IAM 許可會導致 403 錯誤。

此範例政策允許使用者存取其帳戶中指定集合的資料平面 APIs，以及存取其帳戶中所有集合的 OpenSearch Dashboards。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
         {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        },
        {
            "Effect": "Allow",
            "Action": "aoss:DashboardsAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:dashboards/default"
        }
    ]
}
```

------

`aoss:APIAccessAll` 和 都會`aoss:DashboardsAccessAll`提供集合資源的完整 IAM 許可，而 Dashboards 許可也會提供 OpenSearch Dashboards 存取權。每個許可都獨立運作，因此 上的明確拒絕`aoss:APIAccessAll`不會封鎖對 資源的`aoss:DashboardsAccessAll`存取，包括開發工具。在 上拒絕也是如此`aoss:DashboardsAccessAll`。OpenSearch Serverless 支援下列全域條件金鑰：
+ `aws:CalledVia`
+ `aws:CalledViaAWSService`
+ `aws:CalledViaFirst`
+ `aws:CalledViaLast`
+ `aws:CurrentTime`
+ `aws:EpochTime`
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipallsAWSService`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:PrincipalType`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:ResourceAccount`
+ `aws:ResourceOrgID`
+ `aws:ResourceOrgPaths`
+ `aws:RequestedRegion`
+ `aws:ResourceTag`
+ `aws:SourceIp`
+ `aws:SourceVpce`
+ `aws:SourceVpc`
+ `aws:userid`
+ `aws:username`
+ `aws:VpcSourceIp`

以下是在委託人 IAM 政策`aws:SourceIp`的條件區塊中使用 進行資料平面呼叫的範例：

```
"Condition": {
    "IpAddress": {
         "aws:SourceIp": "203.0.113.0"
    }
}
```

以下是在委託人 IAM 政策`aws:SourceVpc`的條件區塊中使用 進行資料平面呼叫的範例：

```
"Condition": {
    "StringEquals": {
        "aws:SourceVpc": "vpc-0fdd2445d8EXAMPLE"
    }
}
```

此外，支援下列 OpenSearch Serverless 特定金鑰：
+ `aoss:CollectionId`
+ `aoss:collection`

以下是在委託人 IAM 政策`aoss:collection`的條件區塊中使用 進行資料平面呼叫的範例：

```
"Condition": {
    "StringLike": {
         "aoss:collection": "log-*"
    }
}
```

### 適用於 OpenSearch API 操作的 ABAC
<a name="security_iam_id-based-policy-examples-data-plane-abac"></a>

身分型政策可讓您使用標籤來控制對 Amazon OpenSearch Serverless 資料平面 APIs存取。下列政策是允許附加主體存取資料平面 APIs 的範例，如果集合具有 `team:devops`標籤：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "aoss:APIAccessAll",
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/team": "devops"
                }
            }
        }
    ]
}
```

------

如果集合具有 `environment:production`標籤，以下政策是拒絕連接主體存取資料平面 APIs 和儀表板存取的範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:APIAccessAll",
                "aoss:DashboardsAccessAll"
            ],
            "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id"
        }
    ]
}
```

------

Amazon OpenSearch Serverless 不支援資料平面 APIs 的 `RequestTag`和 `TagKeys`全域條件金鑰。

# Amazon OpenSearch Serverless 的 IAM Identity Center 支援
<a name="serverless-iam-identity-center"></a>

## Amazon OpenSearch Serverless 的 IAM Identity Center 支援
<a name="serverless-iam-identity-support"></a>

您可以使用 IAM Identity Center 主體 （使用者和群組） 透過 Amazon OpenSearch 應用程式存取 Amazon OpenSearch Serverless 資料。若要啟用 Amazon OpenSearch Serverless 的 IAM Identity Center 支援，您需要啟用 IAM Identity Center 的使用。若要進一步了解如何執行此操作，請參閱[什麼是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)

**注意**  
若要使用 IAM Identity Center 使用者或群組存取 Amazon OpenSearch Serverless 集合，您必須使用 OpenSearch UI （應用程式） 功能。不支援使用 IAM Identity Center 登入資料直接存取 OpenSearch Serverless Dashboards。如需詳細資訊，請參閱 [ OpenSearch 使用者介面入門](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/application.html)。

建立 IAM Identity Center 執行個體之後，客戶帳戶管理員需要為 Amazon OpenSearch Serverless 服務建立 IAM Identity Center 應用程式。這可以透過呼叫 [CreateSecurityConfig 來完成](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html)。客戶帳戶管理員可以指定要用於授權請求的屬性。使用的預設屬性為 `UserId`和 `GroupId.`

Amazon OpenSearch Serverless 的 IAM Identity Center 整合使用以下 AWS IAM Identity Center (IAM) 許可：
+ `aoss:CreateSecurityConfig` – 建立 IAM Identity Center 供應商
+ `aoss:ListSecurityConfig` – 列出目前帳戶中的所有 IAM Identity Center 供應商。
+ `aoss:GetSecurityConfig` – 檢視 IAM Identity Center 提供者資訊。
+ `aoss:UpdateSecurityConfig` – 修改指定的 IAM Identity Center 組態
+ `aoss:DeleteSecurityConfig` – 刪除 IAM Identity Centerprovider。

下列身分型存取政策可用於管理所有 IAM Identity Center 組態：

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

****  

```
{
"Version": "2012-10-17",
    "Statement": [
        {
"Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
`Resource` 元素必須是萬用字元。

## 建立 IAM Identity Center 提供者 （主控台）
<a name="serverless-iam-console"></a>

您可以建立 IAM Identity Center 提供者，以使用 OpenSearch 應用程式啟用身分驗證。若要啟用 OpenSearch Dashboards 的 IAM Identity Center 身分驗證，請執行下列步驟：

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

1. 在左側導覽面板上，展開**無伺服器**並選擇**身分驗證**。

1. 選擇** IAM Identity Center 身分驗證**。

1. 選取**編輯**

1. 勾選使用 IAM Identity Center 驗證旁的方塊。

1. 從下拉式選單中選取**使用者和群組**屬性索引鍵。使用者屬性將用於根據 `UserName`、 `UserId`和 授權使用者`Email`。群組屬性將用於根據 `GroupName`和 對使用者進行身分驗證`GroupId`。

1. 選取 **IAM Identity Center** 執行個體。

1. 選取**儲存**

## 建立 IAM Identity Center 提供者 (AWS CLI)
<a name="serverless-iam-identity-center-cli"></a>

若要使用 AWS Command Line Interface (AWS CLI) 建立 IAM Identity Center 提供者，請使用下列命令：

```
aws opensearchserverless create-security-config \
--region us-east-2 \
--name "iamidentitycenter-config" \
--description "description" \
--type "iamidentitycenter" \
--iam-identity-center-options '{
    "instanceArn": "arn:aws:sso:::instance/ssoins-99199c99e99ee999",
    "userAttribute": "UserName",                  
    "groupAttribute": "GroupId"
}'
```

啟用 IAM Identity Center 之後，客戶只能修改**使用者和群組**屬性。

```
aws opensearchserverless update-security-config \
--region us-east-1 \
--id <id_from_list_security_configs> \
--config-version <config_version_from_get_security_config> \
--iam-identity-center-options-updates '{
    "userAttribute": "UserId",
    "groupAttribute": "GroupId"
}'
```

若要使用 檢視 IAM Identity Center 供應商 AWS Command Line Interface，請使用下列命令：

```
aws opensearchserverless list-security-configs --type iamidentitycenter
```

## 刪除 IAM Identity Center 供應商
<a name="serverless-iam-identity-center-deleting"></a>

 IAM Identity Center 提供兩個提供者執行個體，一個用於您的組織帳戶，另一個用於您的成員帳戶。如果您需要變更 IAM Identity Center 執行個體，則需要透過 `DeleteSecurityConfig` API 刪除安全組態，並使用新的 IAM Identity Center 執行個體建立新的安全組態。下列命令可用來刪除 IAM Identity Center 提供者：

```
aws opensearchserverless delete-security-config \
--region us-east-1 \
--id <id_from_list_security_configs>
```

## 授予 IAM Identity Center 對集合資料的存取權
<a name="serverless-iam-identity-center-collection-data"></a>

啟用 IAM Identity Center 提供者後，您可以更新集合資料存取政策，以包含 IAM Identity Center 主體。IAM Identity Center 主體需要以下列格式更新：

```
[
   {
"Rules":[
       ...  
      ],
      "Principal":[
         "iamidentitycenter/<iamidentitycenter-instance-id>/user/<UserName>",
         "iamidentitycenter/<iamidentitycenter-instance-id>/group/<GroupId>"
      ]
   }
]
```

**注意**  
Amazon OpenSearch Serverless 為所有客戶集合僅支援一個 IAM Identity Center 執行個體，且單一使用者最多可支援 100 個群組。如果您嘗試使用超過允許的執行個體數量，您會遇到與資料存取政策授權處理不一致的情況，並收到`403`錯誤訊息。

您可以授予對集合、索引或兩者的存取權。如果您希望不同的使用者具有不同的權限，則需要建立多個規則。如需可用許可的清單，請參閱 [Amazon OpenSearch Service 中的 Identity and Access Management](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html)。如需如何格式化存取政策的資訊，請參閱[授予 SAML 身分對集合資料的存取權。 ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html#serverless-saml-policies)

# Amazon OpenSearch Serverless 中的加密
<a name="serverless-encryption"></a>

## 靜態加密
<a name="serverless-encryption-at-rest"></a>

您建立的每個 Amazon OpenSearch Serverless 集合的保護都是使用靜態資料加密來實現，靜態資料加密是一種安全功能，可協助防止您的資料遭到未經授權存取。靜態加密使用 AWS Key Management Service (AWS KMS) 來存放和管理加密金鑰。其會使用 256 位元金鑰的進階加密標準演算法 (AES-256) 來執行加密。

**Topics**
+ [加密政策](#serverless-encryption-policies)
+ [考量事項](#serverless-encryption-considerations)
+ [必要許可](#serverless-encryption-permissions)
+ [客戶自管金鑰的金鑰政策](#serverless-customer-cmk-policy)
+ [OpenSearch Serverless 如何在 中使用授予 AWS KMS](#serverless-encryption-grants)
+ [建立加密政策 (主控台)](#serverless-encryption-console)
+ [建立加密政策 (AWS CLI)](#serverless-encryption-cli)
+ [檢視加密政策](#serverless-encryption-list)
+ [更新加密政策](#serverless-encryption-update)
+ [刪除加密政策](#serverless-encryption-delete)

### 加密政策
<a name="serverless-encryption-policies"></a>

您可以使用加密政策，透過自動將加密金鑰指派給符合特定名稱或模式的新建集合，大規模管理許多集合。

建立加密政策時，您可以指定*字首*，這是以萬用字元為基礎的比對規則 (例如 `MyCollection*`)，或輸入單一集合名稱。然後，當您建立符合該名稱或字首模式的集合時，系統會將該政策和對應的 KMS 金鑰自動指派給該集合。

建立集合時，您可以透過兩種方式指定 AWS KMS 金鑰：透過安全政策或直接在`CreateCollection`請求中。如果您在`CreateCollection`請求中提供 AWS KMS 金鑰，則優先於任何相符的安全政策。透過此方法，您可以在需要時靈活地覆寫特定集合的政策型加密設定。

![\[Encryption policy creation process with rules and collection matching to KMS key.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-encryption.png)


加密政策包含下列元素：
+ `Rules`：一個或多個集合比對規則，每個規則都包含下列子元素：
  + `ResourceType`：目前唯一的選項是「集合」。加密政策僅套用至集合資源。
  + `Resource`：政策套用至的一個或多個集合名稱或模式 (格式為 `collection/<collection name|pattern>`)。
+ `AWSOwnedKey`：是否要使用 AWS 擁有的金鑰。
+ `KmsARN`：如果您將 `AWSOwnedKey` 設定為 false，請指定用於加密關聯集合之 KMS 金鑰的 Amazon Resource Name (ARN)。如果您包含此參數，OpenSearch Serverless 會忽略 `AWSOwnedKey` 參數。

下列範例政策會將客戶受管金鑰指派給任何名為 `autopartsinventory` 的未來集合，以及以「銷售」一詞開頭的集合：

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

即使政策符合集合名稱，如果資源模式包含萬用字元 (\$1)，您也可以選擇在集合建立期間覆寫此自動指派。如果您選擇覆寫自動金鑰指派，OpenSearch Serverless 會為您建立名為 **auto-<*collection-name*>** 的加密政策，並將其連接到集合。該政策最初只適用於單一集合，但您可以加以修改以包含其他集合。

如果您將政策規則修改為不再符合某個集合，則系統不會將關聯的 KMS 金鑰從該集合取消指派。集合一律會使用其初始加密金鑰保持加密的狀態。如果您想要變更集合的加密金鑰，您必須重新建立集合。

如果來自多個政策的規則符合集合，則會使用更明確的規則。例如，如果某個政策包含的規則適用於 `collection/log*`，而另一個適用於 `collection/logSpecial`，則會使用第二個政策的加密金鑰，因為該金鑰更加明確。

如果某個政策中已有名稱或字首，則無法在另一個政策中使用該名稱或字首。如果您嘗試在不同的加密政策中設定相同的資源模式，則 OpenSearch Serverless 會顯示錯誤。

### 考量事項
<a name="serverless-encryption-considerations"></a>

設定集合的加密時應考慮以下事項：
+ 所有無伺服器集合都*需要*靜態加密。
+ 您可以選擇使用客戶受管金鑰或 AWS 擁有的金鑰。如果您選擇客戶受管金鑰，建議您啟用[自動金鑰輪換](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。
+ 建立集合之後，便無法變更集合的加密金鑰。第一次設定集合時，請仔細選擇要使用的 AWS KMS 集合。
+ 集合只能符合單一加密政策。
+ 具有唯一 KMS 金鑰的集合無法與其他集合共用 OpenSearch 運算單元 (OCU)。每個具有唯一金鑰的集合都需要專屬的 4 個 OCU。
+ 如果您更新加密政策中的 KMS 金鑰，則變更不會影響已指派 KMS 金鑰的現有相符集合。
+ OpenSearch Serverless 不會明確檢查客戶受管金鑰的使用者許可。如果使用者有權透過資料存取政策存取集合，他們就能夠擷取和查詢透過關聯金鑰加密的資料。

### 必要許可
<a name="serverless-encryption-permissions"></a>

OpenSearch Serverless 的靜態加密會使用下列 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件，將使用者限制在特定集合內。
+ `aoss:CreateSecurityPolicy`：建立加密政策。
+ `aoss:ListSecurityPolicies`：列出連接的所有加密政策和集合。
+ `aoss:GetSecurityPolicy`：查看特定加密政策的詳細資訊。
+ `aoss:UpdateSecurityPolicy`：修改加密政策。
+ `aoss:DeleteSecurityPolicy`：刪除加密政策。

下列身分型存取政策範例提供使用者透過資源模式 `collection/application-logs` 管理加密政策所需的最低許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "aoss:CreateSecurityPolicy",
            "aoss:UpdateSecurityPolicy",
            "aoss:DeleteSecurityPolicy",
            "aoss:GetSecurityPolicy"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aoss:collection":"application-logs"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "aoss:ListSecurityPolicies"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### 客戶自管金鑰的金鑰政策
<a name="serverless-customer-cmk-policy"></a>

當您選取[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)來保護集合時，OpenSearch Serverless 會取得許可，以代表進行選取的主體使用 KMS 金鑰。該主體 (使用者或角色) 必須具備 OpenSearch Serverless 所需的 KMS 金鑰許可。您可以在[金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)或 [IAM 政策](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)中提供這些許可。

OpenSearch Serverless 會在維護操作期間進行 `GenerateDataKey` 和 `Decrypt` KMS API 呼叫，例如自動擴展和軟體更新。您可能會在一般流量模式之外看到這些呼叫。這些呼叫是正常服務操作的一部分，不表示作用中的使用者流量。

當 OpenSearch Serverless 無法存取加密靜態資料的 KMS 金鑰`KMSKeyInaccessibleException`時，會擲回 。當您停用或刪除 KMS 金鑰，或撤銷允許 OpenSearch Serverless 使用金鑰的授予時，就會發生這種情況。

至少，OpenSearch Serverless 需要具備客戶受管金鑰的下列許可：
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

例如：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Action": "kms:DescribeKey",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            }
        }
    },
    {
        "Action": "kms:CreateGrant",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Dale"
        },
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "aoss.us-east-1.amazonaws.com"
            },
            "ForAllValues:StringEquals": {
                "kms:GrantOperations": [
                    "Decrypt",
                    "GenerateDataKey"
                ]
            },
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }
  ]
}
```

------

OpenSearch Serverless 會使用 [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 許可建立授予。

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

### OpenSearch Serverless 如何在 中使用授予 AWS KMS
<a name="serverless-encryption-grants"></a>

OpenSearch Serverless 需要[授予](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)才能使用客戶受管金鑰。

當您使用新金鑰在帳戶中建立加密政策時，OpenSearch Serverless 會透過傳送 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 請求至 來代表您建立授予 AWS KMS。中的授予 AWS KMS 用於授予 OpenSearch Serverless 存取客戶帳戶中 KMS 金鑰的權限。

OpenSearch Serverless 需要授予，才能在下列內部操作中使用客戶受管金鑰：
+ 將 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 請求傳送至 AWS KMS ，以驗證提供的對稱客戶受管金鑰 ID 是否有效。
+ 將 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 請求傳送至 KMS 金鑰，以建立加密物件所用的資料金鑰。
+ 將 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求傳送至 AWS KMS 以解密加密的資料金鑰，以便用來加密您的資料。

您可以隨時撤銷授予的存取權，或移除服務對客戶受管金鑰的存取權。如果您這麼做，OpenSearch Serverless 將無法存取由客戶受管金鑰加密的任何資料，這會影響與該資料有關的所有操作，進而導致非同步工作流程中的 `AccessDeniedException` 錯誤和失敗。

當指定的客戶受管金鑰未與任何安全政策或集合相關聯時，OpenSearch Serverless 會淘汰非同步工作流程中的授予。

### 建立加密政策 (主控台)
<a name="serverless-encryption-console"></a>

在加密政策中，您可以指定政策套用至的 KMS 金鑰和一系列集合模式。當您建立集合時，系統會將對應的 KMS 金鑰指派給符合政策中定義模式之一的任何新集合。建議您先建立加密政策，*然後*再開始建立集合。

**建立 OpenSearch Serverless 加密政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽面板中，展開 **Serverless** (無伺服器)，然後選擇 **Encryption policies** (加密政策)。

1. 選擇 **Create encryption policy** (建立加密政策)。

1. 提供政策的名稱和描述。

1. 在 **Resources** (資源) 下，輸入此加密政策的一個或多個資源模式。目前 AWS 帳戶 和區域中符合其中一種模式的任何新建集合都會自動指派給此政策。例如，如果您輸入 `ApplicationLogs` (不含萬用字元)，然後再使用該名稱建立集合，則會將該政策和對應的 KMS 金鑰指派給該集合。

   您也可以提供字首，例如 `Logs*`，此字首會將政策指派給名稱以 `Logs` 開頭的任何新集合。透過使用萬用字元，您可以大規模管理多個集合的加密設定。

1. 在 **Encryption** (加密) 下，選擇要使用的 KMS 金鑰。

1. 選擇**建立**。

#### 下一步：建立集合
<a name="serverless-encryption-next"></a>

設定一個或多個加密政策後，您就可以開始建立與這些政策中定義之規則相符的集合。如需說明，請參閱[建立集合](serverless-create.md)。

在集合建立的 **Encryptions** (加密) 步驟中，OpenSearch Serverless 會通知您所輸入的名稱與加密政策中定義的模式相符，並自動將對應的 KMS 金鑰指派給該集合。如果資源模式包含萬用字元 (\$1)，您可以選擇覆寫相符項目並選取自己的金鑰。

### 建立加密政策 (AWS CLI)
<a name="serverless-encryption-cli"></a>

若要使用 OpenSearch Serverless API 操作建立加密政策，您需指定資源模式和 JSON 格式的加密金鑰。[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html) 請求同時接受內嵌政策和 .json 檔案。

加密政策採用下列格式。此範例 `my-policy.json` 檔案符合任何名為 `autopartsinventory` 的未來集合，以及名稱以 `sales` 開頭的任何集合。

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":false,
   "KmsARN":"arn:aws:kms:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36"
}
```

若要使用服務擁有的金鑰，請將 `AWSOwnedKey` 設定為 `true`：

```
{
   "Rules":[
      {
         "ResourceType":"collection",
         "Resource":[
            "collection/autopartsinventory",
            "collection/sales*"
         ]
      }
   ],
   "AWSOwnedKey":true
}
```

下列請求會建立加密政策：

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy file://my-policy.json
```

然後，使用 [CreateCollection](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateCollection.html) API 操作建立一個或多個符合其中一個資源模式的集合。

### 檢視加密政策
<a name="serverless-encryption-list"></a>

在建立集合之前，您可能想要預覽帳戶中現有的加密政策，以查看哪個政策的資源模式與集合名稱相符。下列 [ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html) 請求會列出您帳戶中的所有加密政策：

```
aws opensearchserverless list-security-policies --type encryption
```

該請求會傳回所有已設定加密政策的相關資訊。使用 `policy` 元素的內容以檢視政策中定義的模式規則：

```
{
   "securityPolicyDetails": [ 
      { 
         "createdDate": 1663693217826,
         "description": "Sample encryption policy",
         "lastModifiedDate": 1663693217826,
         "name": "my-policy",
         "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}",
         "policyVersion": "MTY2MzY5MzIxNzgyNl8x",
         "type": "encryption"
      }
   ]
}
```

若要檢視有關特定政策 (包括 KMS 金鑰) 的詳細資訊，請使用 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 命令。

### 更新加密政策
<a name="serverless-encryption-update"></a>

如果您更新加密政策中的 KMS 金鑰，則變更只會套用至與設定的名稱或模式相符的新建集合。這不會影響已指派 KMS 金鑰的現有集合。

這也適用於政策比對規則。如果您新增、修改或刪除規則，則變更僅適用於新建集合。如果您修改政策的規則，使其不再符合集合的名稱，則現有集合不會遺失其指派的 KMS 金鑰。

若要更新 OpenSearch Serverless 主控台中的加密政策，請選擇 **Encryption policies** (加密政策)，選取要修改的政策，然後選擇 **Edit** (編輯)。進行變更，然後選擇 **Save** (儲存)。

若要使用 OpenSearch Serverless API 更新加密政策，請使用 [UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) 操作。下列請求會使用新的政策 JSON 文件更新加密政策：

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type encryption \
    --policy-version 2 \
    --policy file://my-new-policy.json
```

### 刪除加密政策
<a name="serverless-encryption-delete"></a>

當您刪除加密政策時，目前使用政策中定義之 KMS 金鑰的任何集合都不會受到影響。若要刪除 OpenSearch Serverless 主控台中的政策，請選取該政策，然後選擇 **Delete** (刪除)。

您也可以使用 [DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html) 操作：

```
aws opensearchserverless delete-security-policy --name my-policy --type encryption
```

## 傳輸中加密
<a name="serverless-encryption-in-transit"></a>

在 OpenSearch Serverless 中，集合中的所有路徑都會使用 Transport Layer Security 1.2 (TLS) 搭配業界標準 AES-256 密碼在傳輸中加密。也可透過 TLS 1.2 存取 Opensearch 的所有 APIs 和儀表板。TLS 是一組業界標準的密碼編譯通訊協定，用於加密透過網路交換的資訊。

# Amazon OpenSearch Serverless 的網路存取
<a name="serverless-network"></a>

Amazon OpenSearch Serverless 集合的網路設定會判斷該集合是否可透過網際網路從公有網路存取，或是否必須私下存取。

私有存取可以套用到下列其中一項或兩項：
+ OpenSearch Serverless 受管 VPC 端點
+ 支援， AWS 服務 例如 Amazon Bedrock

您可以針對集合的 *OpenSearch* 端點及其對應的 *OpenSearch Dashboards* 端點個別設定網路存取。

網路存取是允許從不同來源網路存取的隔離機制。例如，如果集合的 OpenSearch Dashboards 端點可公開存取，但 OpenSearch API 端點無法公開存取，則使用者只能在從公有網路連線時透過 Dashboards 存取集合資料。如果使用者嘗試直接從公用網路呼叫 OpenSearch API，就會遭到封鎖。網路設定可用於來源到資源類型的這類排列。Amazon OpenSearch Serverless 同時支援 IPv4 和 IPv6 連線。

**Topics**
+ [網路政策](#serverless-network-policies)
+ [考量事項](#serverless-network-considerations)
+ [設定網路政策所需的許可](#serverless-network-permissions)
+ [政策優先順序](#serverless-network-precedence)
+ [建立網路政策 (主控台)](#serverless-network-console)
+ [建立網路政策 (AWS CLI)](#serverless-network-cli)
+ [檢視網路政策](#serverless-network-list)
+ [更新網路政策](#serverless-network-update)
+ [刪除網路政策](#serverless-network-delete)

## 網路政策
<a name="serverless-network-policies"></a>

網路政策讓您可以自動將網路存取設定指派給符合政策中定義之規則的集合，以便大規模管理許多集合。

在網路政策中，您可以指定一系列*規則*。這些規則會定義集合端點和 OpenSearch Dashboards 端點的存取許可。每個規則都包含存取類型 （公有或私有） 和資源類型 （集合和/或 OpenSearch Dashboards 端點）。對於每個資源類型 (`collection` 和 `dashboard`)，您可以指定一系列規則來定義政策套用至的集合。

在此範例政策中，第一個規則會指定 VPC 端點對以 一詞開頭之所有集合的集合端點和 Dashboards 端點的存取`marketing*`。它也會指定 Amazon Bedrock 存取。

**注意**  
對 Amazon Bedrock AWS 服務 等 的私有存取*僅適用於*集合的 OpenSearch 端點，不適用於 OpenSearch Dashboards 端點。即使 `ResourceType`是 `dashboard`，也 AWS 服務 無法授予 OpenSearch Dashboards 的存取權。

第二個規則會指定對 `finance` 集合的公用存取權，但僅限於集合端點 (無 Dashboards 存取權)。

```
[
   {
      "Description":"Marketing access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/marketing*"
            ]
         },
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/marketing*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   },
   {
      "Description":"Sales access",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

此政策僅針對以「財務」開頭的集合，提供對 OpenSearch Dashboards 的公用存取權。任何直接存取 OpenSearch API 的嘗試都會失敗。

```
[
  {
    "Description": "Dashboards access",
    "Rules": [
      {
        "ResourceType": "dashboard",
        "Resource": [
          "collection/finance*"
        ]
      }
    ],
    "AllowFromPublic": true
  }
]
```

網路政策可套用至現有集合以及未來的集合。例如，您可以建立集合，然後使用符合集合名稱的規則建立網路政策。您不需要建立網路政策，就能建立集合。

## 考量事項
<a name="serverless-network-considerations"></a>

為集合設定網路存取時，請考慮以下項目：
+ 如果您打算設定集合的 VPC 端點存取，您必須先建立至少一個 [OpenSearch Serverless 受管 VPC 端點](serverless-vpc.md)。
+ 對 的私有存取 AWS 服務 僅適用於集合的 OpenSearch 端點，不適用於 OpenSearch Dashboards 端點。即使 `ResourceType`是 `dashboard`，也 AWS 服務 無法授予 OpenSearch Dashboards 的存取權。
+ 如果集合可從公有網路存取，也可以從所有 OpenSearch Serverless 受管 VPC 端點和所有端點存取 AWS 服務。
+ 多個網路政策可套用至單一集合。如需詳細資訊，請參閱[政策優先順序](#serverless-network-precedence)。

## 設定網路政策所需的許可
<a name="serverless-network-permissions"></a>

OpenSearch Serverless 的網路存取使用下列 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件，將使用者限制在與特定集合關聯的網路政策內。
+ `aoss:CreateSecurityPolicy`：建立網路存取政策。
+ `aoss:ListSecurityPolicies`：列出目前帳戶中的所有網路政策。
+ `aoss:GetSecurityPolicy`：檢視網路存取政策規格。
+ `aoss:UpdateSecurityPolicy`：修改指定的網路存取政策，並變更 VPC ID 或公用存取名稱。
+ `aoss:DeleteSecurityPolicy`：刪除網路存取政策 (在將該政策從所有集合中分離之後)。

下列身分型存取政策讓使用者可以檢視所有網路政策，以及更新包含資源模式 `collection/application-logs` 的政策：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aoss:UpdateSecurityPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": "application-logs"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:ListSecurityPolicies",
                "aoss:GetSecurityPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
此外，OpenSearch Serverless 需要集合資源的 `aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`許可。如需詳細資訊，請參閱[使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 政策優先順序
<a name="serverless-network-precedence"></a>

在某些情況下，網路政策規則的重疊情形可能會在政策內部或跨政策發生。發生這種情況時，指定公有存取的規則會覆寫規則，為*這兩個*規則通用的任何集合指定私有存取。

例如，在下列政策中，這兩個規則都會將網路存取指派給 `finance` 集合，但其中一個規則指定的是 VPC 存取權，而另一個規則指定的是公用存取權。在此情況下，公用存取權僅會覆寫*財務集合的* VPC 存取權 (因為其同時存在於兩個規則中)，因此您可從公用網路存取該財務集合。銷售集合將具有來自指定端點的 VPC 存取權。

```
[
   {
      "Description":"Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/sales",
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ]
   },
   {
      "Description":"Rule 2",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

如果來自不同規則的多個 VPC 端點套用至某個集合，則這些為附加規則，且可從所有指定端點存取該集合。如果您將 `AllowFromPublic` 設定為 `true`，但也提供一或多個 `SourceVPCEs` 或 `SourceServices`，則 OpenSearch Serverless 會忽略 VPC 端點和服務識別符，並且相關聯的集合將具有公有存取權。

## 建立網路政策 (主控台)
<a name="serverless-network-console"></a>

網路政策可套用至現有集合以及未來的集合。建議您先建立網路政策，然後再開始建立集合。

**建立 OpenSearch Serverless 網路政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽面板中，展開 **Serverless** (無伺服器)，然後選擇 **Network policies** (網路政策)。

1. 選擇 **Create network policy** (建立網路政策)。

1. 提供政策的名稱和描述。

1. 提供一個或多個*規則*。這些規則會定義 OpenSearch Serverless 集合及其 OpenSearch Dashboards 端點的存取許可。

   每個規則都包含下列元素：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-network.html)

   對於您選取的每個資源類型，您可以選擇要將政策設定套用至其中的現有集合，和/或建立一個或多個資源模式。資源模式包含字首和萬用字元 (\$1)，並定義政策設定將套用至的集合。

   例如，如果您包含名為 `Marketing*` 的模式，則名稱以「行銷」開頭的任何新的或現有集合都會將此政策中的網路設定自動套用至其中。單一萬用字元 (`*`) 會將政策套用至所有目前和未來的集合。

   此外，您可以指定*未來*集合的名稱，而不使用萬用字元，例如 `Finance`。OpenSearch Serverless 會將政策設定套用至任何具有相同名稱的新建集合。

1. 如果您對政策組態感到滿意，請選擇 **Create** (建立)。

## 建立網路政策 (AWS CLI)
<a name="serverless-network-cli"></a>

若要使用 OpenSearch Serverless API 操作建立網路政策，您需指定 JSON 格式的規則。[CreateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityPolicy.html) 請求同時接受內嵌政策和 .json 檔案。所有集合和模式採用的格式必須為 `collection/<collection name|pattern>`。

**注意**  
資源類型 `dashboards` 僅允許對 OpenSearch Dashboards 的許可，但若要讓 OpenSearch Dashboards 能夠正常運作，您還必須允許來自相同來源的集合存取權。如需範例，請參閱以下第二個政策。

若要指定私有存取，請包含下列其中一個或兩個元素：
+ `SourceVPCEs` – 指定一或多個 OpenSearch Serverless 受管 VPC 端點。
+ `SourceServices` – 指定一個或多個支援的識別符 AWS 服務。目前支援下列服務識別符：
  + `bedrock.amazonaws.com` – Amazon Bedrock

下列範例網路政策提供對 VPC 端點和 Amazon Bedrock 的私有存取，僅針對字首為 的集合收集端點`log*`。經過驗證的使用者無法登入 OpenSearch Dashboards；他們只能以程式設計方式存取集合端點。

```
[
   {
      "Description":"Private access for log collections",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/log*"
            ]
         }
      ],
      "AllowFromPublic":false,
      "SourceVPCEs":[
         "vpce-050f79086ee71ac05"
      ],
      "SourceServices":[
         "bedrock.amazonaws.com"
      ],
   }
]
```

下列政策會針對名為 `finance` 的單一集合，提供對 OpenSearch 端點*和* OpenSearch Dashboards 的公用存取權。如果該集合不存在，建立集合時，會將網路設定套用至該集合。

```
[
   {
      "Description":"Public access for finance collection",
      "Rules":[
         {
            "ResourceType":"dashboard",
            "Resource":[
               "collection/finance"
            ]
         },
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/finance"
            ]
         }
      ],
      "AllowFromPublic":true
   }
]
```

下列請求會建立上述網路政策：

```
aws opensearchserverless create-security-policy \
    --name sales-inventory \
    --type network \
    --policy "[{\"Description\":\"Public access for finance collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/finance\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/finance\"]}],\"AllowFromPublic\":true}]"
```

若要在 JSON 檔案中提供政策，請使用 `--policy file://my-policy.json` 格式

## 檢視網路政策
<a name="serverless-network-list"></a>

在建立集合之前，您可能想要預覽帳戶中的現有網路政策，以查看哪個政策的資源模式與集合名稱相符。下列 [ListSecurityPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityPolicies.html) 請求會列出您帳戶中的所有網路政策：

```
aws opensearchserverless list-security-policies --type network
```

此請求會傳回所有已設定網路政策的相關資訊。若要檢視一個特定政策中定義的模式規則，請在回應中的 `securityPolicySummaries`元素內容中找到政策資訊。請注意此政策`type`的 `name`和 ，並在 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 請求中使用這些屬性來接收包含下列政策詳細資訊的回應：

```
{
    "securityPolicyDetail": [
        {
            "type": "network",
            "name": "my-policy",
            "policyVersion": "MTY2MzY5MTY1MDA3Ml8x",
            "policy": "[{\"Description\":\"My network policy rule\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection/*\"]}],\"AllowFromPublic\":true}]",
            "createdDate": 1663691650072,
            "lastModifiedDate": 1663691650072
        }
    ]
}
```

若要檢視特定政策的相關詳細資訊，請使用 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 命令。

## 更新網路政策
<a name="serverless-network-update"></a>

當您修改網路的 VPC 端點或公用存取名稱時，所有關聯的集合都會受到影響。若要更新 OpenSearch Serverless 主控台中的網路政策，請展開 **Network policies** (網路政策)，選取要修改的政策，然後選擇 **Edit** (編輯)。進行變更，然後選擇 **Save** (儲存)。

若要使用 OpenSearch Serverless API 更新網路政策，請使用 [UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) 命令。您必須在請求中包含政策版本。您可以使用 `ListSecurityPolicies` 或 `GetSecurityPolicy` 命令擷取政策版本。將最新的政策版本納入其中，可確保您不會意外覆寫其他人所做的變更。

下列請求會使用新的政策 JSON 文件更新網路政策：

```
aws opensearchserverless update-security-policy \
    --name sales-inventory \
    --type network \
    --policy-version MTY2MzY5MTY1MDA3Ml8x \
    --policy file://my-new-policy.json
```

## 刪除網路政策
<a name="serverless-network-delete"></a>

您必須將網路政策從所有集合分離，才能將其刪除。若要刪除 OpenSearch Serverless 主控台中的政策，請選取該政策，然後選擇 **Delete** (刪除)。

您也可以使用 [DeleteSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityPolicy.html) 命令：

```
aws opensearchserverless delete-security-policy --name my-policy --type network
```

# Amazon OpenSearch Serverless 中的 FIPS 合規
<a name="fips-compliance-opensearch-serverless"></a>

Amazon OpenSearch Serverless 支援聯邦資訊處理標準 (FIPS) 140-2，這是美國和加拿大政府標準，可指定保護敏感資訊之密碼編譯模組的安全需求。當您使用 OpenSearch Serverless 連線至已啟用 FIPS 的端點時，密碼編譯操作會使用 FIPS 驗證的密碼編譯程式庫進行。

OpenSearch Serverless FIPS 端點可在支援 FIPS AWS 區域 的 中使用。這些端點使用 TLS 1.2 或更新版本，以及 FIPS 驗證的密碼編譯演算法進行所有通訊。如需詳細資訊，請參閱*AWS 《 驗證存取使用者指南*》中的 [FIPS 合規](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)。

**Topics**
+ [搭配 OpenSearch Serverless 使用 FIPS 端點](#using-fips-endpoints-opensearch-serverless)
+ [使用具有 AWS SDKs FIPS 端點](#using-fips-endpoints-aws-sdks)
+ [設定 VPC 端點的安全群組](#configuring-security-groups-vpc-endpoints)
+ [使用 FIPS VPC 端點](#using-fips-vpc-endpoint)
+ [驗證 FIPS 合規](#verifying-fips-compliance)
+ [解決私有託管區域中的 FIPS 端點連線問題](serverless-fips-endpoint-issues.md)

## 搭配 OpenSearch Serverless 使用 FIPS 端點
<a name="using-fips-endpoints-opensearch-serverless"></a>

在支援 FIPS AWS 區域 的情況下，OpenSearch Serverless 集合可透過標準和 FIPS 相容端點存取。如需詳細資訊，請參閱*AWS 《 驗證存取使用者指南*》中的 [FIPS 合規](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)。

在下列範例中，將 *collection\$1id* 和 取代*AWS 區域*為您的集合 ID 及其 AWS 區域。
+ **標準端點** – **https://*collection\$1id*.*AWS 區域*.aoss.amazonaws.com**。
+ **FIPS 相容端點** – **https://*collection\$1id*.*AWS 區域*.aoss-fips.amazonaws.com**。

同樣地，OpenSearch Dashboards 可透過標準和 FIPS 相容端點存取：
+ **標準儀表板端點** – **https://*collection\$1id*.*AWS 區域*.aoss.amazonaws.com/\$1dashboards**。
+ **符合 FIPS 標準的儀表板端點** – **https://*collection\$1id*.*AWS 區域*.aoss-fips.amazonaws.com/\$1dashboards**。

**注意**  
在啟用 FIPS 的區域中，標準和 FIPS 相容的端點都提供 FIPS 相容的密碼編譯。FIPS 特定的端點可協助您滿足合規要求，這些要求特別強制在名稱中使用具有 **FIPS** 的端點。

## 使用具有 AWS SDKs FIPS 端點
<a name="using-fips-endpoints-aws-sdks"></a>

使用 AWS SDKs時，您可以在建立用戶端時指定 FIPS 端點。在下列範例中，將 *collection\$1id* 和 取代*AWS 區域*為您的集合 ID 及其 AWS 區域。

```
# Python SDK example
from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth
import boto3
host = '"https://collection_id.AWS 區域.aoss-fips.amazonaws.com"
region = 'us-west-2'
service = 'aoss'
credentials = boto3.Session().get_credentials()
auth = AWSV4SignerAuth(credentials, region, service)
client = OpenSearch(
    hosts = [{'host': host, 'port': 443}],
    http_auth = auth,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection,
    pool_maxsize = 20
)
```

## 設定 VPC 端點的安全群組
<a name="configuring-security-groups-vpc-endpoints"></a>

為了確保與 FIPS 相容的 Amazon VPC (VPC) 端點進行適當通訊，請建立或修改安全群組，以允許來自您 VPC 中需要存取 OpenSearch Serverless 資源的傳入 HTTPS 流量 (TCP 連接埠 443)。然後在建立期間或在建立之後修改端點，將此安全群組與您的 VPC 端點建立關聯。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》的[建立安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。

## 使用 FIPS VPC 端點
<a name="using-fips-vpc-endpoint"></a>

建立 FIPS 相容 VPC 端點後，您可以使用它從 VPC 中的資源存取 OpenSearch Serverless。若要使用 API 操作的端點，請將 SDK 設定為使用區域 FIPS 端點，如 [搭配 OpenSearch Serverless 使用 FIPS 端點](#using-fips-endpoints-opensearch-serverless)一節中所述。對於 OpenSearch Dashboards 存取，請使用集合特定的 Dashboards URL，從 VPC 內存取時，會自動透過 FIPS 相容 VPC 端點路由。如需詳細資訊，請參閱[搭配使用 OpenSearch Dashboards 與 Amazon OpenSearch Service](dashboards.md)。

## 驗證 FIPS 合規
<a name="verifying-fips-compliance"></a>

若要驗證您對 OpenSearch Serverless 的連線是否使用 FIPS 相容密碼編譯，請使用 AWS CloudTrail 來監控對 OpenSearch Serverless 發出的 API 呼叫。檢查 CloudTrail 日誌中的 `eventSource` 欄位是否顯示 API `aoss-fips.amazonaws.com` 呼叫。

對於 OpenSearch Dashboards 存取，您可以使用瀏覽器開發人員工具來檢查 TLS 連線詳細資訊，並確認正在使用符合 FIPS 規範的密碼套件。

# 解決私有託管區域中的 FIPS 端點連線問題
<a name="serverless-fips-endpoint-issues"></a>

FIPS 端點適用於具有公有存取權的 Amazon OpenSearch Serverless 集合。對於使用新建立的 VPC 端點的新建立 VPC 集合，FIPS 端點會如預期運作。對於其他 VPC 集合，您可能需要執行手動設定，以確保 FIPS 端點正確運作。

**在 Amazon Route 53 中設定 FIPS 私有託管區域**

1. 請在 [https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/) 開啟 Route 53 主控台。

1. 檢閱您的託管區域：

   1. 找出 AWS 區域 集合所在的託管區域。

   1. 驗證託管區域命名模式：
      + 非 FIPS 格式：`region.aoss.amazonaws.com`。
      + FIPS 格式：`region.aoss-fips.amazonaws.com`。

   1. 確認所有託管區域的**類型**設定為**私有託管區域**。

1. 如果缺少 FIPS 私有託管區域：

   1. 選取對應的非 FIPS 私有託管區域。

   1. 複製**相關聯的 VPCs**資訊。例如：`vpc-1234567890abcdef0 | us-east-2`。

   1. 尋找萬用字元網域記錄。例如：`*.us-east-2.aoss.amazonaws.com`。

   1. 將**值/路由流量**複製到資訊。例如：`uoc1c1qsw7poexampleewjeno1pte3rw.3ym756xh7yj.aoss.searchservices.aws`。

1. 建立 FIPS 私有託管區域：

   1. 使用 FIPS 格式建立新的私有託管區域。例如：`us-east-2.aoss-fips.amazonaws.com`。

   1. 針對**關聯的 VPCs**，輸入您從非 FIPS 私有託管區域複製的 VPC 資訊。

1. 使用下列設定新增記錄：

   1. 記錄名稱：\$1

   1. 記錄類型：CNAME

   1. 值：輸入您先前複製資訊**的值/路由流量**。

## 常見問題
<a name="serverless-fips-endpoint-common-problems"></a>

如果您遇到與 FIPS 相容之 VPC 端點的連線問題，請使用下列資訊來協助解決問題。
+ DNS 解析失敗 - 您無法解析 VPC 中的 FIPS 端點網域名稱
+ 連線逾時 - 您對 FIPS 端點的請求逾時
+ 存取遭拒錯誤 - 使用 FIPS 端點時身分驗證或授權失敗
+ 缺少僅限 VPC 集合的私有託管區域記錄

**疑難排解 FIPS 端點連線**

1. 驗證您的私有託管區域組態：

   1. 確認 FIPS 端點網域 (`*.region.aoss-fips.amazonaws.com`.

   1. 確認私有託管區域與正確的 VPC 相關聯。

      如需詳細資訊，請參閱《*Amazon Route 53 開發人員指南*》中的[私有託管區域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted- zones-private.html)，以及《 *AWS PrivateLink 指南*》中的[管理 DNS 名稱](https://docs.aws.amazon.com/vpc/latest/privatelink/manage-dns-names.html)。

1. 測試 DNS 解析：

   1. 連線至 VPC 中的 EC2 執行個體。

   1. 執行以下命令：

      ```
      nslookup collection-id.region.aoss-fips.amazonaws.com
      ```

   1. 確認回應包含 VPC 端點的私有 IP 地址。

      如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[端點政策和](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#endpoint-dns-verification) [DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc- dns-troubleshooting)。

1. 檢查您的安全群組設定：

   1. 確認連接至 VPC 端點的安全群組允許來自 資源的 HTTPS 流量 （連接埠 443)。

   1. 確認 資源的安全群組允許傳出流量到 VPC 端點。

   如需詳細資訊，請參閱《 *AWS PrivateLink 指南*》中的[端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-security-groups)，以及《*Amazon VPC 使用者指南*》中的[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html#SecurityGroupRules)。

1. 檢閱您的網路 ACL 組態：

   1. 確認網路 ACLs資源與 VPC 端點之間的流量。

     如需詳細資訊，請參閱「Amazon VPC 使用者指南」**中的[網路 ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network- acls.html#nacl-troubleshooting)。

1. 檢閱您的端點政策：

   1. 檢查 VPC 端點政策是否允許 OpenSearch Serverless 資源上的必要動作。

     如需詳細資訊，請參閱《 *AWS PrivateLink 指南*》中的[所需 VPC 端點許可](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html#serverless-vpc-permissions)和[端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#vpc-endpoint-policies)。

**提示**  
如果您在 VPC 中使用自訂 DNS 解析程式，請將它們設定為將`*.amazonaws.com`網域的請求轉送至 AWS 伺服器。

# Amazon OpenSearch Serverless 的資料存取控制
<a name="serverless-data-access"></a>

透過 Amazon OpenSearch Serverless 中的資料存取控制，無論使用者的存取機制或網路來源為何，您都可讓使用者存取集合和索引。您可以提供 IAM 角色和 [SAML 身分](serverless-saml.md)的存取權。

您可以透過*資料存取政策*管理許可，這些政策套用至集合和索引資源。資料存取政策會自動將存取許可指派給符合特定模式的集合和索引，以協助您大規模管理集合。可將多個資料存取政策套用至單一資源。請注意，您必須擁有集合的資料存取政策，才能存取 OpenSearch Dashboards URL。

**Topics**
+ [資料存取政策與 IAM 政策比較](#serverless-data-access-vs-iam)
+ [設定資料存取政策所需的 IAM 許可](#serverless-data-access-permissions)
+ [政策語法](#serverless-data-access-syntax)
+ [支援的政策許可](#serverless-data-supported-permissions)
+ [OpenSearch Dashboards 上的範例資料集](#serverless-data-sample-index)
+ [建立資料存取政策 (主控台)](#serverless-data-access-console)
+ [建立資料存取政策 (AWS CLI)](#serverless-data-access-cli)
+ [檢視資料存取政策](#serverless-data-access-list)
+ [更新資料存取政策](#serverless-data-access-update)
+ [刪除資料存取政策](#serverless-data-access-delete)
+ [跨帳戶資料存取](#serverless-data-access-cross)

## 資料存取政策與 IAM 政策比較
<a name="serverless-data-access-vs-iam"></a>

資料存取政策在邏輯上與 AWS Identity and Access Management (IAM) 政策分開。IAM 許可會控制對[無伺服器 API 操作](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html) (例如 `CreateCollection` 和 `ListAccessPolicies`) 的存取。資料存取政策會控制 OpenSearch Serverless 支援之 [OpenSearch 操作](#serverless-data-supported-permissions) (例如 `PUT <index>` 或 `GET _cat/indices`) 的存取。

控制資料存取政策 API 操作 (例如 `aoss:CreateAccessPolicy` 和 `aoss:GetAccessPolicy`，請參閱下一節所述) 存取的 IAM 許可不會影響資料存取政策中指定的許可。

例如，假設 IAM 政策拒絕使用者為 `collection-a` 建立資料存取政策，但允許其為所有集合 (`*`) 建立資料存取政策：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "aoss:collection": "collection-a"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "aoss:CreateAccessPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如果使用者建立的資料存取政策允許*所有*集合 (`collection/*` 或 `index/*/*`) 的特定許可，則該政策將套用至所有集合，包括集合 A。

**重要**  
在資料存取政策中授予許可不足以存取 OpenSearch Serverless 集合中的資料。也必須將 IAM 許可`aoss:APIAccessAll`和 的存取權**授予相關聯的委託人`aoss:DashboardsAccessAll`。這兩個許可都授予集合資源的完整存取權，而 Dashboards 許可也提供 OpenSearch Dashboards 的存取權。如果委託人沒有這兩個 IAM 許可，則在嘗試將請求傳送至集合時，會收到 403 個錯誤。如需詳細資訊，請參閱[使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 設定資料存取政策所需的 IAM 許可
<a name="serverless-data-access-permissions"></a>

OpenSearch Serverless 的資料存取控制使用下列 IAM 許可。您可以指定 IAM 條件，將使用者限制為特定存取政策名稱。
+ `aoss:CreateAccessPolicy`：建立存取政策。
+ `aoss:ListAccessPolicies`：列出所有存取政策。
+ `aoss:GetAccessPolicy`：請參閱有關特定存取政策的詳細資訊。
+ `aoss:UpdateAccessPolicy`：修改存取政策。
+ `aoss:DeleteAccessPolicy`：刪除存取政策。

下列身分型存取政策讓使用者可以檢視所有存取政策，以及更新包含資源模式 `collection/logs` 的政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:ListAccessPolicies",
                "aoss:GetAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "aoss:UpdateAccessPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "logs"
                    ]
                }
            }
        }
    ]
}
```

------

**注意**  
此外，OpenSearch Serverless 需要集合資源的 `aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`許可。如需詳細資訊，請參閱[使用 OpenSearch API 操作](security-iam-serverless.md#security_iam_id-based-policy-examples-data-plane)。

## 政策語法
<a name="serverless-data-access-syntax"></a>

資料存取政策包含一組規則，每個規則均包含下列元素：


| Element | Description | 
| --- | --- | 
| ResourceType | 許可套用的資源類型 (集合或索引)。別名和範本許可位於集合層級，而建立、修改和搜尋資料的許可則位於索引層級。如需詳細資訊，請參閱 [Supported policy permissions](#serverless-data-supported-permissions) (支援的政策許可)。 | 
| Resource | 資源名稱和/或模式的清單。模式是字首後接萬用字元 (\$1)，允許關聯的許可套用至多個資源。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-data-access.html) | 
| Permission | 為指定資源授予的許可清單。(如需許可與其允許之 API 操作的完整清單，請參閱 [支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations))。 | 
| Principal | 要授予存取權的一個或多個主體清單。主體可以是 IAM 角色 ARN，也可以是 SAML 身分。這些主體必須在目前的 AWS 帳戶內。資料存取政策不直接支援跨帳戶存取，但您可以在政策中包含角色，而來自不同 的使用者 AWS 帳戶 可以在集合擁有帳戶中擔任該角色。如需詳細資訊，請參閱[跨帳戶資料存取](#serverless-data-access-cross)。 | 

下列範例政策會將別名和範本許可授予名為 `autopartsinventory` 的集合以及任何以字首 `sales*` 開頭的集合。同時也會將讀取和寫入許可授予 `autopartsinventory` 集合中的所有索引，以及以字首 `orders*` 開頭的 `salesorders` 集合中的任何索引。

```
[
   {
      "Description": "Rule 1",
      "Rules":[
         {
            "ResourceType":"collection",
            "Resource":[
               "collection/autopartsinventory",
               "collection/sales*"
            ],
            "Permission":[
               "aoss:CreateCollectionItems",
               "aoss:UpdateCollectionItems",
               "aoss:DescribeCollectionItems"
            ]
         },
         {
            "ResourceType":"index",
            "Resource":[
               "index/autopartsinventory/*",
               "index/salesorders/orders*"
            ],
            "Permission":[
               "aoss:*"
            ]
         }
      ],
      "Principal":[
         "arn:aws:iam::123456789012:user/Dale",
         "arn:aws:iam::123456789012:role/RegulatoryCompliance",
         "saml/123456789012/myprovider/user/Annie",
         "saml/123456789012/anotherprovider/group/Accounting"
      ]
   }
]
```

您無法在政策中明確拒絕存取。因此，所有政策許可均可附加。例如，若一個政策授予使用者 `aoss:ReadDocument`，而另一個政策授予 `aoss:WriteDocument`，則使用者將同時擁有*兩個*許可。如果第三個政策授予相同的使用者 `aoss:*`，則使用者可以對關聯的索引執行*所有*動作；限制較多的許可不會覆寫限制較少的許可。

## 支援的政策許可
<a name="serverless-data-supported-permissions"></a>

資料存取政策支援下列許可。如需了解每個許可允許的 OpenSearch API 操作，請參閱 [支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations)。

**集合許可**
+ `aoss:CreateCollectionItems`
+ `aoss:DeleteCollectionItems`
+ `aoss:UpdateCollectionItems`
+ `aoss:DescribeCollectionItems`
+ `aoss:*`

**索引許可**
+ `aoss:ReadDocument`
+ `aoss:WriteDocument`
+ `aoss:CreateIndex`
+ `aoss:DeleteIndex`
+ `aoss:UpdateIndex`
+ `aoss:DescribeIndex`
+ `aoss:*`

## OpenSearch Dashboards 上的範例資料集
<a name="serverless-data-sample-index"></a>

OpenSearch Dashboards 提供範例[資料集](https://opensearch.org/docs/latest/dashboards/quickstart-dashboards/#adding-sample-data)，其中包含視覺化、儀表板和其他工具，協助您在新增自己的資料之前探索 Dashboards。若要從此範例資料建立索引，您需要一個資料存取政策，以提供您要使用之資料集的許可。下列政策使用萬用字元 (`*`) 為所有三個範例資料集提供許可。

```
[
  {
    "Rules": [
      {
        "Resource": [
          "index/<collection-name>/opensearch_dashboards_sample_data_*"
        ],
        "Permission": [
          "aoss:CreateIndex",
          "aoss:DescribeIndex",
          "aoss:ReadDocument"
        ],
        "ResourceType": "index"
      }
    ],
    "Principal": [
      "arn:aws:iam::<account-id>:user/<user>"
    ]
  }
]
```

## 建立資料存取政策 (主控台)
<a name="serverless-data-access-console"></a>

您可以使用視覺化編輯器，或以 JSON 格式建立資料存取政策。當您建立集合時，系統會將對應的許可指派給符合政策中定義模式之一的任何新集合。

**建立 OpenSearch Serverless 資料存取政策**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，展開**無伺服器**，然後在**安全性**下選擇**資料存取政策**。

1. 選擇 **Create access policy** (建立存取政策)。

1. 提供政策的名稱和描述。

1. 為政策中的第一個規則提供名稱。例如，"Logs collection access" (日誌集合存取)。

1. 選擇 **Add principals** (新增主體)，然後選取要向其提供資料存取權的一個或多個 IAM 角色或 [SAML 使用者和群組](serverless-saml.md)。
**注意**  
若要從下拉式選單中選取主體，您必須具有 `iam:ListUsers` 和 `iam:ListRoles` 許可 (對於 IAM 主體) 和 `aoss:ListSecurityConfigs` 許可 (對於 SAML 身分)。

1. 選擇 **Grant** (授予)，然後選取別名、範本和索引許可，以授予關聯的主體。如需完整的許可及其允許之存取的完整清單，請參閱 [支援的 OpenSearch API 操作與許可](serverless-genref.md#serverless-operations)。

1. (選用) 設定政策的其他規則。

1. 選擇**建立**。在您建立政策與強制執行許可之間，可能會有大約一分鐘的延遲時間。如果延遲超過 5 分鐘，請聯絡 [支援](https://console.aws.amazon.com/support/home)。

**重要**  
如果您的政策僅包含索引許可 (而且沒有集合許可)，您可能仍會看到相符集合的訊息，表示 `Collection cannot be accessed yet. Configure data access policies so that users can access the data within this collection`。您可以忽略此警告。允許的主體仍然可以對集合執行其指派的索引相關操作。

## 建立資料存取政策 (AWS CLI)
<a name="serverless-data-access-cli"></a>

若要使用 OpenSearch Serverless API 建立資料存取政策，請使用 `CreateAccessPolicy` 命令。該命令接受內嵌政策和 .json 檔案。內嵌政策必須編碼為 [JSON 逸出字串](https://www.freeformatter.com/json-escape.html)。

下列請求會建立資料存取政策：

```
aws opensearchserverless create-access-policy \
    --name marketing \
    --type data \
    --policy "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]"
```

若要在 .json 檔案中提供政策，請使用格式 `--policy file://my-policy.json`。

包含在政策中的主體現在可以使用其獲得存取權的 [OpenSearch 操作](#serverless-data-supported-permissions)。

## 檢視資料存取政策
<a name="serverless-data-access-list"></a>

在建立集合之前，您可能想要預覽帳戶中的現有資料存取政策，以查看哪個政策的資源模式與集合名稱相符。下列 [ListAccessPolicies](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListAccessPolicies.html) 請求會列出您帳戶中的所有資料存取政策：

```
aws opensearchserverless list-access-policies --type data
```

該請求會傳回所有已設定資料存取政策的相關資訊。若要檢視一個特定政策中定義的模式規則，請在回應中的 `accessPolicySummaries`元素內容中找到政策資訊。請注意此政策`type`的 `name`和 ，並在 [GetAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetAccessPolicy.html) 請求中使用這些屬性來接收包含下列政策詳細資訊的回應：

```
{
    "accessPolicyDetails": [
        {
            "type": "data",
            "name": "my-policy",
            "policyVersion": "MTY2NDA1NDE4MDg1OF8x",
            "description": "My policy",
            "policy": "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]",
            "createdDate": 1664054180858,
            "lastModifiedDate": 1664054180858
        }
    ]
}
```

您可以包含資源篩選條件，將結果限制為包含特定集合或索引的政策：

```
aws opensearchserverless list-access-policies --type data --resource "index/autopartsinventory/*"
```

若要檢視有關特定政策的詳細資訊，請使用 [GetAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetAccessPolicy.html) 命令。

## 更新資料存取政策
<a name="serverless-data-access-update"></a>

當您更新資料存取政策時，所有關聯的集合均會受到影響。若要在 OpenSearch Serverless 主控台中更新資料存取政策，請選擇 **Data access control** (資料存取控制)，選取要修改的政策，然後選擇 **Edit** (編輯)。進行變更，然後選擇 **Save** (儲存)。

若要使用 OpenSearch Serverless API 更新資料存取政策，請傳送 `UpdateAccessPolicy` 請求。您必須包含政策版本，您可以使用 `ListAccessPolicies` 或 `GetAccessPolicy` 命令擷取該版本。將最新的政策版本納入其中，可確保您不會意外覆寫其他人所做的變更。

下列 [UpdateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateAccessPolicy.html) 請求會使用新的政策 JSON 文件更新資料存取政策：

```
aws opensearchserverless update-access-policy \
    --name sales-inventory \
    --type data \
    --policy-version MTY2NDA1NDE4MDg1OF8x \
    --policy file://my-new-policy.json
```

在您更新政策與強制執行新許可之間，可能會有幾分鐘的延遲時間。

## 刪除資料存取政策
<a name="serverless-data-access-delete"></a>

當您刪除資料存取政策時，所有關聯的集合均會失去政策中定義的存取權。在刪除政策之前，請確保您的 IAM 和 SAML 使用者具有集合的適當存取權。若要刪除 OpenSearch Serverless 主控台中的政策，請選取該政策，然後選擇 **Delete** (刪除)。

您也可以使用 [DeleteAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteAccessPolicy.html) 命令：

```
aws opensearchserverless delete-access-policy --name my-policy --type data
```

## 跨帳戶資料存取
<a name="serverless-data-access-cross"></a>

雖然您無法建立具有跨帳戶身分或跨帳戶集合的資料存取政策，但您仍然可以使用擔任角色選項來設定跨帳戶存取。例如，如果 `account-a`擁有`account-b`需要存取的集合，則來自 的使用者可以在 中`account-b`擔任角色`account-a`。角色必須具有 IAM 許可`aoss:APIAccessAll`和 `aoss:DashboardsAccessAll`，並包含在 上的資料存取政策中`account-a`。

# 透過 的資料平面存取 AWS PrivateLink
<a name="serverless-vpc"></a>

Amazon OpenSearch Serverless 支援控制平面和資料平面操作的兩種 AWS PrivateLink 連線類型。控制平面操作包括建立和刪除集合，以及管理存取政策。資料平面操作用於編製索引和查詢集合中的資料。此頁面涵蓋資料平面 VPC 端點。如需控制平面 AWS PrivateLink 端點的資訊，請參閱 [透過 控制平面存取 AWS PrivateLink](serverless-vpc-cp.md)。

您可以使用 在 VPC 和 Amazon OpenSearch Serverless 之間 AWS PrivateLink 建立私有連線。您可以像在 VPC 中一樣存取 OpenSearch Serverless，無需使用網際網路閘道、NAT 裝置、VPN 連接或 Direct Connect 連線。VPC 中的執行個體無需公有 IP 地址，即可存取 OpenSearch Serverless。如需 VPC 網路存取的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的網路連線模式](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)。

您可以建立由 AWS PrivateLink提供支援的*介面端點*來建立此私有連線。我們會在您為介面端點指定的每個子網路中建立端點網路介面。這些是請求者受管網路介面，可作為目的地為 OpenSearch Serverless 之流量的進入點。

如需詳細資訊，請參閱《*AWS PrivateLink 指南*》中的「[透過 AWS PrivateLink存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)」。

**Topics**
+ [集合端點的 DNS 解析](#vpc-endpoint-dnc)
+ [VPCs和網路存取政策](#vpc-endpoint-network)
+ [VPCs和端點政策](#vpc-endpoint-policy)
+ [考量事項](#vpc-endpoint-considerations)
+ [必要許可](#serverless-vpc-permissions)
+ [建立 OpenSearch Serverless 的介面端點](#serverless-vpc-create)
+ [Amazon OpenSearch Serverless 的共用 VPC 設定](#shared-vpc-setup)

## 集合端點的 DNS 解析
<a name="vpc-endpoint-dnc"></a>

當您透過 OpenSearch Serverless 主控台建立資料平面 VPC 端點時，服務會建立新的 Amazon Route 53 [私有託管區域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)，並將其連接到 VPC。此私有託管區域包含記錄，可將 OpenSearch Serverless 集合 (`*.us-east-1.aoss.amazonaws.com`) 的萬用字元 DNS 記錄解析為用於端點的介面地址。您只需要 VPC 中的一個 OpenSearch Serverless VPC 端點，即可存取每個端點中的任何和所有集合和儀表板 AWS 區域。每個具有 OpenSearch Serverless 端點的 VPC 都連接了自己的私有託管區域。

OpenSearch Serverless 介面端點也會為區域中所有集合建立公有 Route 53 萬用字元 DNS 記錄。DNS 名稱解析為 OpenSearch Serverless 公有 IP 地址。VPCs中沒有 OpenSearch Serverless VPC 端點的用戶端或公有網路中的用戶端可以使用公有 Route 53 解析程式，並使用這些 IP 地址存取集合和儀表板。VPC 端點的 IP 地址類型 (IPv4、IPv6 或 Dualstack) 取決於您[為 OpenSearch Serverless 建立介面端點](#serverless-vpc-create)時提供的子網路。

**注意**  
OpenSearch Serverless 會為 OpenSearch Service 網域解析建立附加的 Amazon Route 53 私有託管區域 (``<region>.opensearch.amazonaws.com``)。您可以使用 中的 [update-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-vpc-endpoint.html) 命令，將現有的 IPv4 VPC 端點更新為 Dualstack AWS CLI。

指定 VPC 的 DNS 解析程式地址是 VPC CIDR 的第二個 IP 地址。VPC 中的任何用戶端都需要使用該解析程式來取得任何集合的 VPC 端點地址。解析程式使用 OpenSearch Serverless 建立的私有託管區域。對任何帳戶中的所有集合使用該解析程式就已足夠。也可以將 VPC 解析程式用於某些集合端點，將公有解析程式用於其他端點，但通常不需要。

## VPCs和網路存取政策
<a name="vpc-endpoint-network"></a>

若要為您的集合授予 OpenSearch APIs和 Dashboards 的網路許可，您可以使用 OpenSearch Serverless [網路存取政策](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)。您可以從 VPC 端點 （或公有網際網路） 控制此網路存取。由於您的網路政策僅控制流量許可，因此您還必須設定[資料存取政策](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html)，指定在集合及其索引中的資料上操作的許可。將 OpenSearch Serverless VPC 端點視為服務的存取點、將網路存取政策視為集合和儀表板的網路層級存取點，並將資料存取政策視為集合中任何資料操作的精細存取控制存取點。

由於您可以在網路政策中指定多個 VPC IDs，我們建議您為每個需要存取集合的 VPC 建立 VPC 端點。這些 VPCs可以屬於與擁有 OpenSearch Serverless 集合和網路政策的帳戶不同的 AWS 帳戶。我們不建議您在兩個帳戶之間建立 VPC-to-VPC對 VPC 對等互連或其他代理解決方案，以便一個帳戶的 VPC 可以使用另一個帳戶的 VPC 端點。這比每個 VPC 都有自己的端點更不安全且更具成本效益。另一個 VPC 的管理員在網路政策中設定該 VPC 端點的存取權，將無法輕鬆看見第一個 VPC。

## VPCs和端點政策
<a name="vpc-endpoint-policy"></a>

 Amazon OpenSearch Serverless 支援 VPCs端點政策。端點政策是您連接到 VPC 端點的 IAM 資源型政策，以控制哪些 AWS 主體可以使用端點存取您的 AWS 服務。如需詳細資訊，請參閱[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

若要使用端點政策，您必須先建立介面端點。您可以使用 OpenSearch Serverless 主控台或 OpenSearch Serverless API 建立介面端點。建立介面端點之後，您需要將端點政策新增至端點。如需詳細資訊，請參閱[建立 OpenSearch Serverless 的介面端點](#serverless-vpc-create)。

**注意**  
您無法直接在 OpenSearch Service 主控台中定義端點政策。

端點政策不會覆寫或取代您可能已設定的其他身分型政策、資源型政策、網路政策或資料存取政策。如需更新端點政策的詳細資訊，請參閱[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

根據預設，端點政策會授予 VPC 端點的完整存取權。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

雖然預設 VPC 端點政策會授予完整端點存取權，但您可以設定 VPC 端點政策，以允許存取特定角色和使用者。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "123456789012",
                    "987654321098"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

您可以指定要包含在 VPC 端點政策中的 OpenSearch Serverless 集合做為條件元素。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aoss:collection": [
                        "coll-abc"
                    ]
                }
            }
        }
    ]
}
```

------

支援 `aoss:CollectionId` 。

```
Condition": {
         "StringEquals": {
               "aoss:CollectionId": "collection-id"
          }
}
```

您可以在 VPC 端點政策中使用 SAML 身分來判斷 VPC 端點存取。您必須在 VPC `(*)` 端點政策的主體區段中使用萬用字元。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        }
    ]
}
```

------

此外，您可以設定端點政策以包含特定的 SAML 主體政策。若要執行此作業，請參閱下列內容：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalTag/Department": [
                        "Engineering"]
                    }
                }
            }
        ]
    }
```

------

如需搭配 Amazon OpenSearch Serverless 使用 SAML 身分驗證的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的 SAML 身分驗證](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html)。

您也可以在相同的 VPC 端點政策中包含 IAM 和 SAML 使用者。若要執行此作業，請參閱下列範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "saml:cn": [
                        "saml/111122223333/idp123/group/football",
                        "saml/111122223333/idp123/group/soccer",
                        "saml/111122223333/idp123/group/cricket"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

您也可以透過界面 VPC 端點從 Amazon EC2 存取 Amazon OpenSearch Serverless 集合。如需詳細資訊，請參閱[從 Amazon EC2 存取 OpenSearch Serverless 集合 （透過界面 VPC 端點）](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)。

## 考量事項
<a name="vpc-endpoint-considerations"></a>

設定 OpenSearch Serverless 的介面端點前，請考量下列事項：
+ OpenSearch Serverless 支援透過介面端點呼叫所有支援的 [OpenSearch API 操作](serverless-genref.md#serverless-operations) (非組態 API 操作)。
+ 建立 OpenSearch Serverless 的介面端點後，您仍需要將其包含在[網路存取政策](serverless-network.md)中，才能存取無伺服器集合。
+ 依預設，允許透過端點介面對 OpenSearch Serverless 進行完整存取。您可以將安全群組與端點網路介面建立關聯，以透過介面端點控制傳送至 OpenSearch Serverless 的流量。
+ 單一 最多可 AWS 帳戶 有 50 個 OpenSearch Serverless VPC 端點。
+ 如果您在網路政策中啟用對集合 API 或儀表板的公有網際網路存取，則任何 VPC 和公有網際網路都可以存取集合。
+ 如果您是內部部署和 VPC 外部，則無法直接使用 DNS 解析程式進行 OpenSearch Serverless VPC 端點解析。如果您需要 VPN 存取，VPC 需要 DNS 代理解析程式，外部用戶端才能使用。Route 53 提供傳入端點選項，可讓您從內部部署網路或其他 VPC 將 DNS 查詢解析至 VPC。
+ OpenSearch Serverless 建立並連接至 VPC 的私有託管區域由 服務管理，但會顯示在您的 Amazon Route 53 資源中，並向您的 帳戶收費。
+ 如需其他考量，請參閱《AWS PrivateLink 指南》**中的[考量事項](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)。

## 必要許可
<a name="serverless-vpc-permissions"></a>

OpenSearch Serverless 的 VPC 存取使用下列 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件，將使用者限制在特定集合內。
+ `aoss:CreateVpcEndpoint`：建立 VPC 端點。
+ `aoss:ListVpcEndpoints`：列出所有 VPC 端點。
+ `aoss:BatchGetVpcEndpoint`：查看有關 VPC 端點子集的詳細資訊。
+ `aoss:UpdateVpcEndpoint`：修改 VPC 端點。
+ `aoss:DeleteVpcEndpoint`：刪除 VPC 端點。

此外，您需要下列 Amazon EC2 和 Route 53 許可，才能建立 VPC 端點。
+ `ec2:CreateTags`
+ `ec2:CreateVpcEndpoint`
+ `ec2:DeleteVpcEndPoints`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcEndpoints`
+ `ec2:DescribeVpcs`
+ `ec2:ModifyVpcEndPoint`
+ `route53:AssociateVPCWithHostedZone`
+ `route53:ChangeResourceRecordSets`
+ `route53:CreateHostedZone`
+ `route53:DeleteHostedZone`
+ `route53:GetChange`
+ `route53:GetHostedZone`
+ `route53:ListHostedZonesByName`
+ `route53:ListHostedZonesByVPC`
+ `route53:ListResourceRecordSets`

## 建立 OpenSearch Serverless 的介面端點
<a name="serverless-vpc-create"></a>

您可以使用主控台或 OpenSearch Serverless API 來建立 OpenSearch Serverless 的介面端點。

**建立 OpenSearch Serverless 集合的介面端點**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) 的 Amazon OpenSearch Service 主控台。

1. 在左側導覽窗格中，展開 **Serverless** (無伺服器)，然後選擇 **VPC endpoints** (VPC 端點)。

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

1. 提供端點的名稱。

1. 針對 **VPC**，選取您將從中存取 OpenSearch Serverless 的 VPC。

1. 針對**子網路**，選取您將從中存取 OpenSearch Serverless 的一個子網路。
   + 端點的 IP 地址和 DNS 類型是以子網路類型為基礎
     + Dualstack：如果所有子網路同時具有 IPv4 和 IPv6 地址範圍
     + IPv6：如果所有子網路都是僅限 IPv6 的子網路
     + IPv4：如果所有子網路都有 IPv4 地址範圍

1. 對於 **Security group** (安全群組)，選取要與端點網路介面建立關聯的安全群組。這是一個關鍵步驟，您可以在其中限制您授權至端點之傳入流量的連接埠、通訊協定和來源。請確定安全群組規則允許將使用 VPC 端點與 OpenSearch Serverless 通訊的資源，以便與端點網路介面通訊。

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

若要使用 OpenSearch Serverless API 建立 VPC 端點，請使用 `CreateVpcEndpoint` 命令。

**注意**  
建立端點後，請記下其 ID (例如 `vpce-abc123def4EXAMPLE`)。若要提供端點存取權給您的集合，您必須在一個或多個網路存取政策中包含此 ID。

建立介面端點後，您必須透過網路存取政策，為其提供集合的存取權。如需詳細資訊，請參閱[Amazon OpenSearch Serverless 的網路存取](serverless-network.md)。

## Amazon OpenSearch Serverless 的共用 VPC 設定
<a name="shared-vpc-setup"></a>

您可以使用 Amazon Virtual Private Cloud (VPC) AWS 帳戶 與組織中的其他 共用 VPC 子網路，以及在多個資源之間共用聯網基礎設施，例如 VPN AWS 帳戶。

目前，Amazon OpenSearch Serverless 不支援在共用 VPC 中建立 AWS PrivateLink 連線，除非您是該 VPC 的擁有者。 AWS PrivateLink 也不支援在兩者之間共用連線 AWS 帳戶。

不過，根據 OpenSearch Serverless 的彈性和模組化架構，您仍然可以設定共用 VPC。這是因為 OpenSearch Serverless 網路基礎設施與個別集合 (OpenSearch Service) 基礎設施的基礎設施不同。因此，您可以為 AWS PrivateLink VPCe 所在的一個帳戶建立 VPCe 端點，然後在其他帳戶的網路政策中使用 VPCe ID 來限制來自該共用 VPC 的流量。

下列程序是指*擁有者帳戶*和*消費者帳戶*。

擁有者帳戶充當常見的聯網帳戶，您可以在其中設定 VPC 並與其他帳戶共用。消費者帳戶是那些在擁有者帳戶與其共用的 VPC 中建立和維護其 OpenSearch Serverless 集合的帳戶。

**先決條件**  
在設定共用 VPC 之前，請確定符合下列要求：
+ 預期的擁有者帳戶必須已在 Amazon Virtual Private Cloud 中設定 VPC、子網路、路由表和其他必要資源。如需詳細資訊，請參閱《[Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)》**。
+ 預期的擁有者帳戶和取用者帳戶必須屬於其中的相同組織 AWS Organizations。如需詳細資訊，請參閱*「[AWS Organizations 使用者指南」](https://docs.aws.amazon.com/organizations/latest/userguide/)*。

**在擁有者帳戶/常用聯網帳戶中設定共用 VPC。**

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

1. 請遵循 [建立 OpenSearch Serverless 的介面端點](#serverless-vpc-create) 中的步驟。執行此作業時，請進行下列選擇：
   + 選取與您組織中消費者帳戶共用的 VPC 和子網路。

1. 建立端點之後，請記下產生的 VPCe ID，並將其提供給要在消費者帳戶中執行設定任務的管理員。

   VPCe IDs的格式為 `vpce-abc123def4EXAMPLE`。

**在消費者帳戶中設定共用 VPC**

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

1. 如果您還沒有集合，請使用 中的資訊[管理 Amazon OpenSearch Serverless 集合](serverless-manage.md)來建立集合。

1. 使用 中的資訊來[建立網路政策 (主控台)](serverless-network.md#serverless-network-console)建立網路政策。執行此作業時，請進行下列選擇。
**注意**  
您也可以為此目的更新現有的網路政策。

   1. 針對**存取類型**，選取 **VPC （建議）**。

   1. 對於**要存取的 VPC 端點**，請選擇擁有者帳戶提供給您的 VPCe ID，格式為 `vpce-abc123def4EXAMPLE`。

   1. 在**資源類型**區域中，執行下列動作：
      + 選取**啟用對 OpenSearch 端點的存取**方塊，然後選取要用來從該共用 VPC 啟用存取的集合名稱或集合模式。
      + 選取**啟用對 OpenSearch Dashboard 的存取**方塊，然後選取要用來從該共用 VPC 啟用存取的集合名稱或集合模式。

1. 針對新政策，選擇**建立**。針對現有的政策，選擇**更新**。

# 透過 控制平面存取 AWS PrivateLink
<a name="serverless-vpc-cp"></a>

Amazon OpenSearch Serverless 支援控制平面和資料平面操作的兩種 AWS PrivateLink 連線類型。控制平面操作包括建立和刪除集合，以及管理存取政策。資料平面操作用於編製索引和查詢集合中的資料。此頁面涵蓋控制平面 AWS PrivateLink 端點。如需資料平面 VPC 端點的資訊，請參閱 [透過 的資料平面存取 AWS PrivateLink](serverless-vpc.md)。

## 建立控制平面 AWS PrivateLink 端點
<a name="serverless-vpc-privatelink"></a>

您可以將 OpenSearch Serverless 設定為使用介面 VPC 端點，以改善 VPC 的安全狀態。介面端點採用 AWS PrivateLink 技術。此技術可讓您在沒有網際網路閘道、NAT 裝置、VPN 連線或 AWS Direct Connect 連線的情況下，私下存取 OpenSearch Serverless APIs。

如需 AWS PrivateLink 和 VPC 端點的詳細資訊，請參閱《Amazon [VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html#concepts-vpc-endpoints)》中的 VPC 端點。

### 考量事項
<a name="serverless-vpc-cp-considerations"></a>
+ VPC 端點僅在相同區域內受支援。
+ 透過 Amazon Route 53，VPC 端點僅支援 Amazon 提供的 DNS。
+ VPC 端點支援端點政策，以控制對 OpenSearch Serverless 集合、政策和 VpcEndpoints 的存取。
+ OpenSearch Serverless 僅支援界面端點。不支援閘道端點。

### 建立 VPC 端點
<a name="serverless-vpc-cp-create"></a>

若要為 Amazon OpenSearch Serverless 建立控制平面 VPC 端點，請使用《*Amazon VPC 開發人員指南*》中的[使用介面 VPC 端點程序存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)。建立下列端點：
+ `com.amazonaws.region.aoss`

**使用主控台建立控制平面 VPC 端點**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Endpoints (端點)**。

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

1. 對於 **Service category** (服務類別)，選擇 **AWS 服務**。

1. 針對**服務**，選擇 `com.amazonaws.region.aoss`。例如 `com.amazonaws.us-east-1.aoss`。

1. 針對 **VPC**，選擇要在其中建立端點的 VPC。

1. 對於 **Subnets (子網路)**，請選擇欲建立端點的子網路 (可用區域)。

1. 針對**安全群組**，選擇要與端點網路介面建立關聯的安全群組。確保允許 HTTPS （連接埠 443)。

1. 針對**政策**，選擇**完整存取**以允許所有操作，或選擇**自訂**以連接自訂政策。

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

### 建立端點政策
<a name="serverless-vpc-cp-endpoint-policy"></a>

您可以將端點政策連接至 VPC 端點，以控制對 Amazon OpenSearch Serverless 的存取。此政策會指定下列資訊：
+ 可執行動作的主體。
+ 可執行的動作。
+ 可供執行動作的資源。

如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的[使用 VPC 端點控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

**Example OpenSearch Serverless 的 VPC 端點政策**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": [  
        "aoss:ListCollections",  
        "aoss:BatchGetCollection"  
      ],  
      "Resource": "*"  
    }  
  ]  
}
```

**Example 限制性政策僅允許列出操作**  

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": "*",  
      "Action": "aoss:ListCollections",  
      "Resource": "*"  
    }  
  ]  
}
```

# Amazon OpenSearch Serverless 的 SAML 身分驗證
<a name="serverless-saml"></a>

您可以透過 Amazon OpenSearch Serverless 的 SAML 身分驗證，使用現有身分提供者，為無伺服器集合的 OpenSearch Dashboards 端點提供單一登入 (SSO)。

SAML 身分驗證讓您可以使用第三方身分提供者，登入 OpenSearch Dashboards，以便為資料編製索引和進行搜尋。OpenSearch Serverless 支援使用 SAML 2.0 標準的提供者，例如 IAM Identity Center、Okta、Keycloak、Active Directory Federation Services (AD FS) 和 Auth0。您可以設定 IAM Identity Center 來同步來自其他身分來源的使用者和群組，例如 Okta、OneLogin 和 Microsoft Entra ID。如需 IAM Identity Center 支援的身分來源清單以及設定這些來源的步驟，請參閱《*IAM Identity Center 使用者指南*[》中的入門教學](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)課程。

**注意**  
SAML 身分驗證僅適用於透過 Web 瀏覽器存取 OpenSearch Dashboards。經驗證的使用者只能透過 OpenSearch Dashboards 中的**開發工具**，向 OpenSearch API 操作發出請求。SAML 憑證*不能*讓您對 OpenSearch API 操作發出直接 HTTP 請求。

若要設定 SAML 身分驗證，您應先設定 SAML 身分提供者 (IdP)。然後，您可以將該 IdP 中的一個或多個使用者納入[資料存取政策](serverless-data-access.md)中。此政策會向它授予集合和/或索引的某些許可。然後，使用者可以登入 OpenSearch Dashboards，並執行資料存取政策中允許的動作。

![\[SAML authentication flow with data access policy, OpenSearch interface, and JSON configuration.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/serverless-saml-flow.png)


**Topics**
+ [考量事項](#serverless-saml-considerations)
+ [必要許可](#serverless-saml-permissions)
+ [建立 SAML 提供者 (主控台)](#serverless-saml-creating)
+ [存取 OpenSearch Dashboards](#serverless-saml-dashboards)
+ [授予 SAML 身分對集合資料的存取權](#serverless-saml-policies)
+ [建立 SAML 提供者 (AWS CLI)](#serverless-saml-creating-api)
+ [檢視 SAML 提供者](#serverless-saml-viewing)
+ [更新 SAML 提供者](#serverless-saml-updating)
+ [刪除 SAML 提供者](#serverless-saml-deleting)

## 考量事項
<a name="serverless-saml-considerations"></a>

設定 SAML 身分驗證時請考量下列事項：
+ 不支援已簽署和已加密的請求。
+ 不支援已加密的聲明。
+ 不支援 IdP 啟動的身分驗證和登出。
+ 在非 IAM 身分的情況下，服務控制政策 (SCP) 將不適用或評估 （例如 Amazon OpenSearch Serverless & SAML 中的 SAML 和 Amazon OpenSearch Service 的基本內部使用者授權）。

## 必要許可
<a name="serverless-saml-permissions"></a>

OpenSearch Serverless 的 SAML 身分驗證使用下列 AWS Identity and Access Management (IAM) 許可：
+ `aoss:CreateSecurityConfig`：建立 SAML 提供者。
+ `aoss:ListSecurityConfig`：列出目前帳戶中的所有 SAML 提供者。
+ `aoss:GetSecurityConfig`：檢視 SAML 提供者資訊。
+ `aoss:UpdateSecurityConfig`：修改指定的 SAML 提供者組態，包括 XML 中繼資料。
+ `aoss:DeleteSecurityConfig`：刪除 SAML 提供者。

下列身分型存取政策讓使用者可以管理所有 IdP 組態：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "aoss:CreateSecurityConfig",
                "aoss:DeleteSecurityConfig",
                "aoss:GetSecurityConfig",
                "aoss:UpdateSecurityConfig",
                "aoss:ListSecurityConfigs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

請注意，`Resource` 元素必須是萬用字元。

## 建立 SAML 提供者 (主控台)
<a name="serverless-saml-creating"></a>

這些步驟說明如何建立 SAML 提供者。這可透過 OpenSearch Dashboards 的服務提供者 (SP) 啟動的身分驗證來啟用 SAML 身分驗證。不支援 IdP 啟動的身分驗證。

**啟用 OpenSearch Dashboards 的 SAML 身分驗證**

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

1. 在左側導覽面板上，展開 **Serverless** (無伺服器)，然後選擇 **SAML authentication** (SAML 身分驗證)。

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

1. 提供提供者的名稱和描述。
**注意**  
您指定的名稱可公開存取，當使用者登入 OpenSearch Dashboards 時，該名稱會出現在下拉式選單中。確保名稱易於識別，並且不會洩露有關您身分提供者的敏感資訊。

1. 在 **Configure your IdP** (設定 IdP) 下，複製聲明消費者服務 (ACS) URL。

1. 使用剛才複製的 ACS URL 來設定身分提供者。術語和步驟因提供者而異。請咨詢供應商文件。

   例如，在 Okta 中，您可以建立「SAML 2.0 Web 應用程式」，並將 ACS URL 指定為 **Single Sign On URL** (單一登入 URL)、**Recipient URL** (收件者 URL) 和 **Destination URL** (目的地 URL)。對於 Auth0，您可以在 **Allowed Callback URLs** (允許的回呼 URL) 中加以指定。

1. 如果 IdP 有此值的欄位，請提供對象限制。對象限制是 SAML 聲明中的一個值，用於指定聲明的對象。使用 OpenSearch Serverless，您可以執行下列動作。請務必使用您自己的 AWS 帳戶 ID 取代下列程式碼範例中*的內容*：

   1. 使用預設對象限制 `:opensearch:111122223333`。

   1. （選用） 使用 設定自訂受眾限制 AWS CLI。如需詳細資訊，請參閱[建立 SAML 提供者 (AWS CLI)](#serverless-saml-creating-api)。

   對象限制欄位的名稱因提供者而異。對於 Okta，該名稱為 **Audience URI (SP Entity ID)** (對象 URI (SP 實體 ID))。對於 IAM 身分中心，該名稱為 **Application SAML audience** (應用程式 SAML 對象)。

1. 如果您使用的是 IAM 身分中心，您還需要指定下列[屬性映射](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html)：`Subject=${user:name}`，格式為 `unspecified`。

1. 設定身分提供者之後，會產生 IdP 中繼資料檔案。此 XML 檔案包含提供者的相關資訊，例如 TLS 憑證、單一登入端點以及身分提供者的實體 ID。

   複製 IdP 中繼資料檔案中的文字，並將其貼到 **Provide metadata from your IdP** (透過 IdP 提供中繼資料) 欄位下方。或者，選擇 **Import from XML file** (從 XML 檔案匯入)，然後上傳檔案。中繼資料檔案如下所示：

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <md:EntityDescriptor entityID="entity-id" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
     <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
       <md:KeyDescriptor use="signing">
         <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
           <ds:X509Data>
             <ds:X509Certificate>tls-certificate</ds:X509Certificate>
           </ds:X509Data>
         </ds:KeyInfo>s
       </md:KeyDescriptor>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
       <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="idp-sso-url"/>
       <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="idp-sso-url"/>
     </md:IDPSSODescriptor>
   </md:EntityDescriptor>
   ```

1. 將**自訂使用者 ID 屬性**欄位保持空白，以針對使用者名稱使用 SAML 聲明的 `NameID`元素。如果您的聲明不使用此標準元素，而是將使用者名稱作為自訂屬性，請在此處指定該屬性。屬性區分大小寫。僅支援單一使用者屬性。

   下列範例顯示 SAML 聲明中 `NameID` 的覆寫屬性：

   ```
   <saml2:Attribute Name="UserId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
     <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:type="xs:string">annie</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. (選用) 在 **Group attribute** (群組屬性) 欄位中指定自訂屬性，例如 `role` 或 `group`。僅支援單一群組屬性。沒有預設的群組屬性。如果未指定群組屬性，資料存取政策只能包含使用者主體。

   下列範例顯示 SAML 聲明中的群組屬性：

   ```
   <saml2:Attribute Name="department" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
       <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:type="xs:string">finance</saml2:AttributeValue>
   </saml2:Attribute>
   ```

1. 依預設，OpenSearch Dashboards 會在 24 小時後將使用者登出。您可以指定 **OpenSearch Dashboards 逾時**，將此值設定為 1 到 12 小時 (15 到 720 分鐘） 之間的任何數字。如果您嘗試將逾時設定為等於或小於 15 分鐘，您的工作階段將重設為一小時。

1. 選擇 **Create SAML provider** (建立 SAML 提供者)。

## 存取 OpenSearch Dashboards
<a name="serverless-saml-dashboards"></a>

設定 SAML 提供者之後，與該提供者相關聯的所有使用者和群組都可以導覽至 OpenSearch Dashboards 端點。Dashboards URL 具有所有集合`collection-endpoint/_dashboards/`的格式。 **

如果您已啟用 SAML，選取 中的連結會 AWS 管理主控台 引導您前往 IdP 選擇頁面，您可以在其中使用您的 SAML 登入資料登入。首先，使用下拉式清單選取身分提供者：

![\[OpenSearch login page with dropdown menu for selecting SAML Identity Provider options.\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/idpList.png)


然後使用 IdP 憑證登入。

如果您沒有啟用 SAML，選取 中的連結會 AWS 管理主控台 引導您以 IAM 使用者或角色身分登入，沒有 SAML 的選項。

## 授予 SAML 身分對集合資料的存取權
<a name="serverless-saml-policies"></a>

建立 SAML 提供者後，您仍然需要授予基礎使用者和群組對集合內資料的存取權。您可以透過[資料存取政策](serverless-data-access.md)授予存取權。在您提供使用者存取權之前，他們將無法讀取、寫入或刪除集合內的任何資料。

若要授予存取權，請建立資料存取政策，並在 `Principal` 陳述式中指定 SAML 使用者和/或群組 ID：

```
[
   {
      "Rules":[
       ...  
      ],
      "Principal":[
         "saml/987654321098/myprovider/user/Shaheen",
         "saml/987654321098/myprovider/group/finance"
      ]
   }
]
```

您可以授予對集合、索引或兩者的存取權。如果您希望不同的使用者擁有不同的許可，請建立多個規則。如需可用許可的清單，請參閱[支援的政策許可](serverless-data-access.md#serverless-data-supported-permissions)。如需有關如何格式化存取政策的資訊，請參閱[政策語法](serverless-data-access.md)。

## 建立 SAML 提供者 (AWS CLI)
<a name="serverless-saml-creating-api"></a>

若要使用 OpenSearch Serverless API 建立 SAML 提供者，請傳送 [CreateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateSecurityConfig.html) 請求：

```
aws opensearchserverless create-security-config \
    --name myprovider \
    --type saml \
    --saml-options file://saml-auth0.json
```

將包括中繼資料 XML 在內的 `saml-options` 指定為 .json 檔案中的鍵值映射。必須將中繼資料 XML 編碼為 [JSON 逸出字串](https://www.freeformatter.com/json-escape.html)。

```
{
   "sessionTimeout": 70,
   "groupAttribute": "department",
   "userAttribute": "userid",
   "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
   "metadata": "EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor\r\n\/EntityDescriptor"
}
```

**注意**  
（選用） 使用 設定自訂受眾限制 AWS CLI。如需詳細資訊，請參閱[建立 SAML 提供者 (AWS CLI)](#serverless-saml-creating-api)。

## 檢視 SAML 提供者
<a name="serverless-saml-viewing"></a>

下列 [ListSecurityConfigs](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListSecurityConfigs.html) 請求會列出您帳戶中的所有 SAML 提供者：

```
aws opensearchserverless list-security-configs --type saml
```

該請求會傳回所有現有 SAML 提供者的相關資訊，包括身分提供者產生的完整 IdP 中繼資料：

```
{
   "securityConfigDetails": [ 
      { 
         "configVersion": "MTY2NDA1MjY4NDQ5M18x",
         "createdDate": 1664054180858,
         "description": "Example SAML provider",
         "id": "saml/111122223333/myprovider",
         "lastModifiedDate": 1664054180858,
         "samlOptions": { 
            "groupAttribute": "department",
            "metadata": "EntityDescriptorxmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ...... ...IDPSSODescriptor\r\n/EntityDescriptor",
            "sessionTimeout": 120,
            "openSearchServerlessEntityId": "aws:opensearch:111122223333:app1",
            "userAttribute": "userid"
         }
      }
   ]
}
```

若要檢視特定提供者的相關詳細資訊 (包括未來更新的 `configVersion`)，請傳送 `GetSecurityConfig` 請求。

## 更新 SAML 提供者
<a name="serverless-saml-updating"></a>

若要使用 OpenSearch Serverless 主控台更新 SAML 提供者，請選擇 **SAML authentication** (SAML 身分驗證)、選取身分提供者，然後選擇 **Edit** (編輯)。您可以修改所有欄位，包括中繼資料和自訂屬性。

若要透過 OpenSearch Serverless API 更新提供者，請傳送 [UpdateSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityConfig.html) 請求，並包含要更新之政策的識別符。您還必須包含組態版本，您可以使用 `ListSecurityConfigs` 或 `GetSecurityConfig` 命令擷取該版本。將最新的版本納入其中，可確保您不會意外覆寫其他人所做的變更。

下列請求會更新提供者的 SAML 選項：

```
aws opensearchserverless update-security-config \
    --id saml/123456789012/myprovider \
    --type saml \
    --saml-options file://saml-auth0.json \
    --config-version MTY2NDA1MjY4NDQ5M18x
```

將 SAML 組態選項指定為 .json 檔案中的鍵值映射。

**重要**  
**SAML 選項的更新*不是*遞增處理的**。如果您在進行更新時未指定 `SAMLOptions` 物件中的參數值，則會以空白值覆寫現有值。例如，如果目前的組態包含 `userAttribute` 的值，然後您進行更新但不包含此值，則系統會將該值從組態中移除。透過呼叫 `GetSecurityConfig` 操作進行更新之前，請確保您知道現有值為何。

## 刪除 SAML 提供者
<a name="serverless-saml-deleting"></a>

刪除 SAML 提供者時，對資料存取政策中關聯使用者和群組的任何參考將不再有效。為避免混淆，建議您先移除存取政策中對端點的所有參考，然後再刪除該端點。

若要使用 OpenSearch Serverless 主控台刪除 SAML 提供者，請選擇 **Authentication** (身分驗證)、選取提供者，然後選擇 **Delete** (刪除)。

若要透過 OpenSearch Serverless API 刪除提供者，請傳送 [DeleteSecurityConfig](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_DeleteSecurityConfig.html) 請求：

```
aws opensearchserverless delete-security-config --id saml/123456789012/myprovider
```

# Amazon OpenSearch Serverless 的合規驗證
<a name="serverless-compliance-validation"></a>

在多個合規計畫中，第三方稽核人員會評估 Amazon OpenSearch Serverless 的安全性和 AWS 合規性。這些計劃包括 SOC、PCI 和 HIPAA。

若要了解 AWS 服務 是否在特定合規計劃範圍內，請參閱[AWS 服務 合規計劃範圍內](https://aws.amazon.com/compliance/services-in-scope/)然後選擇您感興趣的合規計劃。如需一般資訊，請參閱[AWS 合規計劃](https://aws.amazon.com/compliance/programs/)。

您可以使用 下載第三方稽核報告 AWS Artifact。如需詳細資訊，請參閱[下載報告 in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)

您使用 時的合規責任 AWS 服務 取決於資料的機密性、您公司的合規目標，以及適用的法律和法規。如需使用 時合規責任的詳細資訊 AWS 服務，請參閱 [AWS 安全文件](https://docs.aws.amazon.com/security/)。

# 標記 Amazon OpenSearch Serverless 集合
<a name="tag-collection"></a>

標籤可讓您將任意資訊指派給 Amazon OpenSearch Serverless 集合，以便對該資訊進行分類和篩選。*標籤*是您指派或 AWS 指派給 AWS 資源的中繼資料標籤。

每個標籤皆包含*鍵*與*值*。對於您指派的標籤，您可以定義索引鍵和值。例如，您可以將鍵定義為 `stage`，將資源的值定義為 `test`。

使用標籤，您可以識別和組織您的 AWS 資源。許多 AWS 服務支援標記，因此您可以將相同的標籤指派給來自不同 服務的資源，以指出資源相關。例如，您可以將相同標籤指派給您已指派給 Amazon OpenSearch Service 網域的 OpenSearch Serverless 集合。

在 OpenSearch Service 中，主要資源是集合。您可以使用 OpenSearch Service 主控台、 AWS CLI、OpenSearch Serverless API 操作或 AWS SDKs 來新增、管理和移除集合中的標籤。

## 必要許可
<a name="collection-tag-permissions"></a>

OpenSearch Serverless 使用下列 AWS Identity and Access Management Access Analyzer (IAM) 許可來標記集合：
+ `aoss:TagResource`
+ `aoss:ListTagsForResource`
+ `aoss:UntagResource`

# 標記集合 （主控台）
<a name="tag-collection-console"></a>

主控台是標記集合的最簡單方法。

****建立標籤 (主控台)****

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

1. 展開左側導覽窗格中的 **Serverless** (無伺服器)，然後選擇 **Collections** (集合)。

1. 選取您要新增標籤的集合，然後前往 **Tags** (標籤) 索引標籤。

1. 選擇 **Manage** (管理) 和 **Add new tag** (新增標籤)。

1. 輸入標籤索引鍵和選用的值。

1. 選擇**儲存**。

若要刪除標籤，請按照同樣的步驟進行，然後在 **Manage tags** (管理標籤) 頁面上選擇 **Remove** (移除)。

如需使用主控台處理標籤的詳細資訊，請參閱 《*AWS 管理主控台入門指南*》中的[標籤編輯器](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html)。

# 標記集合 (AWS CLI)
<a name="tag-collection-cli"></a>

若要使用 標記集合 AWS CLI，請傳送 [TagResource](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_TagResource.html) 請求：

```
aws opensearchserverless tag-resource
  --resource-arn arn:aws:aoss:us-east-1:123456789012:collection/my-collection 
  --tags Key=service,Value=aoss Key=source,Value=logs
```

使用 [ListTagsForResource](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_ListTagsForResource.html) 命令檢視集合的現有標籤：

```
aws opensearchserverless list-tags-for-resource
  --resource-arn arn:aws:aoss:us-east-1:123456789012:collection/my-collection
```

使用 [UntagResource](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UntagResource.html) 命令移除集合的標籤：

```
aws opensearchserverless untag-resource
  --resource-arn arn:aws:aoss:us-east-1:123456789012:collection/my-collection
  --tag-keys service
```

# Amazon OpenSearch Serverless 中支援的操作和外掛程式
<a name="serverless-genref"></a>

Amazon OpenSearch Serverless 支援各種 OpenSearch 外掛程式，以及 OpenSearch 中提供的索引編製、搜尋和中繼資料 [API 操作](https://opensearch.org/docs/latest/opensearch/rest-api/index/)的子集。您可以將許可包含在[資料存取政策](serverless-data-access.md)內資料表左欄中，以限制對特定操作的存取。

**Topics**
+ [支援的 OpenSearch API 操作與許可](#serverless-operations)
+ [支援的 OpenSearch 外掛程式](#serverless-plugins)

## 支援的 OpenSearch API 操作與許可
<a name="serverless-operations"></a>

下表列出 OpenSearch Serverless 支援的 API 操作及其對應的資料存取政策許可：


| 資料存取政策許可 | OpenSearch API 操作 | 描述和警告 | 
| --- | --- | --- | 
|  `aoss:CreateIndex`  | PUT <index> |  建立索引。如需詳細資訊，請參閱 [Create index](https://opensearch.org/docs/latest/api-reference/index-apis/create-index/) (建立索引)。  此許可也適用於在 OpenSearch Dashboards 上使用範例資料建立索引。   | 
|  `aoss:DescribeIndex`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  描述索引。如需詳細資訊，請參閱下列資源： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:WriteDocument`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  編寫和更新文件。如需詳細資訊，請參閱下列資源： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  僅允許對類型為 `SEARCH` 的集合執行某些操作。如需詳細資訊，請參閱[選擇集合類型](serverless-overview.md#serverless-usecase)。   | 
|  `aoss:ReadDocument`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  | 閱讀文件。如需詳細資訊，請參閱下列資源：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html) | 
|  `aoss:DeleteIndex`  | DELETE <target> | 刪除索引。如需詳細資訊，請參閱 [Delete index](https://opensearch.org/docs/latest/api-reference/index-apis/delete-index/) (刪除索引)。 | 
|  `aoss:UpdateIndex`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  更新索引設定。如需詳細資訊，請參閱下列資源： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:CreateCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html) | 
|  `aoss:DescribeCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  說明如何使用別名、索引和架構範本，以及管道。如需詳細資訊，請參閱下列資源： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:UpdateCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  | 更新別名、索引範本和架構範本。如需詳細資訊，請參閱下列資源：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html) \$1 取消佈建範本的 API。ML Commons 用戶端和 OpenSearch Serverless 服務會管理相依政策。  | 
|  `aoss:DeleteCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  刪除別名、索引和架構範本，以及管道。如需詳細資訊，請參閱下列資源： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:DescribeMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  描述 GET 和搜尋 APIs 以擷取模型和連接器的相關資訊。  | 
|  `aoss:CreateMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  提供建立 ML 資源的許可。  | 
|  `aoss:UpdateMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  提供更新現有 ML 資源的許可。  | 
|  `aoss:DeleteMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  提供刪除 ML 資源的許可。  | 
|  `aoss:ExecuteMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/serverless-genref.html)  |  提供執行模型的許可。  | 

## 支援的 OpenSearch 外掛程式
<a name="serverless-plugins"></a>

OpenSearch Serverless 集合會預先封裝來自 OpenSearch 社群的下列外掛程式。Serverless 會為您自動部署和管理外掛程式。

**分析外掛程式**
+  [ICU 分析](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-icu) 
+  [日文 (kuromoji) 分析](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-kuromoji)
+  [韓語 (Nori) 分析](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-nori) 
+  [語音分析](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-phonetic) 
+  [智慧型中文分析](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-smartcn) 
+  [Stempel 波蘭文分析](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-stempel)
+  [烏克蘭文分析](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-ukrainian)

**映射器外掛程式**
+  [映射器大小](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/mapper-size) 
+  [映射器 Murmur3](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/mapper-murmur3) 
+  [映射器註釋文字](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/mapper-annotated-text)

**指令碼編寫外掛程式**
+  [Painless](https://opensearch.org/docs/latest/api-reference/script-apis/exec-script/)
+  [運算式](https://opensearch.org/docs/latest/data-prepper/pipelines/expression-syntax/) 
+  [Mustache](https://mustache.github.io/mustache.5.html)

此外，OpenSearch Serverless 包含所有以模組形式提供的外掛程式。

# 監控 Amazon OpenSearch Serverless
<a name="serverless-monitoring"></a>

監控是維護 Amazon OpenSearch Serverless 及其他 AWS 解決方案可靠性、可用性和效能的重要部分。 AWS 提供下列監控工具來監看 OpenSearch Serverless、在發生錯誤時回報，並適時採取自動動作：
+ *Amazon CloudWatch* AWS 會即時監控您的 AWS 資源和您在 上執行的應用程式。您可以收集和追蹤指標、建立自訂儀板表，以及設定警示，在特定指標達到您指定的閾值時通知您或採取動作。

  例如，您可以讓 CloudWatch 追蹤 CPU 使用量或其他 Amazon EC2 執行個體指標，並在需要時自動啟動新的執行個體。如需詳細資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。
+ *AWS CloudTrail* 會擷取來自或代表 AWS 帳戶發出的 API 呼叫和相關事件。它會將日誌檔案交付到您指定的 Amazon S3 儲存貯體。您可以識別呼叫的使用者和帳戶 AWS、進行呼叫的來源 IP 地址，以及呼叫的時間。如需詳細資訊，請參閱[「AWS CloudTrail 使用者指南」](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。
+ *Amazon EventBridge* 提供近乎即時的系統事件串流，描述 OpenSearch Service 網域中的變更。您可以建立監控特定事件的規則，並在發生這些事件 AWS 服務 時觸發其他 中的自動動作。如需詳細資訊，請參閱[「Amazon EventBridge 使用者指南」](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

# 使用 Amazon CloudWatch 監控 OpenSearch Serverless
<a name="monitoring-cloudwatch"></a>

您可以使用 CloudWatch 監控 Amazon OpenSearch Serverless，CloudWatch 會收集原始資料並將該資料處理成可讀且近乎即時的指標。這些統計資料會保留 15 個月，以便您存取歷史資訊，並更清楚 Web 應用程式或服務的執行效能。

您也可以設定留意特定閾值的警示，當滿足這些閾值時傳送通知或採取動作。如需詳細資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

OpenSearch Serverless 會在 `AWS/AOSS` 命名空間中報告下列指標。


| 指標 | Description | 
| --- | --- | 
| ActiveCollection |  指出集合是否處於作用中狀態。值 1 表示集合處於 `ACTIVE` 狀態。系統會在成功建立集合時發出這個值，並在您刪除集合為止保持為 1。指標的值不能為 0。 **相關統計資料**：上限 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| DeletedDocuments |  已刪除的文件總數。 **相關統計資料**：平均數、總和 **維度**：`ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻率**：60 秒  | 
| IndexingOCU |  用於擷取收集資料的 OpenSearch 運算單位 OCUs) 數量。此指標適用於帳戶層級。僅代表不屬於任何集合群組的集合使用量。 **相關統計資料**：總和 **維度**：`ClientId` **頻率**：60 秒  | 
| IndexingOCU |  用於擷取收集資料的 OpenSearch 運算單位 OCUs) 數量。此指標適用於集合群組層級。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionGroupId`、`CollectionGroupName` **頻率**：60 秒  | 
| IngestionDataRate |  集合或索引的索引編製速率 (以每秒 GiB 為單位)。此指標僅適用於大量編製索引請求。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻率**：60 秒  | 
| IngestionDocumentErrors |  擷取集合或索引期間的文件錯誤總數。成功發出大量編製索引請求後，撰寫者會處理該請求，並針對請求內所有失敗的文件發出錯誤。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻率**：60 秒  | 
| IngestionDocumentRate |  文件擷取至集合或索引的每秒速率。此指標僅適用於大量編製索引請求。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻率**：60 秒  | 
| IngestionRequestErrors |  對集合發出大量編製索引請求錯誤的總數。當大量編製索引請求因任何原因 (例如驗證或可用性問題) 而失敗時，OpenSearch Serverless 會發出此指標。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| IngestionRequestLatency |  大量寫入集合操作的延遲 (以秒為單位)。 **相關統計資料**：下限、上限、平均數 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| IngestionRequestRate |  集合接收的大量寫入操作總數。 **相關統計資料**：下限、上限、平均數 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| IngestionRequestSuccess |  成功在集合中執行索引編製操作的總數。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| SearchableDocuments |  集合或索引中可搜尋文件的總數。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻率**：60 秒  | 
| SearchRequestErrors |  集合每分鐘的查詢錯誤總數。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| SearchRequestLatency |  針對集合完成搜尋操作所需的平均時間 (以毫秒為單位)。 **相關統計資料**：下限、上限、平均數 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| SearchOCU |  搜尋集合資料所用的 OpenSearch 運算單元 (OCU) 數量。此指標適用於帳戶層級。僅代表不屬於任何集合群組的集合使用量。 **相關統計資料**：總和 **維度**：`ClientId` **頻率**：60 秒  | 
| SearchOCU |  搜尋集合資料所用的 OpenSearch 運算單元 (OCU) 數量。此指標適用於集合群組層級。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionGroupId`、`CollectionGroupName` **頻率**：60 秒  | 
| SearchRequestRate |  集合每分鐘的搜尋請求總數。 **相關統計資料**：平均數、上限、總和 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 
| StorageUsedInS3 |  使用的 Amazon S3 儲存量，以位元組為單位。OpenSearch Serverless 會將索引資料儲存在 Amazon S3 中。您必須選擇一分鐘的期間，才能取得準確的值。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻率**：60 秒  | 
| VectorIndexBuildAccelerationOCU |  用於加速向量索引的 OpenSearch 運算單位 (OCU) 數量。 OCUs 此指標適用於集合層級。 **相關統計資料**：總和 **維度**：`ClientId`、 `CollectionId` **頻率**：60 秒  | 
| 2xx, 3xx, 4xx, 5xx |  產生指定 HTTP 回應碼 (2*xx*、3*xx*、4*xx*、5*xx*) 的集合請求數。 **相關統計資料**：總和 **維度**：`ClientId`、`CollectionId`、`CollectionName` **頻率**：60 秒  | 

# 使用 記錄 OpenSearch Serverless API 呼叫 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Amazon OpenSearch Serverless 已與 整合 AWS CloudTrail，此服務可提供使用者、角色或 AWS 服務在 Serverless 中採取之動作的記錄。

CloudTrail 會將 OpenSearch Serverless 的所有 API 呼叫擷取為事件。擷取的呼叫包括從 OpenSearch Service 主控台進行的「無伺服器」區段的呼叫，以及對 OpenSearch Serverless API 操作進行的程式碼呼叫。

如果您建立追蹤，就可以將 CloudTrail 事件持續交付到 Amazon S3 儲存貯體，包括 OpenSearch Serverless 的事件。即使您未設定追蹤，依然可以透過 CloudTrail 主控台中的**事件歷史記錄**檢視最新事件。

您可以利用 CloudTrail 收集的資訊來判斷向 OpenSearch Serverless 發出的請求，以及發出請求的 IP 地址、人員、時間和其他詳細資訊。

若要進一步了解 CloudTrail，請參閱[「AWS CloudTrail 使用者指南」](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)。

## CloudTrail 中的 OpenSearch Serverless 資訊
<a name="service-name-info-in-cloudtrail"></a>

當您建立帳戶 AWS 帳戶 時，您的 上會啟用 CloudTrail。當活動在 OpenSearch Serverless 中發生時，該活動會與**事件歷史記錄**中的其他 AWS 服務事件一起記錄在 CloudTrail 事件中。您可以在 中檢視、搜尋和下載最近的事件 AWS 帳戶。如需詳細資訊，請參閱[「使用 CloudTrail 事件歷史記錄檢視事件」](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

若要持續記錄 中的事件 AWS 帳戶，包括 OpenSearch Serverless 的事件，請建立追蹤。*線索*能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。依預設，當您在主控台中建立追蹤時，該追蹤會套用至所有的 AWS 區域。

線索會記錄 AWS 分割區中所有區域的事件，並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。此外，您可以設定其他 AWS 服務，以進一步分析和處理 CloudTrail 日誌中所收集的事件資料。如需詳細資訊，請參閱下列內容：
+ [建立追蹤的概觀](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支援的服務和整合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html)
+ [設定 CloudTrail 的 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [接收多個區域的 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收多個帳戶的 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

CloudTrail 會記錄所有 OpenSearch Serverles 動作，並會將這些動作記錄在 [OpenSearch Serverless API 參考](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html)中。例如，對 `CreateCollection`、`ListCollections` 以及 `DeleteCollection` 動作發出的呼叫會在 CloudTrail 日誌檔案中產生項目。

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷：
+ 是否使用根或 AWS Identity and Access Management (IAM) 使用者登入資料提出請求。
+ 提出該請求時，是否使用了特定角色或聯合身分使用者的暫時安全憑證。
+ 請求是否由其他 AWS 服務提出。

如需詳細資訊，請參閱 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

## CloudTrail 中的 OpenSearch Serverless 資料事件
<a name="cloudtrail-data-events"></a>

[資料事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)提供有關在資源上執行或在資源中執行的資源操作的資訊 （例如，搜尋或索引至 OpenSearch Serverless 集合）。這些也稱為資料平面操作。資料事件通常是大量資料的活動。根據預設，CloudTrail 不會記錄資料事件。CloudTrail **事件歷史記錄**不會記錄資料事件。

資料事件需支付額外的費用。如需 CloudTrail 定價的詳細資訊，請參閱 [AWS CloudTrail 定價](https://aws.amazon.com/cloudtrail/pricing/)。

您可以使用 CloudTrail 主控台 AWS CLI或 CloudTrail API 操作來記錄`AWS::AOSS::Collection`資源類型的資料事件。如需如何記錄資料事件的詳細資訊，請參閱 *AWS CloudTrail 使用者指南*中的[使用 AWS 管理主控台　記錄資料事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console)和[使用 AWS Command Line Interface記錄資料事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI)。

您可以設定進階事件選取器來篩選 `eventName`、`readOnly` 和 `resources.ARN` 欄位，以僅記錄對您重要的事件。如需這些欄位的詳細資訊，請參閱AWS CloudTrail API 參考**中的[https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)。

## 了解 OpenSearch Serverless Data Event 項目
<a name="understanding-data-event-entries"></a>

於下列範例中：
+ `requestParameters` 欄位包含對集合進行 API 呼叫的詳細資訊。它包含基本請求路徑 （不含查詢參數）。
+ `responseElements` 欄位包含狀態碼，指出您在修改資源時請求的結果。此狀態碼可協助您追蹤您的變更是否已成功處理或需要注意。
+ OpenSearch Serverless 只會針對成功完成 IAM 身分驗證的請求記錄 CloudTrail 資料事件。

**Example**  

```
 {
      "eventVersion": "1.11",
      "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE",
        "arn": "arn:aws::sts::111122223333:assumed-role/Admin/user-role",
        "accountId": "111122223333",
        "accessKeyId": "access-key",
        "userName": "",
        "sessionContext": {
          "sessionIssuer": {
            "type": "Role",
            "principalId": "AROA123456789EXAMPLE",
            "arn": "arn:aws:iam::111122223333:role/Admin",
            "accountId": "111122223333",
            "userName": "Admin"
          },
          "attributes": {
            "creationDate": "2025-08-15T22:57:38Z",
            "mfaAuthenticated": "false"
          },
          "sourceIdentity": "",
          "ec2RoleDelivery": "",
          "assumedRoot": ""
        },
        "identityProvider": "",
        "credentialId": ""
      },
      "eventTime": "2025-08-15T22:58:00Z",
      "eventSource": "aoss.amazonaws.com",
      "eventName": "Search",
      "awsRegion": "us-east-1",
      "sourceIPAddress": "AWS Internal",
      "userAgent": "python-requests/2.32.3",
      "requestParameters": {
        "pathPrefix": "/_search"
      },
      "responseElements": null,
      "requestID": "2cfee788-EXAM-PLE1-8617-4018cEXAMPLE",
      "eventID": "48d43617-EXAM-PLE1-9d9c-f7EXAMPLE",
      "readOnly": true,
      "resources": [
        {
          "type": "AWS::AOSS::Collection",
          "ARN": "arn:aws:aoss:us-east-1:111122223333:collection/aab9texampletu45xh77"
        }
      ],
      "eventType": "AwsApiCall",
      "managementEvent": false,
      "recipientAccountId": "111122223333",
      "eventCategory": "Data"
    }
  ]
}
```

## 了解 OpenSearch Serverless Management Events 項目
<a name="understanding-service-name-entries"></a>

追蹤是一種組態，能讓事件以日誌檔案的形式交付到您指定的 Amazon S3 儲存貯體。CloudTrail 日誌檔案包含一個或多個日誌項目。

事件代表來自任何來源的單一請求。其中包含了請求的動作、動作的日期和時間、請求參數等相關資訊。CloudTrail 日誌檔並非依公有 API 呼叫的堆疊追蹤排序，因此不會以任何特定順序出現。

下列範例顯示示範 `CreateCollection`動作的 CloudTrail 日誌項目。

```
{
   "eventVersion":"1.08",
   "userIdentity":{
      "type":"AssumedRole",
      "principalId":"AIDACKCEVSQ6C2EXAMPLE",
      "arn":"arn:aws:iam::123456789012:user/test-user",
      "accountId":"123456789012",
      "accessKeyId":"access-key",
      "sessionContext":{
         "sessionIssuer":{
            "type":"Role",
            "principalId":"AIDACKCEVSQ6C2EXAMPLE",
            "arn":"arn:aws:iam::123456789012:role/Admin",
            "accountId":"123456789012",
            "userName":"Admin"
         },
         "webIdFederationData":{
            
         },
         "attributes":{
            "creationDate":"2022-04-08T14:11:34Z",
            "mfaAuthenticated":"false"
         }
      }
   },
   "eventTime":"2022-04-08T14:11:49Z",
   "eventSource":"aoss.amazonaws.com",
   "eventName":"CreateCollection",
   "awsRegion":"us-east-1",
   "sourceIPAddress":"AWS Internal",
   "userAgent":"aws-cli/2.1.30 Python/3.8.8 Linux/5.4.176-103.347.amzn2int.x86_64 exe/x86_64.amzn.2 prompt/off command/aoss.create-collection",
   "errorCode":"HttpFailureException",
   "errorMessage":"An unknown error occurred",
   "requestParameters":{
      "accountId":"123456789012",
      "name":"test-collection",
      "description":"A sample collection",
      "clientToken":"d3a227d2-a2a7-49a6-8fb2-e5c8303c0718"
   },
   "responseElements": null,
   "requestID":"12345678-1234-1234-1234-987654321098",
   "eventID":"12345678-1234-1234-1234-987654321098",
   "readOnly":false,
   "eventType":"AwsApiCall",
   "managementEvent":true,
   "recipientAccountId":"123456789012",
   "eventCategory":"Management",
   "tlsDetails":{
      "clientProvidedHostHeader":"user.aoss-sample.us-east-1.amazonaws.com"
   }
}
```

# 使用 Amazon EventBridge 監控 OpenSearch Serverless 事件
<a name="serverless-monitoring-events"></a>

Amazon OpenSearch Service 與 Amazon EventBridge 整合，可通知您影響您的網域的特定事件。來自 AWS 服務的事件會以近乎即時的方式交付至 EventBridge。相同的事件也會傳送至 [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatchEvents.html)，或 Amazon EventBridge 的前身產品。您可以撰寫規則來指出您感興趣的事件，以及在事件符合規則時要採取哪些自動化動作。您可以自動啟用的動作範例包括下列項目：
+ 叫用 AWS Lambda 函數
+ 叫用 Amazon EC2 執行命令
+ 將事件轉傳至 Amazon Kinesis Data Streams
+ 啟用 AWS Step Functions 狀態機器
+ 通知 Amazon SNS 主題或 Amazon SQS 佇列

如需詳細資訊，請參閱 *Amazon EventBridge 使用者指南*中的 [Amazon EventBridge 入門](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)。

## 設定通知
<a name="monitoring-events-notifications"></a>

您可以使用[AWS 使用者通知](https://docs.aws.amazon.com/notifications/latest/userguide/what-is-service.html)，在發生 OpenSearch Serverless 事件時接收通知。事件是 OpenSearch Serverless 環境中變更的指標，例如當您達到 OCU 用量上限時。 Amazon EventBridge 會接收事件並將通知路由至 AWS 管理主控台 通知中心和您選擇的交付管道。當事件符合您指定的規則時，便會收到通知。

## OpenSearch 運算單位 (OCU) 事件
<a name="monitoring-events-ocu"></a>

OpenSearch Serverless 會將事件傳送至 EventBridge。

### 接近上限的 OCU 用量
<a name="monitoring-events-ocu-approaching-max"></a>

當您的搜尋或索引 OCU 用量達到容量限制的 75% 時，OpenSearch Serverless 會傳送此事件。您的 OCU 用量是根據您設定的容量限制和目前的 OCU 使用量來計算。

**範例**

以下是此類型 （搜尋 OCU) 的範例事件：

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "OCU Utilization Approaching Max Limit",
  "source": "aws.aoss",
  "account": "123456789012",
  "time": "2016-11-01T13:12:22Z",
  "region": "us-east-1",
  "resources": ["arn:aws:es:us-east-1:123456789012:domain/test-domain"],
  "detail": {
    "eventTime" : 1678943345789,
    "description": "Your search OCU usage is at 75% and is approaching the configured maximum limit."
  }
}
```

以下是此類型 （索引 OCU) 的範例事件：

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "OCU Utilization Approaching Max Limit",
  "source": "aws.aoss",
  "account": "123456789012",
  "time": "2016-11-01T13:12:22Z",
  "region": "us-east-1",
  "resources": ["arn:aws:es:us-east-1:123456789012:domain/test-domain"],
  "detail": {
    "eventTime" : 1678943345789,
    "description": "Your indexing OCU usage is at 75% and is approaching the configured maximum limit."
  }
```

### OCU 用量達到上限
<a name="monitoring-events-ocu-approaching-max"></a>

當您的搜尋或索引 OCU 用量達到容量限制的 100% 時，OpenSearch Serverless 會傳送此事件。您的 OCU 用量是根據您設定的容量限制和目前的 OCU 使用量來計算。

**範例**

以下是此類型 （搜尋 OCU) 的範例事件：

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "OCU Utilization Reached Max Limit",
  "source": "aws.aoss",
  "account": "123456789012",
  "time": "2016-11-01T13:12:22Z",
  "region": "us-east-1",
  "resources": ["arn:aws:es:us-east-1:123456789012:domain/test-domain"],
  "detail": {
    "eventTime" : 1678943345789,
    "description": "Your search OCU usage has reached the configured maximum limit."
  }
}
```

以下是此類型 （索引 OCU) 的範例事件：

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "OCU Utilization Reached Max Limit",
  "source": "aws.aoss",
  "account": "123456789012",
  "time": "2016-11-01T13:12:22Z",
  "region": "us-east-1",
  "resources": ["arn:aws:es:us-east-1:123456789012:domain/test-domain"],
  "detail": {
    "eventTime" : 1678943345789,
    "description": "Your indexing OCU usage has reached the configured maximum limit."
  }
}
```