

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

Amazon OpenSearch Serverless は、Amazon OpenSearch Service 用のオンデマンド自動スケーリング設定です。手動の容量管理を必要とするプロビジョニングされた OpenSearch ドメインとは異なり、OpenSearch Serverless コレクションはアプリケーションのニーズに基づいてコンピューティングリソースを自動的にスケーリングします。

OpenSearch Serverless は、低頻度、断続的、または予測不可能なワークロードに対して費用対効果の高いソリューションを提供します。アプリケーションの使用状況に基づいてコンピューティング容量を自動的にスケーリングすることで、コストを最適化します。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 もサポートしています。

現在、Serverless コレクションは、OpenSearch バージョン 2.17.x で動作しています。新しいバージョンがリリースされると、OpenSearch Serverless はコレクションを自動的にアップグレードして、新しい機能、バグ修正、パフォーマンス強化を組み込みます。

OpenSearch Serverless では OpenSearch オープンソーススイートと同じ取り込みオペレーションやクエリ API オペレーションがサポートされているため、既存のクライアントやアプリケーションを引き続き使用できます。OpenSearch Serverless を使用するには、クライアントでの OpenSearch 2.x との互換性が必要になります。詳細については、「[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 は、主に次の 2 つのユースケースをサポートしています。
+ **ログ分析** – ログ分析セグメントは、オペレーションインサイトとユーザーの行動に関するインサイトを得るために、マシン生成による大量の半構造化された時系列データを分析することに重点を置きます。
+ **全文検索** – 全文検索セグメントが、社内ネットワーク内のアプリケーション (コンテンツ管理システム、法的文書) や、e コマースウェブサイトのコンテンツ検索などのインターネット向けアプリケーションを強化します。

 コレクションを作成するときは、これらのユースケースのいずれかを選択します。詳細については、「[コレクションタイプを選択する](#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/ja_jp/opensearch-service/latest/developerguide/images/Serverless.png)


データインジェスト、検索、およびクエリの実行に必要な OpenSearch Serverless のコンピューティング性能は、OpenSearch Compute Unit (OCU) で測定されます。各 OCU は、6 GiB のメモリと対応する仮想 CPU (vCPU)、および Amazon S3 へのデータ転送を組み合わせたものです。各 OCU には、120 GiB のインデックスデータを保存するのに十分なホットエフェメラルストレージが含まれています。

最初のコレクションを作成すると、OpenSearch Serverless は 2 OCU (1 OCU はインデックス作成用、もう 1 OCU は検索用) をインスタンス化します。高可用性を確保するために、他のアベイラビリティーゾーンでスタンバイノードのセットも起動します。開発とテストの目的で、コレクションの **[冗長性を有効化]** 設定を無効にすることができます。これにより、2 つのスタンバイレプリカが排除され、2 つの OCU のみがインスタンス化されます。デフォルトでは、冗長アクティブレプリカが有効になっています。これは、アカウントの最初のコレクションのために合計で 4 つの OCU がインスタンス化されることを意味します。

これらの OCU は、すべてのコレクションエンドポイントにアクティビティがない場合でも存在します。後続のすべてのコレクションは、これらの OCU を共有します。同じアカウントで追加のコレクションを作成した場合、OpenSearch Serverless は、指定した[キャパシティー制限](serverless-scaling.md#serverless-scaling-configure)に従って、コレクションのサポートに必要な数だけ検索用と取り込み用の OCU を追加します。キャパシティーは、コンピューティング使用量の減少に伴ってスケールダウンされます。

これらの OCU に対する課金方法については、「[料金](#serverless-pricing)」を参照してください。

## コレクションタイプを選択する
<a name="serverless-usecase"></a>

OpenSearch Serverless は、主に次の 3 つのコレクションタイプをサポートしています。

**[時系列]** – 大量の半構造化マシン生成データをリアルタイムで分析し、運用、セキュリティ、ユーザー行動、およびビジネスパフォーマンスに関するインサイトを提供するログ分析セグメント。

**[検索]** – 社内ネットワーク内のアプリケーション (コンテンツ管理システム、法的ドキュメントレポジトリ) や、e コマースウェブサイト検索やコンテンツ検出などのインターネット向けアプリケーションをサポートする全文検索機能。

**[ベクトル検索]** – ベクトル埋め込みのセマンティック検索は、ベクトルデータ管理を簡素化し、機械学習 (ML) で拡張された検索エクスペリエンスを実現します。チャットボット、パーソナルアシスタント、不正検出などの生成 AI アプリケーションをサポートします。

コレクションを初めて作成するときに、コレクションタイプを選択します。

![\[Three collection type options: Time series, Search, and Vector search for different data use cases.\]](http://docs.aws.amazon.com/ja_jp/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 に保持されます

1 つの OCU は、6 GB の RAM、対応する vCPU、GP3 ストレージ、Amazon S3 へのデータ転送で構成されます。請求できる最小単位は、時間単位で 0.5 OCU. AWS bills OCU で、2 番目のレベルの詳細度があります。アカウントステートメントには、データ取り込み用のラベルと検索用のラベルが付いたコンピューティングのエントリが 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 は、コレクションをサポートするのに必要な処理能力とストレージに基づいて 1 OCU 単位で追加の OCU を追加します。コストを抑えるために、アカウントの OCU の最大数を設定できます。

**注記**  
一意の を持つコレクション AWS KMS keys は、他のコレクションと OCUs を共有できません。

OpenSearch Serverless は、ワークロードの変化に対応するために必要な最小限のリソースの使用を試みます。プロビジョニングされる OCU 数は随時変動し、正確ではありません。時間の経過とともに、OpenSearch Serverless が使用するアルゴリズムは、システム使用量をより最小限に抑えるよう継続的に改善します。

料金の詳細については、「[Amazon OpenSearch Service の料金表](https://aws.amazon.com/opensearch-service/pricing/)」を参照してください。

## サポートされている AWS リージョン
<a name="serverless-regions"></a>

OpenSearch Serverless は、OpenSearch Service AWS リージョン が利用可能な のサブセットで使用できます。サポートされているリージョンのリストについては、「*AWS 全般のリファレンス*」の「[Amazon OpenSearch Service エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html)」を参照してください。

## 制限事項
<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 ドメインから Serverless コレクションにデータを自動的に移行する方法はありません。ドメインからコレクションにデータを再インデックスする必要があります。
+ コレクションへのクロスアカウントアクセスはサポートされていません。他のアカウントからのコレクションを暗号化またはデータアクセスポリシーに含めることはできません。
+ カスタムの OpenSearch プラグインはサポートされていません。
+ 自動スナップショットは、OpenSearch Serverless コレクションでサポートされています。手動スナップショットはサポートされていません。詳細については、「[スナップショットを使用したコレクションのバックアップ](serverless-snapshots.md)」を参照してください。
+ クロスリージョン検索およびレプリケーションはサポートされていません。
+ 1 つのアカウントおよびリージョンで使用できるサーバーレスリソースの数には制限があります。「[OpenSearch Serverless のクォータ](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-limits-serverless)」を参照してください。
+ ベクトル検索コレクションのインデックスの更新間隔は約 60 秒です。検索コレクションと時系列コレクションのインデックスの更新間隔は約 10 秒です。
+ シャードの数、間隔の数、更新間隔は変更できず、OpenSearch サーバーレス によって処理されます。シャーディング戦略はコレクションタイプとトラフィックに基づいています。例えば、時系列コレクションでは、書き込みトラフィックのボトルネックに基づいてプライマリシャードをスケーリングします。
+ OpenSearch バージョン 2.1 までで利用可能な地理空間機能がサポートされています。

# OpenSearch Service と OpenSearch Serverless を比較する
<a name="serverless-comparison"></a>

OpenSearch Serverless は、プロビジョニングされた OpenSearch Service ドメインのそれぞれ対応する機能と比較すると、概念や機能の一部が異なります。例えば、重要な違いの 1 つは、OpenSearch Serverless にはクラスターやノードという概念がないことです。

次の表では、OpenSearch Serverless の重要な機能と概念が、プロビジョニングされた OpenSearch Service ドメインの同等の機能とどのように異なるかについて説明します。


| 機能 | OpenSearch Service | OpenSearch サーバーレス | 
| --- | --- | --- | 
|  **ドメインとコレクション**  |  インデックスは、事前にプロビジョニングされた 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)」を参照してください。  | 
|  「**請求**」  |  1 時間ごとの 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)を 1 つまたは複数作成してください。次に、これらのエンドポイントを[ネットワークポリシー](serverless-network.md)内に含めます。  | 
| SAML 認証 |  SAML 認証はドメインごとに有効にします。 詳細については、「[OpenSearch Dashboards の SAML 認証](saml.md)」を参照してください。  |  アカウントレベルで 1 つまたは複数の SAML プロバイダーを設定し、関連するユーザー ID とグループ 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 の検索コレクションを準備して、迅速に実行するための基本的な手順を説明します。検索コレクションを使用すると、内部ネットワーク内のアプリケーション、および e コマースウェブサイトの検索やコンテンツ検索などのインターネットに接続されたアプリケーションを強化できます。

ベクトル検索コレクションの使用方法については、「[ベクトル検索コレクションの使用](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)
**注記**  
`IndexName` には ASCII 文字のみを使用することをお勧めします。`IndexName` に ASCII 文字を使用しない場合、CloudWatch メトリクスの `IndexName` は、非 ASCII 文字の URL エンコード形式に変換されます。

## ステップ 1: アクセス許可を設定する
<a name="serverless-gsg-permissions"></a>

このチュートリアルを完了し、OpenSearch Serverless の使用を平常的に行うには、IAM による適切なアクセス許可が必要です。このチュートリアルでは、コレクションを作成し、アップロードしたデータの検索を行い、最後にそのコレクションを削除します。

ユーザーまたはロールには、以下の最低限の許可を含む [ID ベースのポリシー](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://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで **[Collections]** (コレクション) 、**[Create collection]** (コレクションを作成) を選択します。

1. コレクションに **movies** という名前を付けます。

1. コレクションタイプでは、**[Search]** (検索) を選択します。詳細については、「[Choosing a collection type](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html#serverless-usecase)」(コレクションタイプの選択) を参照してください。

1. **[セキュリティ]**で、**[標準作成]** を選択します。

1. **[暗号化]** で、**[ AWS 所有のキーを使用]** を選択します。これは、OpenSearch Serverless AWS KMS key がデータの暗号化に使用する です。

1. **[Network]** (ネットワーク) で、コレクションのネットワーク設定を行います。
   + アクセスタイプには、**[Public]** (パブリック) を選択します。
   + リソースタイプには、**[OpenSearch エンドポイントへのアクセスを有効にする]** と **[OpenSearch Dashboards へのアクセスを有効にする]** の両方を選択します。データのアップロードと検索に、OpenSearch Dashboards を使用するため、上記の両方を有効にする必要があります。

1. [**次へ**] を選択します。

1. **[Configure data access]** (データアクセスの設定) で、コレクションのアクセス設定をセットアップします。[データアクセスポリシー](serverless-data-access.md)により、コレクション内のデータに対し、ユーザーとロールがアクセスできるようになります。以下のチュートリアルの例では、*movies* コレクション内にあるデータのインデックス作成と検索に必要なアクセス許可を、1 人のユーザーに提供します。

   *movies* コレクションに対するアクセスを提供する単一のルールを作成します。このルールに、「**Movies collection access**」権という名前を付けます。

1. **[Add principals]** (プリンシパルを追加)、**[IAM users and roles]** (IAM ユーザーとロール) の順に選択し、OpenSearch Dashboards へのサインインとデータのインデックス作成に使用する IAM ユーザーを選択します。**[保存]** を選択します。

1. **[Index permissions]** (インデックス作成の許可) で、すべての許可を選択します。

1. [**次へ**] を選択します。

1. アクセスポリシーの設定では、**[Create a new data access policy]** (新しいデータアクセスポリシーとして作成する) を選択し、ポリシーに **[movies]** という名前を付けます。

1. [**次へ**] を選択します。

1. コレクションの設定を確認して、**[Submit]** (送信) を選択します。コレクションステータスが `Active` になるまで数分待機します。

## ステップ 3: データをアップロードして検索する
<a name="serverless-gsg-index"></a>

OpenSearch Serverless コレクションへのデータのアップロードには、[Postman](https://www.postman.com/downloads/) または cURL が使用できます。簡潔に言うと、これらの例では OpenSearch Dashboards** コンソール内の開発ツールを使用しています**。

**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* というインデックスを 1 つ作成するには、次のリクエストを送信します。

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

1. 1 つのドキュメントを *movies-index* にインデックスするには、次のリクエストを送信します。

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

1. OpenSearch Dashboards 内でデータを検索するためには、少なくとも 1 つのインデックスパターンを設定する必要があります。OpenSearch は、そのパターンを使用して、分析する対象のインデックスを特定します。左のナビゲーションパネルを開き、**[Stack Management]** (スタック管理)、**[Index Patterns]** (インデックスパターン) の順に選択してから、**[Create index pattern]** (インデックスパターンを作成) を選択します。このチュートリアルでは、*movies* と入力します。

1. [**次のステップ**] を選択してから、[**インデックスパターンの作成**] を選択します。パターンが作成されたら、`title` および `genre` などのさまざまなドキュメントフィールドを表示できます。

1. データの検索を開始するには、左のナビゲーションパネルを再度開き **[Discover]** (検出) を選択するか、開発ツールの[検索 API](https://opensearch.org/docs/latest/api-reference/search/) を使用します。

## エラー処理
<a name="serverless-gsg-data-plane-errors"></a>

インデックスおよび検索オペレーションを実行すると、次のエラーレスポンスが表示されることがあります。
+ `HTTP 507` – 内部サーバーエラーが発生したことを示します。このエラーは通常、OpenSearch コンピューティングユニット (OCU) がリクエスト量またはリクエストの複雑さによって過負荷状態になっていることを示します。OpenSearch Serverless は負荷を管理するために自動的にスケーリングされますが、追加のリソースのデプロイに遅延が生じる可能性があります。

  このエラーを軽減するには、エクスポネンシャルバックオフ再試行ポリシーを実装します。このアプローチにより、リクエストレートを一時的に低減させ、負荷を効果的に管理できます。詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[Retry behavior](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. [**削除**] を選択して、削除を確認します。

## 次の手順
<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 の*コレクション*とは、分析ワークロードを表す 1 つまたは複数のインデックスを論理的にグループ化したものです。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 の*コレクション*とは、分析ワークロードを表す 1 つまたは複数のインデックスを論理的にグループ化したものです。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` – 1 つまたは複数のコレクションに関する詳細情報を取得します。
+ `aoss:UpdateCollection` – コレクションを変更します。
+ `aoss:DeleteCollection` – コレクションを削除します。

次の ID ベースのアクセスポリシーのサンプルでは、ユーザーが `Logs` という名前の 1 つのコレクションを管理するのに必要な最小限のアクセス許可が付与されています。

```
[
   {
      "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 (機械学習) モデルインフラストラクチャと検索エンジンとの統合を管理するという差別化されていない手間が省けます。この機能は、検索、時系列、ベクトルの 3 つのサーバーレスコレクションタイプすべてで使用できます。

## セマンティック検索とは
<a name="serverless-semantic-enrichment-whats-is"></a>

 従来の検索エンジンは、クエリの結果を見つけるためにword-to-word一致 (辞書検索と呼ばれます) に依存しています。これはテレビのモデル番号などの特定のクエリに適していますが、より抽象的な検索には苦労します。例えば、「ビーチの靴」を検索する場合、辞書検索はカタログアイテム内の個々の単語「靴」、「ビーチ」、「for」、「the」に一致するだけで、正確な検索語を含まない「耐水性サンドラル」や「surf" などの関連製品が欠落している可能性があります。

 セマンティック検索は、キーワードマッチングだけでなく、ユーザーの検索のインテントとコンテキストの意味を組み込んだクエリ結果を返します。例えば、ユーザーが「どのように頭を悩ますか」を検索すると、セマンティック検索システムが次の結果を返します。
+ 片頭痛の治療法
+ 疼痛管理技術
+ 市販の鎮痛剤 

## モデルの詳細とパフォーマンスベンチマーク
<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)を使用して最適化されています。検索クエリは、スパースモデルを介して処理されるのではなく、単にトークン化されるため、ソリューションのコスト効率とパフォーマンスの両方が向上します。

 機能開発中のパフォーマンス検証では、平均 334 文字のパッセージを含む [MS MARCO](https://huggingface.co/datasets/BeIR/msmarco) パッセージ取得データセットを使用しました。関連性スコアリングについては、英語コンテンツの [BEIR](https://github.com/beir-cellar/beir) ベンチマークでは最初の 10 件の検索結果 (ndcg@10) の平均正規化割引累積ゲイン (NDCG) を、多言語コンテンツの MIRACL では平均 ndcg@10 を測定しました。クライアント側の 90 パーセンタイル (p90) 測定値と検索レスポンス p90 が[値を取り、レイテンシーを評価しました。](https://github.com/beir-cellar/beir)これらのベンチマークは、検索の関連性と応答時間の両方のベースラインパフォーマンス指標を提供します。主なベンチマーク番号は次のとおりです - 
+ 英語 - 辞書検索と比べて関連性が 20% 向上しました。また、辞書検索よりも P90 検索レイテンシーが 7.7% 低下しました (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 コンソールでは、自動セマンティックエンリッチメントフィールドを使用してインデックスを簡単に作成できます。コレクションを選択すると、コンソールの上部にインデックス作成ボタンが表示されます。インデックスの作成ボタンをクリックすると、自動セマンティックエンリッチメントフィールドを定義するオプションが表示されます。1 つのインデックスでは、英語と多言語の自動セマンティックエンリッチメントの組み合わせと、辞書フィールドを組み合わせることができます。

![\[alt text not found\]](http://docs.aws.amazon.com/ja_jp/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] \
```

 次の index-schema の例では、 *title\$1semantic *フィールドのフィールドタイプを *text* に設定し、パラメータ *semantic\$1enrichment *を status *ENABLED* に設定します。*semantic\$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>

サービス API がプライベートコレクションにアクセスできるようにするには、サービス 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://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>

自動セマンティックエンリッチメントは、既存の「一致」クエリを、クエリの変更を必要とせずにセマンティック検索クエリに自動的に変換します。一致クエリが複合クエリの一部である場合、システムはクエリ構造を横断し、一致クエリを検索して、それらをニューラルスパースクエリに置き換えます。現在、この機能では、スタンドアロンクエリでも複合クエリの一部でも、「一致」クエリの置き換えのみがサポートされています。「multi\$1match」はサポートされていません。さらに、この機能は、ネストされた一致クエリを置き換えるすべての複合クエリをサポートします。複合クエリには、bool、Boosting、Constant\$1score、dis\$1max、 function\$1score、ハイブリッドなどがあります。

## 自動セマンティックエンリッチメントの制限
<a name="serverless-collection-ase-limitation"></a>

自動セマンティック検索は、映画のタイトル、製品説明、レビュー、概要など、自然言語コンテンツを含むsmall-to-medium規模のフィールドに適用すると最も効果的です。セマンティック検索はほとんどのユースケースの関連性を高めますが、特定のシナリオでは最適ではない場合があります。特定のユースケースに自動セマンティックエンリッチメントを実装するかどうかを決定するときは、以下の制限を考慮してください。
+ 非常に長いドキュメント – 現在のスパースモデルは、各ドキュメントの最初の 8,192 トークンのみを英語で処理します。多言語ドキュメントの場合、トークンは 512 個です。長い記事については、完全なコンテンツ処理を確保するためにドキュメントチャンキングの実装を検討してください。
+ ログ分析ワークロード – セマンティックエンリッチメントはインデックスサイズを大幅に増やします。これは、完全一致が通常十分であるログ分析には不要である可能性があります。セマンティックコンテキストを追加すると、増加したストレージ要件を正当化するのに十分なログ検索の有効性が向上することはめったにありません。
+ 自動セマンティックエンリッチメントは、派生ソース機能と互換性がありません。
+ スロットリング — インデックス推論リクエストは現在、OpenSearch Serverless では 100 TPS に制限されています。これはソフト制限です。より高い制限については AWS サポートにお問い合わせください。

## 料金
<a name="serverless-collection-ase-pricing"></a>

 OpenSearch Serverless は、インデックス作成時にスパースベクトル生成中に消費された OpenSearch コンピューティングユニット (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. [https://console.aws.amazon.com/aos/home/](https://console.aws.amazon.com/aos/home/) の Amazon OpenSearch Service コンソールに移動します。

1. 左側のナビゲーションペインで **[Serverless]** (サーバーレス) を展開し、**[Collections]** (コレクション) を選択します。

1. **[Create collection]** (コレクションの作成) を選択します。

1. コレクションの名前と説明を入力します。名前は次の基準を満たしている必要があります。
   + アカウントと に固有である AWS リージョン
   + 小文字の a～z、0～9 の数字、ハイフン (-) のみ含まれる
   + 3～32 文字

1. コレクションタイプを次の中から選択します。
   + **[Time series]** (時系列) – マシン生成の大量の半構造化データの分析に焦点を当てたログ分析セグメント。少なくとも 24 時間のデータはホットインデックスに保存され、残りはウォームストレージに残ります。
   + **[Search]** (検索) – 社内ネットワークのアプリケーションやインターネットに接続するアプリケーションに使用される全文検索。すべての検索データはホットストレージに保存され、クエリの応答時間を短縮できます。
**注記**  
「[コレクション設定を構成する](#serverless-create-console-step-2)」で説明されているように、自動セマンティック検索を有効にする場合は、このオプションを選択します。
   + **[ベクトル検索]** – ベクトルデータ管理を簡素化するベクトル埋め込みのセマンティック検索。機械学習 (ML) 拡張検索エクスペリエンスと、チャットボット、パーソナルアシスタント、不正行為検出などの生成 AI アプリケーションを強化します。

   詳細については、「[コレクションタイプを選択する](serverless-overview.md#serverless-usecase)」を参照してください。

1. **[デプロイタイプ]** で、コレクションの冗長性設定を選択します。デフォルトでは、各コレクションには冗長性があります。つまり、インデックス作成と検索の OpenSearch Compute Units (OCU) はそれぞれ異なるアベイラビリティーゾーンに独自のスタンバイレプリカを持っています。開発とテストの目的で、冗長性を無効にすることを選択できます。これにより、コレクション内の OCU の数を 2 つに減らすことができます。詳細については、「[仕組み](serverless-overview.md#serverless-process)」を参照してください。

1. **[セキュリティ]**で、**[標準作成]** を選択します。

1. **暗号化** では、データを暗号化する AWS KMS キーを選択します。入力したコレクション名が暗号化ポリシーで定義されているパターンと一致する場合、OpenSearch Serverless から通知があります。このマッチングを維持するか、独自の暗号化設定でオーバーライドするかを選択できます。詳細については、「[Amazon OpenSearch Serverless の暗号化](serverless-encryption.md)」を参照してください。

1. **[ネットワークアクセスの設定]** で、コレクションのネットワークアクセスを設定します。
   + **[アクセスタイプ]** で、[パブリック] または [プライベート] を選択します。

     プライベートを選択した場合、コレクションにアクセスできる VPC エンドポイントと AWS のサービス を指定します。
     + **[アクセス用の VPC エンドポイント]** – アクセスを許可する VPC エンドポイントを 1 つ以上指定します。VPC エンドポイントの作成については、「[を介したデータプレーンアクセス AWS PrivateLink](serverless-vpc.md)」を参照してください。
     + **AWS のサービス プライベートアクセス** – アクセスを許可する 1 つ以上のサポートされているサービスを選択します。
   + **[リソースタイプ]** では、ユーザーがコレクションにアクセスできるのは、*OpenSearch* エンドポイント経由か (cURL や Postman などを介して API 呼び出しを行う場合)、あるいは *OpenSearch Dashboards* エンドポイント経由か (ビジュアライゼーションを操作し、コンソールから API 呼び出しを行う場合)、もしくはその両方かを選択します。
**注記**  
AWS のサービス プライベートアクセスは、OpenSearch Dashboards エンドポイントではなく、OpenSearch エンドポイントにのみ適用されます。

   入力したコレクション名がネットワークポリシーで定義されているパターンと一致する場合、OpenSearch Serverless から通知があります。このマッチングを維持するか、カスタムネットワーク設定でオーバーライドするかを選択できます。詳細については、「[Amazon OpenSearch Serverless でのネットワークアクセス](serverless-network.md)」を参照してください。

1. (オプション) コレクションに 1 つまたは複数のタグを追加します。詳細については、「[Amazon OpenSearch Serverless コレクション](tag-collection.md)」を参照してください。

1. **[Next]** (次へ) を選択します。

## 追加の検索フィールドを設定する
<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. **[データ型]** は **[Text]** です。これを変更することはできません。

1. **[言語]** では、**[英語]** または **[多言語]** を選択します。

1. [**Add field (フィールドを追加)**] を選択します。

1. コレクションのオプションフィールドの設定が完了したら、**[次へ]** を選択します。変更を確認し、**[送信]** を選択してコレクションを作成します。

### 時系列検索フィールドを設定する
<a name="serverless-create-console-step-3-time-series-fields"></a>

**[時系列検索フィールド]** セクションのオプションは、時系列データとデータストリームに関連しています。これらのサブジェクトの詳細については「[Data Streams を用いた 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>

このセクションの手順では、 AWS CLIを使用して OpenSearch Serverless コレクションを作成します。

**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`は ARN `auto`ではなく です。

**重要**  
コレクション作成後は、データアクセスポリシーと一致しない限りアクセスできません。詳細については、「[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 に移動できます。Dashboards URL を確認するには、ナビゲーションペインで **[Collections]** (コレクション) を選択し、コレクションを選択して詳細ページを開きます。この URL の形式は、`https://dashboards.us-east-1.aoss.amazonaws.com/_login/?collectionId=07tjusf2h91cunochc` になります。URL に移動すると、Dashboards に自動的ログインします。

OpenSearch Dashboards URL が既にあるが、 にない場合は AWS マネジメントコンソール、ブラウザから Dashboards URL を呼び出すとコンソールにリダイレクトされます。 AWS 認証情報を入力すると、自動的に Dashboards にログインします。SAML のコレクションにアクセスする方法については、「[Accessing OpenSearch Dashboards with SAML](serverless-saml.md#serverless-saml-dashboards)」(SAML による OpenSearch Dashboards へのアクセス) を参照してください。

OpenSearch Dashboards コンソールのタイムアウトは 1 時間で、設定できません。

**注記**  
2023 年 5 月 10 日に、OpenSearch は、OpenSearch Dashboards の共通のグローバルエンドポイントを導入しました。今後は、`https://dashboards.us-east-1.aoss.amazonaws.com/_login/?collectionId=07tjusf2h91cunochc` の形式をとる URL を使って、ブラウザで OpenSearch Dashboards に移動できます。下位互換性を確保するため、形式 `https://07tjusf2h91cunochc.us-east-1.aoss.amazonaws.com/_dashboards` の、既存のコレクションに固有の OpenSearch 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 エンドポイントを含む 1 つまたは複数のコレクションに関する詳細情報を取得するには、[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. [**削除**] を選択して、削除を確認します。

を使用してコレクションを削除するには 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](https://opensearch.org/docs/latest/search-plugins/knn/index/) の k-近傍 (k-NN) 検索機能を利用しているため、サーバーレス環境のシンプルさの恩恵を受けながら、同じ機能を使用できます。エンジンは [k-NN プラグイン API](https://opensearch.org/docs/latest/search-plugins/knn/api/) をサポートしています。これらの操作により、全文検索、高度なフィルタリング、集計、地理空間クエリ、データの高速取得のためのネストされたクエリ、および拡張された検索結果を利用できます。

ベクトルエンジンは、ユークリッド距離、コサイン類似度、ドット積などの距離メトリクスを提供し、16,000 次元に対応できます。数値、ブール値、日付、キーワード、ジオポイントなどのさまざまなデータ型を持つフィールドを保存できます。また、保存されたベクトルにさらにコンテキストを追加するための説明情報用のテキストを含むフィールドを保存することもできます。データ型を同一場所に配置することで、複雑さが軽減され、保守性が向上するとともに、データの重複、バージョン互換性の問題、ライセンスの問題を回避できます。

**注記**  
以下の情報に注意してください。  
Amazon OpenSearch Serverless は、32 ビット浮動ベクトルと 16 ビットベクトル間の変換を実行するために使用できる Faiss 16 ビットスカラー量子化をサポートしています。詳細については、「[Faiss 16-bit scalar quantization](https://opensearch.org/docs/latest/search-plugins/knn/knn-vector-quantization/#faiss-16-bit-scalar-quantization)」を参照してください。バイナリベクトルを使用してメモリコストを削減することもできます。詳細については、「[Binary vectors](https://opensearch.org/docs/latest/field-types/supported-field-types/knn-vector#binary-vectors)」を参照してください。
Amazon OpenSearch Serverless では、ディスクベースのベクトル検索をサポートしています。ディスクベースのベクトル検索は、低メモリ環境のベクトルワークロードの運用コストを大幅に削減します。詳細については、「[Disk-based vector search](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) アクセス許可が必要です。このチュートリアルでは、コレクションを作成し、データをアップロードして検索を行い、最後にそのコレクションを削除します。

ユーザーまたはロールには、以下の最低限の許可を含む [ID ベースのポリシー](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://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで **[Collections]** (コレクション) 、**[Create collection]** (コレクションを作成) を選択します。

1. コレクションに **[housing]** という名前を付けます。

1. コレクションタイプで、**[ベクトル検索]** を選択します。詳細については、「[コレクションタイプを選択する](serverless-overview.md#serverless-usecase)」を参照してください。

1. **[デプロイのタイプ]** で、**[冗長性を有効化 (アクティブレプリカ)]** をオフにします。これにより、開発モードまたはテストモードでコレクションが作成され、コレクション内の OpenSearch Compute Units (OCU) の数が 2 に減ります。このチュートリアルで本番環境を作成する場合は、チェックボックスをオンのままにしてください。

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. 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>

*housing* コレクションはテスト用のため、テストを終了したら忘れずに削除してください。

**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. 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 を超える OCU が必要な場合は、[AWS サポート](https://aws.amazon.com/premiumsupport/)に問い合わせて、アカウントの最大 OpenSearch Compute Units (OCU) を引き上げてください。

## 制限事項
<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) でこのチュートリアルを参照してください。
+ OpenSearch をベクトルストアとして使用するように LangChain を設定します。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 はインデックスデータを無期限に保持します。

次のサンプルポリシーでは、最初のルールがコレクション `marketing` 内のすべてのインデックスに対して 15 日間の保持期間を指定します。2 番目のルールは、`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` – データライフサイクルポリシーを削除します。

次の ID ベースのアクセスポリシーにより、ユーザーはすべてのデータライフサイクルポリシーを表示し、リソースパターン `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>

ポリシー内またはポリシー間に、複数のデータライフサイクルポリシールールが同時に存在する場合があります。この場合、複数のルールに*共通する*インデックスが存在するのであれば、そのインデックスに対してより具体的なリソース名やパターンを持つルールのほうが、同じインデックスに対してより一般的なリソース名やパターンを持つルールよりも優先されます。

例えば、次のポリシーでは、1 つのインデックス `index/sales/logstash` に 2 つのルールが適用されます。この場合、`index/sales/log*` が `index/sales/logstash` に対する最長の一致なので 2 番目のルールが優先されます。そのため、OpenSearch Serverless はインデックスの保存期間を設定しません。

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

## ポリシー構文
<a name="serverless-lifecycle-syntax"></a>

1 つ以上の*ルール*を指定します。これらのルールは OpenSearch Serverless インデックスのデータライフサイクル設定を定義します。

各ルールには以下の要素が含まれます。`MinIndexRetention` または `NoMinIndexRetention` を指定できますが、両方を指定することはできません。


| Element | 説明 | 
| --- | --- | 
| リソースタイプ | ルールが適用されるリソースのタイプ。データライフサイクルポリシーでサポートされる唯一のオプションは index です。 | 
| [リソース]  | リソース名やパターンのリスト。パターンはプレフィックスとワイルドカード (\$1) で構成されており、関連付けられたアクセス許可を複数のリソースに適用することができます。例えば、index/<collection-name\$1pattern>/<index-name\$1pattern>。 | 
| MinIndexRetention | ドキュメントをインデックスに保持する最小期間: 日 (d) または時間 (h)。下限は 24h で、上限は 3650d です。 | 
| NoMinIndexRetention | true の場合、OpenSearch Serverless はドキュメントを無期限に保持します。 | 

次の例では、最初のルールが `autoparts-inventory` パターン (`index/autoparts-inventory/*`) のすべてのインデックスに適用され、削除やアーカイブなどのアクションが発生する前に、少なくとも 20 日間データを保持することを義務付けます。

2 番目のルールは、`auto*/gear` パターン (`index/auto*/gear`) に一致するインデックスをターゲットとし、最小保持期間を 24 時間に設定します。

3 番目のルールは特に `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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

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 の [opensearch-py](https://pypi.org/project/opensearch-py/) クライアントおよび [AWS SDK for Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/opensearchserverless.html) を使用して、暗号化、ネットワーク、データアクセスポリシーを作成します。また、一致するコレクションを作成し、いくつかのサンプルデータをインデックス化します。

必要な従属関係をインストールには、次のコマンドを実行します。

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

スクリプト内の `Principal` 要素を、リクエストに署名するユーザーまたはロールの Amazon リソースネーム (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 の [opensearch-js](https://www.npmjs.com/package/@opensearch-project/opensearch) クライアントおよび [SDK for JavaScript in Node.js](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-opensearchserverless/) を使用して、暗号化、ネットワーク、データアクセスポリシーを作成します。また、一致するコレクションおよびインデックスを作成して、いくつかのサンプルデータをインデックス化します。

必要な従属関係をインストールには、次のコマンドを実行します。

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

スクリプト内の `Principal` 要素を、リクエストに署名するユーザーまたはロールの Amazon リソースネーム (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 を使用して、コレクション、セキュリティポリシー、VPC エンドポイントなどの Amazon OpenSearch Serverless リソースを作成できます。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 コレクションのポイントインタイムバックアップです。OpenSearch Serverless は、コレクションのスナップショットを自動的に作成および管理し、ビジネス継続性とデータ保護を確保します。各スナップショットには、インデックスメタデータ (インデックスの設定とマッピング）、クラスターメタデータ (インデックステンプレートとエイリアス）、インデックスデータ (インデックスに保存されているすべてのドキュメントとデータ) が含まれます。

OpenSearch Serverless は、手動設定なしの自動時間単位バックアップ、メンテナンスオーバーヘッドなし、追加のストレージコストなし、偶発的なデータ損失からの迅速な復旧、スナップショットから特定のインデックスを復元する機能を提供します。

スナップショットを使用する前に、以下の重要な考慮事項を理解してください。スナップショットの作成には時間がかかり、瞬時には作成されません。スナップショット作成時の新しいドキュメントや更新は、スナップショットに含まれません。スナップショットは元のコレクションにのみ復元でき、新しいコレクションには復元できません。復元すると、インデックスは元のバージョンとは異なる新しい UUIDs を受け取ります。OpenSearch Serverless で既存のオープンインデックスに復元すると、新しいインデックス名またはプレフィックスパターンが指定されていない場合、そのインデックスのデータが上書きされます。これは OpenSearch コアの動作とは異なります。一度に実行できる復元オペレーションは 1 つだけであり、同じコレクションで複数の復元オペレーションを同時に開始することはできません。アクティブな復元オペレーション中にインデックスを復元しようとすると、オペレーションは失敗します。復元オペレーション中、インデックスへのリクエストは失敗します。

## 必要なアクセス許可
<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 は 1 時間ごとにスナップショットを自動作成します。ご自身では特に何もする必要はありません。各スナップショットには、コレクション内のすべてのインデックスが含まれます。OpenSearch Serverless がスナップショットを作成したら、次の手順を使用してスナップショットを一覧表示し、スナップショットの詳細を確認できます。

### スナップショットを一覧表示する
<a name="serverless-snapshots-listing"></a>

以下の手順に従って、コレクション内のすべてのスナップショットを一覧表示し、その詳細を確認します。

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

1. [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://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで、**サーバーレス**を選択し、**コレクション**を選択します。

1. コレクションの名前を選択して、詳細ページを開きます。

1. [**スナップショット**] タブを選択します。

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`を提供し、現在の状態`SUCCESS`または `status`を返し`IN_PROGRESS`、スナップショットオペレーションの完了にかかった時間`duration`を示し、スナップショットに含まれるインデックスの数`indexes`を返します。

## スナップショットからの復元
<a name="serverless-snapshots-restoring"></a>

スナップショットから復元すると、以前に取得したバックアップからデータが復元されます。このプロセスは、OpenSearch Serverless でのディザスタリカバリとデータ管理に不可欠です。復元する前に、復元されたインデックスには元のバージョンとは異なる UUIDs があり、OpenSearch Serverless の既存のオープンインデックスに復元すると、そのインデックスのデータが上書きされます。ただし、新しいインデックス名またはプレフィックスパターンが指定されていない場合、スナップショットは元のコレクションにのみ復元でき (コレクション間の復元はサポートされていません）、復元オペレーションはクラスターのパフォーマンスに影響するため、それに応じて計画してください。

バックアップされたインデックスをスナップショットから復元するには、次の手順に従います。

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

1. [https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで、**サーバーレス**を選択し、**コレクション**を選択します。

1. コレクションの名前を選択して、詳細ページを開きます。

1. **スナップショット**タブを選択して、使用可能なスナップショットを表示します。

1. 復元元のスナップショットを選択し、**スナップショットから復元**を選択します。

1. **スナップショットから復元**ダイアログで、次の操作を行います。
   + **スナップショット名**で、選択したスナップショット ID を確認します。
   + **スナップショットスコープ**では、次のいずれかを選択します。
     + **コレクション内のすべてのインデックス** - スナップショットからすべてのインデックスを復元する
     + **特定のインデックス** - 復元する個々のインデックスを選択する
   + **Destination** で、復元するコレクションを選択します。
   + (オプション) **名前変更設定**を設定して、復元されたインデックスの名前を変更します。
     + **名前を変更しない** - 元のインデックス名を保持する
     + **復元されたインデックス名にプレフィックスを追加する** - 競合を避けるためにプレフィックスを追加する
     + **正規表現を使用して名前を変更する** - 高度な名前変更パターンを使用する
   + (オプション) 復元が完了したとき、またはエラーが発生したときに通知されるように**通知**設定を構成します。

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`、1 から 6 までの設定可能な圧縮レベルを持つ および `zstd_no_dict`コーデックもサポートしています。

**重要**  
`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 は取り込まれた各ドキュメントを元の JSON ドキュメント本文を含む `_source`フィールドに格納し、検索する個々のフィールドのインデックスを作成します。`_source` フィールドは検索できませんが、取得や検索などのフェッチリクエストの実行時に完全なドキュメントが返されるように保持されます。派生ソースが有効になっている場合、OpenSearch Serverless は`_source`フィールドの保存をスキップし、代わりに検索、取得、mget、再インデックス、更新オペレーションなど、オンデマンドで動的に再構築します。派生ソース設定を使用すると、ストレージ使用量を最大 50% 削減できます。

## 設定
<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>

派生ソースを有効にすると、クエリレスポンスの生成と返される方法に特定の制限が課されます。
+ 複数の形式が指定されている日付フィールドは、元の取り込み形式に関係なく、リクエストされたすべてのドキュメントのリストの最初の形式を常に使用します。
+ ジオポイント値は固定`{"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 Compute Units (OCUs) を必要とせずにコストを削減します。

作成する各 OpenSearch Serverless コレクションは、 を使用して AWS KMS 保管中のデータの暗号化で保護され、暗号化キーを保存および管理します。同じコレクショングループ内のコレクションは、暗号化に異なる KMS キーを使用している場合でも、コンピューティングリソースと OCU メモリスペースを共有します。

コレクショングループは、セキュリティとパフォーマンスの要件を分離します。同じ KMS キーを持つコレクションを単一のコレクショングループにグループ化してセキュリティを分離したり、同じグループ内の異なる KMS キーとコレクションを組み合わせてコストを最適化したりできます。この柔軟性により、セキュリティ要件とリソース効率のバランスをとることができます。

コレクショングループにコレクションを追加すると、OpenSearch Serverless はそれをグループの共有コンピューティングリソースに割り当てます。システムは、指定された KMS キーを使用して各コレクションのデータを暗号化することで、セキュリティを維持しながら、これらのリソース間のワークロードの分散を自動的に管理します。アクセスコントロールは引き続きコレクションレベルで適用され、共有コンピューティングリソースは、グループ内のコレクションを提供するために必要に応じて複数の KMS キーにアクセスします。

リソースの割り当てを制御するには、コレクショングループレベルで最小 OCU 制限と最大 OCU 制限を設定します。これらの制限はグループ内のすべてのコレクションに適用され、一貫したパフォーマンスを確保しながらコストを管理するのに役立ちます。

デフォルトでは、コレクショングループ内のコレクション数、コレクション内のインデックス数、コレクショングループ内の OCUs 数のサービスクォータ (制限) があります。詳細については、[OpenSearch Serverless クォータ](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-limits-serverless)」を参照してください。

## 主要なコンセプト
<a name="collection-groups-concepts"></a>

コレクショングループ  
1 つ以上のコレクションのコンテナとして機能する AWS リソース。各コレクショングループには一意の識別子があり、独自の容量制限と構成設定を持つことができます。

共有コンピューティング  
同じコレクショングループ内のコレクションは、使用する KMS キーに関係なく、同じ OCUs のセットを共有します。この共有により、KMS キーごとに個別のコンピューティングリソースが不要になり、コストを削減できます。

容量制限  
コレクショングループレベルで、インデックス作成オペレーションと検索オペレーションの両方に最小 OCU 制限と最大 OCU 制限を設定できます。これらの制限は、コストを制御し、一貫したパフォーマンスを確保するのに役立ちます。

# コレクショングループの容量制限
<a name="collection-groups-capacity-limits"></a>

コレクショングループは、最小 OCU 制限と最大 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 制限と最大 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 制限と最大 OCU 制限を設定する場合、1、2、4、8、16、および 16 の倍数 (32、48、64、80、96 など) から最大 1,696 OCUs までの値のみを使用できます。

コレクショングループを作成する場合、最小 OCU 制限と最大 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 は、コレクショングループレベルで OCU 使用率と容量制限をモニタリングできるように、次の Amazon CloudWatch Logs メトリクスを 1 分間隔で出力します。
+ `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 制限を維持します。

キャパシティーの制限は、コレクショングループに少なくとも 1 つのコレクションが含まれている場合にのみ適用されます。空のコレクショングループは OCUsしたり、容量制限を適用したりしません。

スケーリングオペレーションが最大 OCU 制限を超えるか、最小 OCU 要件に違反する場合、OpenSearch Serverless は設定された制限への準拠を維持するためにオペレーションを拒否します。

# コレクショングループの暗号化と KMS キー
<a name="collection-groups-kms-keys"></a>

作成した各 OpenSearch Serverless コレクションは、 を使用して保管中のデータの暗号化で保護 AWS KMS され、暗号化キーを保存および管理します。コレクショングループを使用する場合、コレクションの KMS キーを指定する方法に柔軟性があります。

コレクションに関連付けられた KMS キーは、次の 2 つの方法で指定できます。
+ **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 制限と最大 OCU 制限を設定します。

## コレクショングループを作成する
<a name="collection-groups-create"></a>

次の手順を使用して、新しいコレクショングループを作成し、その設定を構成します。OpenSearch Serverless コンソール AWS CLI、または AWS SDKs を使用してコレクショングループを作成します。コレクショングループを作成するときは、容量制限やその他の設定オプションを指定します。

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

1. [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://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 に戻り、新しいコレクションの作成を開始します。

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://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[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://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://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションペインで、**サーバーレス**を選択し、**コレクションを選択します。**

1. **コレクショングループタブ**を選択します。アカウントのコレクショングループが表示されます。

1.  削除するコレクショングループ**の名前**を選択します。
**重要**  
コレクショングループからすべてのコレクションを削除するには、各コレクションを更新してコレクショングループの関連付けを削除するか、他のコレクショングループに移動します。

1. ページの上部で、[**削除**] を選択します。

1. 削除を確定し、**削除**を選択します。

------
#### [ AWS CLI ]
+ delete[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 Compute Units* (OCU) で測定されます。各 OCU は、6 GiB のメモリと対応する仮想 CPU (vCPU)、および Amazon S3 へのデータ転送を組み合わせたものです。OpenSearch Serverless の分離アーキテクチャの詳細については、「[仕組み](serverless-overview.md#serverless-process)」を参照してください。

最初のコレクションを作成すると、OpenSearch Serverless は冗長性の設定に基づいて OCU をインスタンス化します。デフォルトでは、冗長アクティブレプリカが有効になっているため、4 つの OCUs (インデックス作成用に 2 つ、検索用に 2 つ) がインスタンス化されます。これにより、別のアベイラビリティーゾーンのスタンバイノードで高可用性が確保されます。

開発とテストでは、コレクションの**冗長化**を有効にする設定を無効にすることができます。これにより、スタンバイレプリカが削除され、2 つの OCUs のみが使用されます (1 つはインデックス作成用、もう 1 つは検索用）。

これらの OCU は、インデックス作成や検索が行われていない場合でも常に存在します。後続のすべてのコレクションは、独自の OCUs セットをインスタンス化する一意の AWS KMS キーを持つコレクションを除き、これらの OCUs を共有できます。コレクショングループに関連付けられているすべてのコレクションは、同じ OCUs セットを共有できます。1 つのコレクショングループに含めることができるコレクションのタイプ (検索、時系列、またはベクトル検索) は 1 つだけです。詳細については、「[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 Big Data Blog* の「[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)」を参照してください。

**注記**  
ベクトル検索コレクションが*検索*コレクションまたは*時系列*コレクションと同じ KMS キーを使用している場合でも、ベクトル検索コレクションは OCU を*検索*コレクションおよび*時系列*コレクションと共有することはできません。最初のベクトルコレクション用に新しい OCU セットが作成されます。ベクトルコレクションの OCU は、同じ 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/ja_jp/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 です。3 種類のコレクションすべてにおいて、デフォルトの最大キャパシティは、インデックス作成用に 10 OCU、検索用に 10 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 Serverless と統合するには、クライアントが OpenSearch 2.x と互換性がある必要があります。

**Topics**
+ [必要な最小限のアクセス許可](#serverless-ingestion-permissions)
+ [OpenSearch Ingestion](#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"
      ]
   }
]
```

追加のインデックスに書き込む場合は、アクセス許可をより幅広く指定できます。例えば、1 つのターゲットインデックスを指定するのではなく、すべてのインデックス (index/*target-collection*/\$1) または一部のインデックス (index/*target-collection*/*logs\$1*) へのアクセス許可を付与することができます。

使用可能なすべての OpenSearch API オペレーションとそれに関連するアクセス許可のリファレンスについては、「[Amazon OpenSearch Serverless でサポートされているオペレーションとプラグイン](serverless-genref.md)」を参照してください。

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

OpenSearch サーバーレスコレクションにデータを直接送信する場合、サードパーティのクライアントを使用する代わりに Amazon OpenSearch Ingestion を使用できます。OpenSearch Ingestion にデータを送信するようにデータプロデューサーを設定すると、指定したコレクションにデータが自動的に送信されます。また、OpenSearch Ingestion で、送信前にデータを変換するように設定することもできます。詳細については、「[Amazon OpenSearch Ingestion の概要](ingestion.md)」を参照してください。

シンクとして設定されている OpenSearch Serverless コレクションに書き込みを行うときは、OpenSearch Ingestion パイプラインにアクセス権限が必要になります。これらのアクセス権限には、コレクションを記述しそこに 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>

OpenSearch Serverless コレクションにデータを取り込むために、[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 for Fluent Bit イメージのバージョン 2.30.0 以降が必要です。

**設定例**:

設定ファイルのこのサンプル出力セクションは、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 Developer Guide*」の「[Creating a Kinesis Data Firehose Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)」および「[Choose OpenSearch Serverless for Your Destination](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 *ドメイン*との重要な違いは、サービス名です (`es` ではなく `aoss`)。

```
// 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 *ドメイン*との重要な違いは、サービス名です (`es` ではなく `aoss`)。

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

この例では SDK for JavaScript in Node.js の [バージョン 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 ]

この例では SDK for JavaScript in Node.js の [バージョン 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>

OpenSearch Serverless コレクションにログを公開するときは、[Logstash OpenSearch プラグイン](https://github.com/opensearch-project/logstash-output-opensearch)を使用します。

**Logstash を使用して OpenSearch Serverless にデータを送信するには**

1. Docker または Linux を使用して [logstash-output-opensearch](https://github.com/opensearch-project/logstash-output-opensearch) プラグインのバージョン *2.0.0 以降*をインストールします。

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

   Docker は、OpenSearch 出力プラグイン ([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)) がプリインストールされた Logstash OSS ソフトウェアをホストしています。他のイメージと同じように次のようにイメージをプルできます。

   ```
   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 SDK はバージョン 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` 出力セクションに次の変更を加える必要があります。
   + `auth_type` の `service_name` として `aoss` を指定します。
   + `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 *ドメイン*との重要な違いは、サービス名です (`es` ではなく `aoss`)。

```
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 Service へのアクセスを提供します。これには、[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 リクエストを構築する場合に、OpenSearch Serverless コレクションへの[リクエストに署名](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)するときに適用されます。
+ サービス名を `aoss` として指定する必要があります。
+ `x-amz-content-sha256` ヘッダーは、すべての AWS 署名バージョン 4 リクエストに必要です。これにより、リクエストペイロードのハッシュが指定されます。リクエストペイロードがある場合は、その値をセキュアハッシュアルゴリズム (SHA) 暗号化ハッシュ (SHA256) に設定します。リクエストペイロードがない場合は、値を `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` に設定します。これは空の文字列のハッシュです。

**Topics**
+ [cURL でのインデックス作成](#serverless-signing-curl)
+ [Postman でのインデックス作成](#serverless-signing-postman)

### cURL でのインデックス作成
<a name="serverless-signing-curl"></a>

次のリクエスト例では、クライアント URL リクエストライブラリ (cURL) を使用して、コレクション内の `movies-index` という名前のインデックスに 1 つのドキュメントを送信します。

```
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/ja_jp/opensearch-service/latest/developerguide/images/ServerlessPostman.png)


# Amazon OpenSearch Serverless で機械学習を設定する
<a name="serverless-configure-machine-learning"></a>

## 機械学習
<a name="serverless-configure-machine-learning-what-is"></a>

機械学習 (ML) は、ML アルゴリズムとリモートモデルの形式で ML 機能を提供します。これらのモデルにアクセスすることで、RAG やセマンティック検索など、いくつかの AI ワークフローを実行できます。ML は、コネクタで設定できる最新の外部ホストモデルを使用して、生成 AI ユースケースの実験と本番デプロイをサポートします。コネクタを設定した後は、それをモデルに設定してから、デプロイして予測を実行する必要があります。

## Connector
<a name="serverless-configure-machine-learning-connectors"></a>

コネクタは、サードパーティーの ML プラットフォームでホストされているモデルへのアクセスを容易にします。OpenSearch クラスターとリモートモデル間のゲートウェイとして機能します。詳細については、次のドキュメントを参照してください。
+ 「*OpenSearch ドキュメント*」ウェブサイトの「[Creating connectors for third-party ML platforms](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)
**重要**  
信頼ポリシーを作成するときは、OpenSearch Service の原則として **ml.opensearchservice.amazonaws.com** を追加します。
ポリシーでドメインを設定する方法を表示する「[コネクタ](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 for AWS のサービス](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-amazon-connector.html) および [Connectors for external platform](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ml-external-connector.html) に適用されます。
コレクションエンドポイントへの SigV4 リクエストで、サービス名を **es** ではなく **aoss** に設定します。

## モデル
<a name="serverless-configure-machine-learning-models"></a>

モデルは、さまざまな AI ワークフローで使用される主要な機能です。通常、コネクタを使用して予測を実行するために、コネクタをモデルに関連付けます。モデルがデプロイされた状態になったら、予測を実行できます。詳細については、「*OpenSearch ドキュメント*」ウェブサイトの「[Register a model hosted on a third-party platform](https://docs.opensearch.org/latest/ml-commons-plugin/api/model-apis/register-model/#register-a-model-hosted-on-a-third-party-platform)」を参照してください。

**注記**  
ローカルモデルなど、すべてのモデル機能が OpenSearch Serverless でサポートされているわけではありません。詳細については、「[サポートされていない機械学習 API と機能](serverless-machine-learning-unsupported-features.md)」を参照してください。

## 機械学習のアクセス許可を設定する
<a name="serverless-configure-machine-learning-permissions"></a>

次のセクションでは、機械学習 (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** – モデルに対して予測を実行するアクセス許可を付与します。

# サポートされていない機械学習 API と機能
<a name="serverless-machine-learning-unsupported-features"></a>

## サポートされていない API
<a name="serverless-unsupported-ml-api"></a>

Amazon OpenSearch Serverless では、次の機械学習 (ML) API はサポートされていません。
+ ローカルモデル機能
+ モデルトレーニング API
+ モデル予測アルゴリズム API
+ モデルバッチ予測 API
+ エージェント API とそれに対応するツール
+ MCP サーバー API
+ メモリ API
+ コントローラー API
+ アルゴリズム API を実行する
+ ML プロファイル AP
+ ML 統計 API

ML API の詳細については、「*OpenSearch ドキュメント*」ウェブサイトの「[ML APIs](https://docs.opensearch.org/latest/ml-commons-plugin/api/index/)」を参照してください。

## サポートされていない 機能
<a name="serverless-unsupported-ml-features"></a>

以下の ML 機能は、Amazon OpenSearch Serverless ではサポートされていません。
+ エージェントとツール
+ ローカルモデル
+ 検索パイプラインと取り込みパイプライン内の 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>

## Neural Search
<a name="serverless-configure-neural-search-what-is"></a>

Amazon OpenSearch Serverless は、データに対するセマンティック検索オペレーション向けにニューラル検索機能をサポートしています。ニューラル検索は、機械学習モデルを使用してクエリのセマンティックの意味とコンテキストを理解し、従来のキーワードベースの検索よりも関連性の高い検索結果を提供します。このセクションでは、必要なアクセス許可、サポートされているプロセッサ、標準の OpenSearch 実装との主な違いなど、OpenSearch Serverless でニューラル検索を設定する方法について説明します。

ニューラル検索の使用により、データに対してセマンティック検索を実行できます。セマンティック検索では、セマンティックな意味合いを考慮して検索クエリの意図を理解します。この機能は、次のコンポーネントを利用しています。
+ テキスト埋め込み取り込みパイプラインプロセッサ
+ ニューラルクエリ
+ ニューラルスパースクエリ

## ハイブリッド検索
<a name="serverless-configure-hybrid-search"></a>

ハイブリッド検索を使用してキーワード検索機能とセマンティック検索の各機能を組み合わせることで、検索の関連性を向上させることができます。ハイブリッド検索を使用するには、検索結果を処理しドキュメントスコアを組み合わせるための検索パイプラインを作成します。詳細については、「*OpenSearch のドキュメント*」ウェブサイトの「[Search pipelines](https://docs.opensearch.org/latest/search-plugins/search-pipelines/index/)」を参照してください。ハイブリッド検索を実装するには、次のコンポーネントを使用します。
+ 正規化検索パイプラインプロセッサ

**サポートされている正規化手法**
  + `min_max`
  + `l2`

**サポートされている組み合わせ手法**
  + `arithmetic_mean`
  + `geometric_mean`
  + `harmonic_mean`

  正規化と組み合わせの手法の詳細については、「*OpenSearch のドキュメント*」ウェブサイトの「[Request body fields](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 のドキュメント*」ウェブサイトの「[Neural query](https://docs.opensearch.org/latest/query-dsl/specialized/neural/)」を参照してください。

**Example : `hybrid`**  

```
"hybrid": {
      "queries": [
        array of lexical, neural, or combined queries
      ]
    }
```

詳細については、「*OpenSearch のドキュメント*」ウェブサイトの[「Hybrid query](https://docs.opensearch.org/latest/query-dsl/compound/hybrid/)」を参照してください。

Amazon OpenSearch Serverless でセマンティック検索コンポーネントを設定するには、「*OpenSearch のドキュメント*」ウェブサイトの「[Neural Search tutorial](https://docs.opensearch.org/latest/tutorials/vector-search/neural-search-tutorial/)」の手順に従います。次の重要な違いに注意してください。
+ OpenSearch Serverless はリモートモデルのみをサポートします。リモートでホストされたモデルにコネクタを設定する必要があります。リモートモデルをデプロイまたは削除する必要はありません。詳細については、「*OpenSearch のドキュメント*」ウェブサイトの「[Getting started with semantic and hybrid search](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 API へのアクセスを提供します。

以下に、ニューラル検索に必要なコレクションデータアクセスポリシーについて説明します。*プレースホルダー値*は、ユーザー固有の情報に置き換えてください。

**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* ウェブサイトの「[Automating configurations](https://docs.opensearch.org/docs/latest/automating-configurations/index/)」を参照してください。OpenSearch Serverless でワークフローを使用する場合は、次の重要な違いを考慮してください。
+ OpenSearch Serverless は、ワークフローステップでリモートモデルのみを使用します。これらのモデルをデプロイする必要はありません。
+ OpenSearch Serverless は、**再インデックス**ワークフローステップをサポートしていません。
+ 別の API コールを実行した後に**ワークフロー**や**ワークフロー状態**を検索する場合、更新が表示されるまでに最大 15 秒のレイテンシーが予想されます。

OpenSearch Serverless コレクションは、OpenSearch UI アプリケーション内でデータソースとして使用される場合に限り、ワークフローをサポートします。詳細については、「[Managing data source associations](application-data-sources-and-vpc.md)」を参照してください。

## アクセス許可の設定
<a name="serverless-configure-workflows-permissions"></a>

テンプレートを作成してプロビジョニングする前に、必要なアクセス許可があることを確認してください。サポートが必要な場合は、アカウント管理者にお問い合わせください。OpenSearch Serverless ワークフローには、次のアクセス許可が必要です。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** – [機械学習の設定](serverless-configure-machine-learning.md)を使用するワークフローステップをプロビジョニングするアクセス許可を付与します。

# Amazon OpenSearch Serverless のセキュリティの概要
<a name="serverless-security"></a>

Amazon OpenSearch Serverless のセキュリティは、次の点で Amazon OpenSearch Service のセキュリティと根本的に異なります。


| 機能 | OpenSearch Service | OpenSearch サーバーレス | 
| --- | --- | --- | 
| データアクセスコントロール | きめ細かなアクセスコントロールと IAM ポリシーによりデータアクセスが決定します。 | データアクセスポリシーによりデータアクセスが決定します。 | 
| 保管時の暗号化 | ドメインについては、保管時の暗号化はオプションとなります。 | コレクションについては、保管時の暗号化は必須となります。 | 
| セキュリティの設定および管理者 | ネットワーク、暗号化、およびデータアクセスは、ドメインごとに個別に設定する必要があります。 | セキュリティポリシーを使用して、複数のコレクションのセキュリティ設定を大規模に管理できます。 | 

次の図は、機能的なコレクションを設定するセキュリティのコンポーネントを示しています。コレクションには、暗号化キー、ネットワークアクセス設定、リソースへのアクセス許可を付与するデータアクセスポリシーが割り当てられている必要があります。

![\[Diagram showing encryption, network, data access, and authentication policies for a collection.\]](http://docs.aws.amazon.com/ja_jp/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 所有のキー またはカスタマーマネージドキーで暗号化するかどうかを定義します。暗号化ポリシーは、**リソースパターン**と**暗号化キー**の 2 つの要素で構成されます。リソースパターンは、ポリシーが適用される 1 つまたは複数のコレクションを定義します。暗号化キーは、関連するコレクションを保護する方法を決定します。

ポリシーを複数のコレクションに適用するには、ポリシーのルールにワイルドカード (\$1) を含めます。例えば、次のポリシーは、名前が「logs」で始まるすべてのコレクションに適用されます。

![\[Input field for specifying a prefix term or collection name, with "logs*" entered.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-security-encryption.png)


暗号化ポリシーは、特にプログラムで行う場合に、コレクションの作成と管理のプロセスを効率化します。コレクションは名前を指定することで作成でき、作成時に暗号化キーが自動的に割り当てられます。

## ネットワークポリシー
<a name="serverless-security-network"></a>

[ネットワークポリシー](serverless-network.md)は、コレクションにプライベートでアクセスするか、パブリックネットワークからインターネット経由でアクセスするかを定義します。プライベートコレクションには、OpenSearch Serverless が管理する VPC エンドポイント、または*AWS のサービス プライベートアクセス*を使用して Amazon Bedrock などの特定の AWS のサービス からアクセスできます。ネットワークポリシーは、暗号化ポリシーと同様に複数のコレクションに適用できるため、多数のコレクションのネットワークアクセスを大規模に管理できます。

ネットワークポリシーは、**アクセスタイプ**と**リソースタイプ**の 2 つの要素で構成されます。アクセスタイプはパブリックでもプライベートでもかまいません。リソースタイプによって、選択したアクセスがコレクションエンドポイント、OpenSearch Dashboards エンドポイント、またはその両方に適用されるかが決まります。

![\[Access type and resource type options for configuring network policies in OpenSearch.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-security-network.png)


ネットワークポリシー内で VPC アクセスを設定する場合は、まず [OpenSearch Serverless マネージド VPC エンドポイント](serverless-vpc.md)を 1 つ以上作成する必要があります。これらのエンドポイントを使用すると、インターネットゲートウェイ、NAT デバイス、VPN 接続、または Direct Connect 接続を使用せずに、VPC 内にあるかのように OpenSearch Serverless にアクセスできます。

へのプライベートアクセス AWS のサービス は、コレクションの OpenSearch エンドポイントにのみ適用 AWS のサービス でき、OpenSearch Dashboards エンドポイントには適用されません。OpenSearch Dashboards へのアクセスを許可することはできません。

## データアクセスポリシー
<a name="serverless-security-data-access"></a>

[データアクセスポリシー](serverless-data-access.md)は、ユーザーがコレクション内のデータにアクセスする方法を定義します。データアクセスポリシーは、特定のパターンに一致するコレクションとインデックスにアクセス許可を自動的に割り当てることにより、大規模なコレクションを管理するのに役立ちます。複数のポリシーを単一のリソースに適用できます。

データアクセスポリシーはルールのセットで構成され、それぞれに 3 つの構成要素 (**リソースタイプ**、**付与されたリソース**、および**アクセス許可**のセット) があります。リソースタイプはコレクションでもインデックスでもかまいません。付与されたリソースは、コレクション名またはインデックス名、あるいはワイルドカード (\$1) 付きのパターンにすることができます。アクセス許可のリストは、ポリシーがアクセスを許可する [OpenSearch API オペレーション](serverless-genref.md#serverless-operations)を指定します。さらにポリシーには、アクセスを許可する IAM ロール、ユーザー、SAML ID を指定する**プリンシパル**のリストが含まれています。

![\[Selected principals and granted resources with permissions for collection and index access.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-data-access.png)


データアクセスポリシーの形式の詳細については、[ポリシー構文](serverless-data-access.md#serverless-data-access-syntax)を参照してください。

データアクセスポリシーを作成する前に、ポリシーでアクセスを提供するための、1 つ、または複数の IAM ロールもしくはユーザー、または SAML ID が必要です。詳細については、次のセクションを参照ください。

**注記**  
コレクションをパブリックアクセスからプライベートアクセスに切り替えると、OpenSearch Serverless コレクションコンソールの [インデックス] タブが削除されます。

## IAM および SAML 認証
<a name="serverless-security-authentication"></a>

 IAM プリンシパルおよび SAML ID は、データアクセスポリシーの構成要素の 1 つです。アクセスポリシーの `principal` ステートメントには、IAM ロール、ユーザー、および SAML ID を含めることができます。その後、関連するポリシールールで指定したアクセス許可がこれらのプリンシパルに付与されます。

```
[
   {
      "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"
      ]
   }
]
```

SAML 認証は、OpenSearch Serverless 内で直接設定します。詳細については、「[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 環境を設計するには、*「Security Pillar AWS Well‐Architected Framework*」の[「Infrastructure Protection](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 protocols and ciphers](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":"*"` など、より広範な ID ベースのポリシーを既に使用している場合は、この手順をスキップできます。ただし本番環境では、最小特権の原則に従い、作業を完了するのに最低限必要なアクセス許可を割り当てることをお勧めします。

このチュートリアルを完了するためには、適切な IAM のアクセス許可を持っている必要があります。ユーザーまたはロールには、以下の最低限の許可を含む [ID ベースのポリシー](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://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**」(books コレクションの暗号化ポリシー) と入力します。

1. **[Resources]** (リソース) に「**books**」と入力します。これがコレクションの名前になります。より広範囲にしたい場合は、アスタリスク (`books*`) を追加します。これにより「books」という単語で始まるすべてのコレクションにポリシーを適用できます。

1. **暗号化**では、**Use AWS owned key** を選択したままにします。

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**」(books コレクションのネットワークポリシー) と入力します。

1. **[ルール 1]** で、ルールに「**books コレクションのパブリックアクセス**」という名前を付けます。

1. このチュートリアルでは、わかりやすくするため *books* コレクションにパブリックアクセスを設定します。アクセスタイプには、**[Public]** (パブリック) を選択します。

1. コレクションには、OpenSearch Dashboards からアクセスします。ダッシュボードが機能するために、ダッシュボード*および* OpenSearch エンドポイントのネットワークアクセスを設定する必要があります。

   リソースタイプは、**[Access to OpenSearch endpoints]** (OpenSearch エンドポイントへのアクセス)と **[Access to OpenSearch Dashboards]** (OpenSearch Dashboardsへのアクセス) の両方を有効にします。

1. 両方の入力ボックスに、「**Collection Name = books**」(コレクション名 = books) と入力します。このように設定すると、ポリシーの範囲が狭くなり 1 つのコレクション (`books`) にのみ適用されるようになります。ルールは次のようになります。  
![\[Search interface showing two input fields for collection or prefix term selection, both set to "books".\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-tutorial-network.png)

1. **[作成]** を選択します。

## ステップ 4: データアクセスポリシーを作成する
<a name="gsg-data-access"></a>

コレクションのデータには、データアクセスを設定するまでアクセスできません。[データアクセスポリシー](serverless-data-access.md)は、ステップ 1 で設定した IAM ID ベースのポリシーとは別のものです。このポリシーでは、コレクション内の実際のデータにアクセスできます。

このチュートリアルでは、*books* コレクションへのデータのインデックス化に必要なアクセス許可を 1 人のユーザーに提供します。

**データアクセスポリシーを作成するには**

1. 左のナビゲーションペインで、**[Data access policies]** (データアクセスポリシー) を選択し、**[Create access policy]** (アクセスポリシーを作成) を選択します。

1. ポリシーに「**books-policy**」と名前を付けます。説明には、「**Data access policy for books collection**」(books コレクションのデータアクセスポリシー) と入力します。

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"
         ]
      }
   ]
   ```

   このポリシーは、*books* コレクション内のインデックス作成や一部のデータのインデックス化、および検索に必要な最低限のアクセス許可を 1 人のユーザーに提供します。

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]** (送信) を選択します。通常、コレクションの初期化には 1 分もかかりません。

## ステップ 6: データをアップロードおよび検索する
<a name="gsgindex-collection"></a>

OpenSearch Serverless コレクションへのデータのアップロードには、Postman または curl が使用できます。簡潔に言うと、これらの例では OpenSearch Dashboards** コンソール内の開発ツールを使用しています**。

**コレクション内のデータをインデックス化して検索するには**

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/ja_jp/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 内でデータを検索するためには、少なくとも 1 つのインデックスパターンを設定する必要があります。OpenSearch は、そのパターンを使用して、分析する対象のインデックスを特定します。Dashboards のメインメニューを開き、[**スタック管理**] を選択し、[**インデックスパターン**] を選択してから、[**インデックスパターンを作成する**] を選択します。このチュートリアルでは、「*books-index*」と入力します。

1. [**次のステップ**] を選択してから、[**インデックスパターンの作成**] を選択します。パターンが作成されたら、`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)で説明されている手順を説明しますが、OpenSearch Service コンソール AWS CLI ではなく を使用します。

このチュートリアルでは、次の手順を実行します。

1. IAM アクセス権限ポリシーを作成する

1. IAM ポリシーを IAM ロールにアタッチする

1. 暗号化ポリシーを作成する

1. ネットワークポリシーを作成する

1. コレクションを作成

1. データアクセスポリシーを設定する

1. コレクションエンドポイントを取得する

1. 接続にデータをアップロードする

1. コレクション内のデータを検索する

このチュートリアルの目的は、簡単な暗号化、ネットワーク、データアクセス設定がある 1 つの OpenSearch Serverless コレクションを設定することです。たとえば、パブリックネットワークアクセス、暗号化 AWS マネージドキー 用の 、および単一のユーザーに最小限のアクセス許可を付与する簡略化されたデータアクセスポリシーを設定します。

本番環境では、SAML 認証、カスタム暗号化キー、VPC アクセスなどのより強固な設定を実装することを検討してください。

**OpenSearch Serverless でセキュリティポリシーの使用を開始するには**

1. 
**注記**  
`Action":"aoss:*"` や `Action":"*"` など、より広範な ID ベースのポリシーを既に使用している場合は、この手順をスキップできます。ただし本番環境では、最小特権の原則に従い、作業を完了するのに最低限必要なアクセス許可を割り当てることをお勧めします。

   開始するには、このチュートリアルのステップを実行するために必要な最小限のアクセス許可を持つ 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. コレクション内でデータをインデックス化して検索する IAM ロールに `TutorialPolicy` をアタッチします。`TutorialRole` ユーザーに次のような名前を付けます。

   ```
   aws iam attach-role-policy \
     --role-name TutorialRole \
     --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
   ```

1. コレクションを作成する前に、後の手順で作成する *books* コレクションに AWS 所有のキー を割り当てる[暗号化ポリシー](serverless-encryption.md)を作成する必要があります。

   *books* コレクション用の暗号化ポリシーを作成するには、次のリクエストを送信します。

   ```
   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. *books* コレクションにパブリックアクセスを提供する[ネットワークポリシー](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. *books* コレクションを作成します。

   ```
   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. *books* コレクション内のデータをインデックス化して検索するための最小限のアクセス許可を付与する[データアクセスポリシー](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` は *books* コレクション内のドキュメントをインデックス化して検索できるはずです。

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* コレクションにインデックス化します。*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)
+ [ABAC と OpenSearch Serverless](#security_iam_serverless-with-iam-tags)
+ [OpenSearch Serverless での一時的な認証情報の使用](#security_iam_serverless-tempcreds)
+ [Amazon OpenSearch Serverless でのサービスにリンクされたロール](#security_iam_serverless-slr)
+ [その他のポリシータイプ](#security_iam_access-manage-other-policies)
+ [OpenSearch Serverless での ID ベースのポリシー例](#security_iam_serverless_id-based-policy-examples)
+ [IAM Identity Center による Amazon OpenSearch Serverless のサポート](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 での ID ベースのポリシー例
<a name="security_iam_id-based-policy-examples"></a>

OpenSearch Serverless での ID ベースのポリシー例については、「[OpenSearch Serverless での ID ベースのポリシー例](#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 での ID ベースのポリシー例については、「[OpenSearch Serverless での ID ベースのポリシー例](#security_iam_id-based-policy-examples)」を参照してください。

## OpenSearch Serverless のポリシーリソース
<a name="security-iam-serverless-id-based-policies-resources"></a>

**ポリシーリソースのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件**下で**アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\$1) を使用します。

```
"Resource": "*"
```

## Amazon OpenSearch Serverless のポリシー条件キー
<a name="security_iam_serverless-conditionkeys"></a>

**サービス固有のポリシー条件キーのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

`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)」を参照してください。

OpenSearch Serverless では、属性ベースのアクセス制御 (ABAC) に加えて、以下の条件キーをサポートしています。
+ `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)」を参照してください。条件キーの使用が可能なアクションおよびリソースついては、「[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 で定義されるアクション) を参照してください。

## ABAC と OpenSearch Serverless
<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)でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は**あり**です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「**部分的**」になります。

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)」および「[AWS のサービス と IAM との連携](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Amazon 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は、 の組織または組織単位 (OU) の最大アクセス許可を指定する JSON ポリシーです AWS Organizations。 AWS Organizations は、ビジネスが所有する複数の AWS アカウントをグループ化して一元管理するためのサービスです。組織内のすべての機能を有効にすると、サービスコントロールポリシー (SCP) を一部またはすべてのアカウントに適用できます。SCP は、各アカウントのルートユーザーを含む、メンバー AWS アカウントのエンティティのアクセス許可を制限します。Organizations と SCP の詳細については、「*AWS Organizations ユーザーガイド*」の「[サービスコントロールポリシー (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。
+ **リソースコントロールポリシー (RCP)** – RCP は、所有する各リソースにアタッチされた IAM ポリシーを更新することなく、アカウント内のリソースに利用可能な最大数のアクセス許可を設定するために使用できる JSON ポリシーです。RCP は、メンバーアカウントのリソースの許可を制限し、組織に属するかどうかにかかわらず、 AWS アカウントルートユーザーを含む ID のための有効な許可に影響を及ぼす可能性があります。RCP をサポートするサービスのリストを含む Organizations と RCP の詳細については、*AWS Organizations *RCPs[「リソースコントロールポリシー (RCPs](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)」を参照してください。 AWS 

## OpenSearch Serverless での ID ベースのポリシー例
<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)」を参照してください。

**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 アクセスアナライザー を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する** - IAM アクセスアナライザー は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 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 データプレーン API と OpenSearch Dashboards にブラウザからアクセスするときは、コレクションリソース用に 2 つの IAM アクセス権限を追加する必要があります。これらのアクセス権限は、`aoss:APIAccessAll` と `aoss:DashboardsAccessAll` です。

**注記**  
2023 年 5 月 10 日以降、OpenSearch Serverless では、コレクションリソースにこれら 2 つの新しい IAM 許可が必要になります。`aoss:APIAccessAll` のアクセス許可はデータプレーンアクセスを許可し、`aoss:DashboardsAccessAll` アクセス許可はブラウザから OpenSearch Dashboards を許可します。2 つの新しい IAM アクセス権限を追加しなかった場合、403 エラーが表示されます。

こちらのポリシー例では、アカウント内の指定されたコレクションの、データプレーン API へのアクセスと、アカウント内のすべてのコレクションの、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 データプレーン API へのアクセスの制御にタグを使用できます。以下のポリシーは、コレクションに `team:devops` タグがある場合に、アタッチされたプリンシパルがデータプレーン API にアクセスすることを許可する例です。

------
#### [ 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` タグがある場合に、アタッチされたプリンシパルがデータプレーン API およびダッシュボードにアクセスすることを拒否する例です。

------
#### [ 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 は、データプレーン API に対して `RequestTag` および `TagKeys` グローバル条件キーをサポートしていません。

# IAM Identity Center による Amazon OpenSearch Serverless のサポート
<a name="serverless-iam-identity-center"></a>

## IAM Identity Center による Amazon OpenSearch Serverless のサポート
<a name="serverless-iam-identity-support"></a>

IAM Identity Center のプリンシパル (ユーザーとグループ) を使用して、Amazon OpenSearch アプリケーションから Amazon OpenSearch Serverless データにアクセスできます。Amazon OpenSearch Serverless の IAM Identity Center に対するサポートを有効にするには、IAM Identity Center の使用を有効にする必要があります。これを行う方法の詳細については、「[What is 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 Center プロバイダーを削除します。

次のアイデンティティベースのアクセスポリシーを使用して、すべての 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 Application による認証を有効にできます。OpenSearch Dashboards の IAM アイデンティティセンター認証を有効にするには、以下の手順を実行します。

1. [[Amazon OpenSearch Service](https://console.aws.amazon.com/aos/home.)] コンソールにサインインします。

1. 左側のナビゲーションパネルで **[サーバーレス]** を展開し、**[認証]** を選択します。

1. **[IAM アイデンティティセンター認証]** を選択します。

1. **[編集]** を選択します。

1. [IAM アイデンティティセンターによる認証] の横にあるチェックボックスをオンにします。

1. ドロップダウンメニューから **[ユーザーとグループ]** 属性キーを選択します。ユーザー属性は、`UserName`、`UserId`、`Email` に基づいてユーザーを認可するために使用されます。グループ属性は、`GroupName` と `GroupId` に基づいてユーザーを認証するために使用されます。

1. **[IAM アイデンティティセンター]** インスタンスを選択します。

1. **[保存]** を選択します。

## IAM アイデンティティセンターのプロバイダーの作成 (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 アイデンティティセンターが有効化された後、お客様は**ユーザーとグループ**の属性のみ変更できます。

```
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 アイデンティティセンターのプロバイダーの削除
<a name="serverless-iam-identity-center-deleting"></a>

 IAM アイデンティティセンターには、プロバイダーのインスタンスが 2 つ用意されています。1 つは組織アカウント用、もう 1 つはメンバーアカウント用です。IAM アイデンティティセンターのインスタンスを変更する必要がある場合は、`DeleteSecurityConfig` API を使用してセキュリティ設定を削除し、新しい IAM アイデンティティセンターのインスタンスを使用して新しいセキュリティ設定を作成する必要があります。以下のコマンドを使用して、IAM アイデンティティセンターのプロバイダーを削除できます。

```
aws opensearchserverless delete-security-config \
--region us-east-1 \
--id <id_from_list_security_configs>
```

## IAM アイデンティティセンターに対するコレクションデータへのアクセス権の付与
<a name="serverless-iam-identity-center-collection-data"></a>

IAM アイデンティティセンターのプロバイダーが有効になった後は、コレクションのデータアクセスポリシーを更新して IAM アイデンティティセンターのプリンシパルを含めることができます。IAM アイデンティティセンターのプリンシパルは、以下の形式で更新する必要があります。

```
[
   {
"Rules":[
       ...  
      ],
      "Principal":[
         "iamidentitycenter/<iamidentitycenter-instance-id>/user/<UserName>",
         "iamidentitycenter/<iamidentitycenter-instance-id>/group/<GroupId>"
      ]
   }
]
```

**注記**  
Amazon OpenSearch Serverless は、すべてのお客様のコレクションに対して IAM アイデンティティセンターの 1 つのインスタンスのみをサポートし、1 人のユーザーに対して最大 100 個のグループをサポートできます。許可されたインスタンスの数を超えて使用しようとすると、データアクセスポリシーの認可処理に不整合が発生し、`403` エラーメッセージが表示されます。

アクセス権は、コレクション、インデックス、またはその両方に付与できます。ユーザーごとに異なる権限を持たせたい場合は、複数のルールを作成する必要があります。使用可能なアクセス許可のリストについては、「[Amazon OpenSearch Service での Identity and Access Management](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html)」を参照してください。アクセスポリシーをフォーマットする方法については、「[SAML ID に対するコレクションデータへのアクセス権の付与](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 ビットキーを使用した Advanced Encryption Standard アルゴリズム (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*` など) を指定するか、コレクション名を 1 つ入力します。次に、その名前またはプレフィックスパターンに一致するコレクションを作成すると、ポリシーとそれに対応する KMS キーが、そのコレクションに対し自動的に割り当てられます。

コレクションを作成するときは、セキュリティポリシーを使用するか、`CreateCollection`リクエスト内で直接行うかの 2 つの方法で AWS KMS キーを指定できます。`CreateCollection` リクエストの一部として AWS KMS キーを指定すると、一致するセキュリティポリシーよりも優先されます。このアプローチにより、必要に応じて特定のコレクションのポリシーベースの暗号化設定を柔軟に上書きできます。

![\[Encryption policy creation process with rules and collection matching to KMS key.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/serverless-encryption.png)


暗号化ポリシーには次の要素が含まれます。
+ `Rules` – 1 つ以上のコレクションマッチングルール。それぞれに次のサブ要素が含まれます。
  + `ResourceType` – 現在、選択できるオプションは「collection」のみです。暗号化ポリシーは、コレクションリソースにのみ適用されます。
  + `Resource` – ポリシーが適用される 1 つ以上のコレクション名またはパターンで、形式は `collection/<collection name|pattern>` です。
+ `AWSOwnedKey` – AWS 所有のキーを使用するかどうか。
+ `KmsARN` – `AWSOwnedKey` に「false」を設定する場合は、KMS キーの Amazon リソースネーム (ARN) を指定して、関連するコレクションを暗号化します。このパラメータを含めると、OpenSearch Serverless は `AWSOwnedKey` パラメータを無視します。

次のポリシー例では、`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"
}
```

ポリシーがコレクション名と一致していても、リソースパターンにワイルドカード (\$1) が含まれている場合には、コレクションの作成時にこの自動割り当てを上書きすることが可能です。キーの自動割り当てを上書きすることを選択した場合、OpenSearch Serverless はユーザーに代わり、**auto-<*collection-name*>** という名前の暗号化ポリシーを作成し、これを対象のコレクションにアタッチします。このポリシーは、初期状態では 1 つのコレクションにのみ適用されますが、他のコレクションを含めるように変更できます。

コレクションと一致しないようにポリシールールを変更しても、関連する KMS キーのコレクションに対する割り当ては、(自動的に) 解除されません。コレクションの暗号化には、常に初期の暗号化キーが使用されます。コレクションに対し異なる暗号化キーを使用した場合には、コレクションを再作成します。

1 つのコレクションに対し複数のポリシーのルールが一致する場合は、より詳細なルールが使用されます。例えば、あるポリシーに `collection/log*` のルールが含まれており、もう 1 つのポリシーには `collection/logSpecial` のルールが含まれている場合には、より詳細である 2 つ目のポリシーの暗号化キーが使用されます。

名前やプレフィックスが既に他のポリシーに含まれている場合、そのポリシーを使用することはできません。異なる暗号化ポリシーで同じリソースパターンを設定しようとすると、OpenSearch Serverless はエラーを表示します。

### 考慮事項
<a name="serverless-encryption-considerations"></a>

コレクションの暗号化を設定する際には、次の点を考慮してください。
+ すべての Serverless コレクションには、保存時の暗号化が*必須*です。
+ 使用するキーには、カスタマー管理キーと AWS 所有のキーのオプションがあります。カスタマー管理キーを使用する場合は、[自動キーローテーション](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)を有効にすることをお勧めします。
+ コレクションを作成後、そのコレクションの暗号化キーを変更することはできません。コレクションを初めてセットアップするときに AWS KMS 使用するものを慎重に選択します。
+ コレクションに適合できるのは、単一の暗号化ポリシーのみです。
+ 固有の KMS キーを持つコレクションは、他のコレクションとの間で、OpenSearch Compute Unit (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://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]** (リソース) に、この暗号化ポリシーに関する (1 つ以上の) リソースパターンを入力します。現在の AWS アカウント とリージョンにあり、新しく作成され、いずれかのパターンに一致しているコレクションが、自動的にこのポリシーに割り当てられます。例えば、`ApplicationLogs` と (ワイルドカードなしで) 入力し、後にその名前でコレクションを作成した場合、ポリシーおよび対応する KMS キーが、そのコレクションに対し割り当てられます。

   また、`Logs*` などのプレフィックスを指定して、名前が `Logs` で始まる任意の新しいコレクションに対し、ポリシーを割り当てることもできます。ワイルドカードを使用すると、複数のコレクションの暗号化設定を大規模に管理できます。

1. **[Encryption]** (暗号化) で、使用する KMS キーを選択します。

1. **[作成]** を選択します。

#### 次のステップ: コレクションを作成する
<a name="serverless-encryption-next"></a>

1 つ以上の暗号化ポリシーを設定したら、それらのポリシーで定義されているルールと一致するコレクションの作成を開始できます。手順については、「[コレクションの作成](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 オペレーションを使用して、リソースパターンの 1 つと一致するコレクションを 1 つまたは複数作成します。

### 暗号化ポリシーの表示
<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]** (編集) を選択します。変更を行ってから、**[保存]** を選択します。

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 では、コレクション内のすべてのパスは、業界標準の AES-256 暗号を使用した Transport Layer Security 1.2 (TLS) を使って、転送中に暗号化されます。Opensearch のすべての API と Dashboards へのアクセスも、TLS 1.2 を経由します。TLS は、ネットワーク上でやり取りされる情報の暗号化に使用される、業界標準の暗号化プロトコルのセットです。

# Amazon OpenSearch Serverless でのネットワークアクセス
<a name="serverless-network"></a>

Amazon OpenSearch Serverless コレクションでは、ネットワーク設定によって、そのコレクションに対しインターネット経由でパブリックネットワークからのアクセスが可能か、プライベートでアクセスする必要があるかが決まります。

プライベートアクセスは、次のいずれかまたは両方に適用できます。
+ OpenSearch Serverless マネージド VPC エンドポイント
+ Amazon Bedrock AWS のサービス などでサポートされる

コレクションでは、*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`) ごとに、一連のルールを指定し、ポリシーを適用する対象となるコレクションを定義します。

このポリシー例では、最初のルールで、語句 `marketing*` で始まるすべてのコレクションについて、コレクションエンドポイントとダッシュボードエンドポイントの両方で、VPC エンドポイントアクセスを使用するように指定しています。また、Amazon Bedrock アクセスも指定します。

**注記**  
Amazon Bedrock AWS のサービス などの へのプライベートアクセスは、コレクションの OpenSearch エンドポイント*にのみ*適用され、OpenSearch Dashboards エンドポイントには適用されません。`ResourceType` が であっても`dashboard`、OpenSearch Dashboards へのアクセスを許可 AWS のサービス することはできません。

2 番目のルールでは、`finance` コレクションに対してパブリックアクセスを指定していますが、これには、コレクションエンドポイントのみが使用されます (ダッシュボードからのアクセスは許可されません)。

```
[
   {
      "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 からのパブリックアクセスは、「finance」で始まるコレクションに対してのみ許可しています。OpenSearch API に直接アクセスする試みは、すべて失敗します。

```
[
  {
    "Description": "Dashboards access",
    "Rules": [
      {
        "ResourceType": "dashboard",
        "Resource": [
          "collection/finance*"
        ]
      }
    ],
    "AllowFromPublic": true
  }
]
```

ネットワークポリシーは、将来作成するコレクションだけでなく、既存のコレクションにも適用が可能です。コレクションを作成した後に、そのコレクション名と一致するルールを含むネットワークポリシーを作成できます。コレクションを作成する前に、必ずしもネットワークポリシーを用意しておく必要はありません。

## 考慮事項
<a name="serverless-network-considerations"></a>

コレクションのためにネットワークアクセスを設定する際は、以下の点を考慮してください。
+ コレクションのために VPC エンドポイントアクセスを設定する場合は、最初に、少なくとも 1 つの [OpenSearch Serverless マネージド VPC エンドポイント](serverless-vpc.md)を作成しておく必要があります。
+ へのプライベートアクセスは、OpenSearch Dashboards エンドポイントではなく、コレクションの OpenSearch エンドポイント AWS のサービス にのみ適用されます。`ResourceType` が であっても`dashboard`、OpenSearch Dashboards へのアクセスを許可 AWS のサービス することはできません。
+ パブリックネットワークからアクセスできるコレクションに対しては、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` – ネットワークアクセスポリシーを (すべてのコレクションからデタッチした後に) 削除します。

次の ID ベースのアクセスポリシーにより、ユーザーはすべてのネットワークポリシーを表示し、リソースパターン `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>

ポリシー内またはポリシー間に、複数のネットワークポリシールールが同時に存在する場合があります。この場合、パブリックアクセスを指定するルールとプライベートアクセスを指定するルールでは、(これら*両方*のルールに共通して適用されるコレクションにおいて) 前者のルールが優先されます。

例えば、次のポリシーでは、2 種類のルールが `finance` コレクションにネットワークアクセスを割り当てています。一方のルールでは VPC アクセスを、もう一方のルールではパブリックアクセスをそれぞれ指定しています。この場合、*finance コレクションでのみ*、パブリックアクセスは VPC アクセスをオーバーライドします (両方のルールに含まれるのがこのコレクションであるため)。つまり、finance コレクションにアクセスできるのは、パブリックネットワークからとなります。sales コレクションには、指定されたエンドポイントからの 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 エンドポイントが 1 つのコレクションに適用されている場合、これらのルールは追加的に認識され、指定されたすべてのエンドポイントから、そのコレクションへのアクセスが可能になります。`AllowFromPublic` を `true` に設定し、さらに 1 つ以上の `SourceVPCEs` または `SourceServices` を指定した場合には、OpenSearch Serverless により VPC エンドポイントは無視され、関連するコレクションにはパブリックアクセスが提供されます。

## ネットワークポリシーの作成 (コンソール)
<a name="serverless-network-console"></a>

ネットワークポリシーは、将来作成するコレクションだけでなく、既存のコレクションにも適用が可能です。コレクションの作成を開始する前に、ネットワークポリシーを作成しておくことをお勧めします。

**OpenSearch Serverless のネットワークポリシーを作成するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールを開きます。

1. 左側のナビゲーションパネルで **[Serverless]** (サーバーレス) を展開し、**[Network policie]** (ネットワークポリシー) を選択します。

1. **[Create network policy]** (ネットワークポリシーを作成) を選択します。

1. ポリシーの名前と説明を入力します。

1. 1 つ以上の*ルール*を指定します。これらのルールは、OpenSearch Serverless コレクションと、その OpenSearch Dashboards エンドポイントへのアクセス許可を定義しています。

   各ルールには以下の要素が含まれます。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-network.html)

   選択したリソースタイプごとに、ポリシー設定を適用する既存のコレクションを選択すること、および/または 1 つ以上のリソースパターンを作成することができます。リソースパターンはプレフィックスとワイルドカード (\$1) で構成され、ポリシー設定の適用対象となるコレクションを定義します。

   例えば、`Marketing*` というパターンを含めると、名前が「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 が機能するためには、同じソースからコレクションに対するアクセスも許可する必要があります。例については、以下に示す 2 番目のポリシーを参照してください。

プライベートアクセスを指定するには、次の要素の 1 つまたは両方を含めます。
+ `SourceVPCEs` – 1 つ以上の OpenSearch Serverless マネージド VPC エンドポイントを指定します。
+ `SourceServices` – サポートされている 1 つ以上の識別子を指定します 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
```

このリクエストは、設定されているすべてのネットワークポリシーに関する情報を返します。1 つの特定のポリシーで定義されているパターンルールを表示するには、レスポンスの `securityPolicySummaries` 要素の内容でポリシー情報を探します。このポリシーの `name` と `type` を書き留め、[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]** (編集) を選択します。変更を行ってから、**[保存]** を選択します。

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 は、連邦情報処理規格 (Federal Information Processing Standards/FIPS) 140-2 をサポートしています。これは、機密情報を保護する暗号モジュールのセキュリティ要件を規定する、米国およびカナダ政府の基準です。OpenSearch Serverless を使用して FIPS 対応エンドポイントに接続すると、FIPS 検証済み暗号化ライブラリを使用して暗号化オペレーションが行われます。

OpenSearch Serverless FIPS エンドポイントは、FIPS AWS リージョン がサポートされている で使用できます。これらのエンドポイントは、すべての通信に TLS 1.2 以降と FIPS 検証済み暗号化アルゴリズムを使用します。詳細については、「*AWS Verified Access ユーザーガイド*」の「[FIPS 準拠](https://docs.aws.amazon.com/verified-access/latest/ug/fips-compliance.html)」を参照してください。

**Topics**
+ [OpenSearch Serverless での FIPS エンドポイントの使用](#using-fips-endpoints-opensearch-serverless)
+ [AWS SDKs](#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 Verified Access ユーザーガイド*」の「[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 準拠エンドポイントの両方からアクセスできます。
+ **標準 Dashboards エンドポイント** – **https://*collection\$1id*.*AWS リージョン*.aoss.amazonaws.com/\$1dashboards**
+ **FIPS 準拠の Dashboards エンドポイント** – **https://*collection\$1id*.*AWS リージョン*.aoss-fips.amazonaws.com/\$1dashboards**

**注記**  
FIPS 対応リージョンでは、標準エンドポイントと FIPS 準拠エンドポイントの両方が FIPS 準拠の暗号化を提供します。FIPS 固有のエンドポイントは、名前に **FIPS** が使用されているエンドポイントの使用を特に義務付けるコンプライアンス要件を満たすのに役立ちます。

## AWS SDKs
<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) エンドポイントと適切に通信するには、セキュリティグループを作成または変更して、OpenSearch Serverless にアクセスする必要がある VPC 内のリソースからのインバウンド 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 オペレーションにエンドポイントを使用するには、「[OpenSearch Serverless での FIPS エンドポイントの使用](#using-fips-endpoints-opensearch-serverless)」セクションの説明に従って、リージョン FIPS エンドポイントを使用するように SDK を設定します。OpenSearch Dashboards にアクセスするには、コレクション固有の Dashboards URL を使用します。この URL は、VPC 内からアクセスすると、FIPS 準拠の VPC エンドポイントを自動的にルーティングします。詳細については、「[Amazon OpenSearch Service での OpenSearch Dashboards の使用](dashboards.md)」を参照してください。

## FIPS コンプライアンスを検証する
<a name="verifying-fips-compliance"></a>

OpenSearch Serverless への接続で FIPS 準拠の暗号化が使用されていることを確認するには、 AWS CloudTrail を使用して OpenSearch Serverless に対する API コールをモニタリングします。API コールについて、CloudTrail ログの `eventSource` フィールドに `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. Route 53 コンソール ([https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)) を開きます。

1. ホストゾーンを確認します。

   1. コレクションがあるホストゾーンを見つけ AWS リージョン ます。

   1. ホストゾーンの命名パターンを確認します。
      + 非 FIPS 形式: `region.aoss.amazonaws.com`。
      + FIPS 形式: `region.aoss-fips.amazonaws.com`。

   1. すべてのホストゾーンの **[タイプ]** が **[プライベートホストゾーン]** に設定されていることを確認します。

1. FIPS プライベートホストゾーンがない場合:

   1. 対応する非 FIPS プライベートホストゾーンを選択します。

   1. **[関連付けられた VPC]** 情報をコピーします。例: `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. **[関連付けられた VPC]** には、非 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 デベロッパーガイド*」の[「Private hosted zones](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted- zones-private.html)」および「*AWS PrivateLink ガイド*」の「[Manage DNS names](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 ユーザーガイド*」の「[Endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints- access.html#endpoint-dns-verification)」および「[DNS attributes](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc- dns-troubleshooting)」を参照してください。

1. セキュリティグループの設定を確認します。

   1. VPC エンドポイントにアタッチされたセキュリティグループが、リソースからの HTTPS トラフィック (ポート 443) を許可していることを確認します。

   1. リソースのセキュリティグループが VPC エンドポイントへのアウトバウンドトラフィックを許可していることを確認します。

   詳細については、「*AWS PrivateLink ガイド*」の「[Endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-security-groups)」、および「*Amazon VPC ユーザーガイド*」の「[Security groups](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html#SecurityGroupRules)」を参照してください。

1. ネットワーク ACL 設定を確認します。

   1. ネットワーク ACL によってリソースと 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 endpoint permissions required](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html#serverless-vpc-permissions)」および「[Endpoints policies](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)へのアクセスを提供できます。

アクセス許可は、コレクションとインデックスリソースに適用される*データアクセスポリシー*を通じて管理します。データアクセスポリシーは、特定のパターンに一致するコレクションとインデックスにアクセス許可を自動的に割り当てることにより、大規模なコレクションを管理するのに役立ちます。1 つのリソースに複数のデータアクセスポリシーを適用できます。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 アクセス許可は、`CreateCollection` や `ListAccessPolicies` などの[サーバーレス API オペレーション](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html)へのアクセスを制御します。データアクセスポリシーは、OpenSearch Serverless がサポートする `PUT <index>` や `GET _cat/indices` などの [OpenSearch オペレーション](#serverless-data-supported-permissions)へのアクセスを制御します。

`aoss:CreateAccessPolicy` や `aoss:GetAccessPolicy` (次のセクションで説明) などのデータアクセスポリシーの API オペレーションへのアクセスを制御する 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` – アクセスポリシーを削除します。

次の ID ベースのアクセスポリシーでは、ユーザーはすべてのアクセスポリシーを表示し、リソースパターン `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 | 説明 | 
| --- | --- | 
| ResourceType | アクセス許可が適用されるリソースのタイプ (コレクションまたはインデックス)。エイリアスとテンプレートのアクセス許可はコレクションレベルで、データの作成、変更、検索のアクセス許可はインデックスレベルです。詳細については、「[Supported policy permissions](#serverless-data-supported-permissions)」(サポートされているポリシーのアクセス許可) を参照してください。 | 
| Resource | リソース名やパターンのリスト。パターンはプレフィックスの後にワイルドカード (\$1) が続くもので、これによって関連付けられたアクセス許可を複数のリソースに適用できます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-data-access.html) | 
| Permission | 指定されたリソースに付与するアクセス許可のリスト。これによって許可されるアクセス許可とオペレーションの完全なリストについては、「[サポートされる OpenSearch API オペレーションとアクセス許可](serverless-genref.md#serverless-operations)」を参照してください。 | 
| Principal | アクセス権が付与される 1 つ以上のプリンシパルのリスト。プリンシパルは、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` を付与した場合、ユーザーには*両方*のアクセス許可が付与されます。3 番目のポリシーで同じユーザーに `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 には、独自のデータを追加する前に Dashboards を調べるのに役立つ、視覚化、ダッシュボード、その他ツールを備えた、[サンプルデータセット](https://opensearch.org/docs/latest/dashboards/quickstart-dashboards/#adding-sample-data)が用意されています。このサンプルデータからインデックスを作成するには、処理するデータセットへのアクセスを許可する、データアクセスポリシーが必要になります。次のポリシーでは、ワイルドカード (`*`) を使用して、3 つのサンプルデータセットすべてへのアクセスを許可します。

```
[
  {
    "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://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)を 1 つ、または複数選択します。
**注記**  
ドロップダウンメニューからプリンシパルを選択するには、`iam:ListUsers` および `iam:ListRoles` アクセス許可 (IAM プリンシパルの場合) および `aoss:ListSecurityConfigs` アクセス許可 (SAML ID の場合) が必要です。

1. **[Grant]** (付与) を選択し、エイリアス、テンプレート、およびインデックスのアクセス許可を選択して、関連するプリンシパルに付与します。アクセス許可とそれによって許可されるアクセスの完全なリストについては、「[サポートされる OpenSearch API オペレーションとアクセス許可](serverless-genref.md#serverless-operations)」を参照してください。

1. (オプション) ポリシーに追加のルールを設定します。

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
```

リクエストは、設定されているすべてのデータアクセスポリシーに関する情報を返します。1 つの特定のポリシーで定義されているパターンルールを表示するには、レスポンスの `accessPolicySummaries` 要素の内容でポリシー情報を探します。このポリシーの `name` と `type` を書き留め、[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]** (編集) を選択します。変更を行ってから、**[保存]** を選択します。

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>

クロスアカウント ID またはクロスアカウントコレクションを使用してデータアクセスポリシーを作成することはできませんが、ロールの引き受けオプションを使用してクロスアカウントアクセスを設定することもできます。例えば、`account-b` がアクセスする必要があるコレクションを `account-a` が所有している場合、`account-b` のユーザーは `account-a` でロールを引き受けることができます。ロールには IAM アクセス許可、`aoss:APIAccessAll` および `aoss:DashboardsAccessAll` があり、`account-a` のデータアクセスポリシーに含まれている必要があります。

# を介したデータプレーンアクセス AWS PrivateLink
<a name="serverless-vpc"></a>

Amazon OpenSearch Serverless は、コントロールプレーンとデータプレーンオペレーションの 2 種類の AWS PrivateLink 接続をサポートしています。コントロールプレーンオペレーションには、コレクションの作成と削除、アクセスポリシーの管理が含まれます。データプレーンオペレーションは、コレクション内のデータのインデックス作成とクエリに使用します。このページでは、データプレーン VPC エンドポイントについて説明します。コントロールプレーン AWS PrivateLink エンドポイントの詳細については、「」を参照してください[を介したコントロールプレーンアクセス AWS PrivateLink](serverless-vpc-cp.md)。

を使用して AWS PrivateLink 、VPC と Amazon OpenSearch Serverless の間にプライベート接続を作成できます。インターネットゲートウェイ、NAT デバイス、VPN 接続、または Direct Connect 接続を使用せずに、VPC 内にあるかのように OpenSearch Serverless にアクセスできます。VPC のインスタンスは、パブリック IP アドレスがなくても OpenSearch Serverless にアクセスできます。VPC ネットワークアクセスの詳細については、「[Network connectivity patterns for Amazon OpenSearch Serverless](https://aws.amazon.com/blogs/big-data/network-connectivity-patterns-for-amazon-opensearch-serverless/)」を参照してください。

このプライベート接続を確立するには、 AWS PrivateLinkを利用したインターフェイスエンドポイントを作成します。インターフェイスエンドポイントに指定した各サブネットに、エンドポイントネットワークインターフェイスを作成します。これらは OpenSearch Serverless に送信されるトラフィックのエントリポイントとして機能する、リクエスタマネージド型のネットワークインターフェイスです。

詳細については「*AWS PrivateLink ガイド*」の「[Access AWS のサービス through AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)」を参照してください。

**Topics**
+ [コレクションエンドポイントの DNS 解決](#vpc-endpoint-dnc)
+ [VPC とネットワークアクセスポリシー](#vpc-endpoint-network)
+ [VPC とエンドポイントポリシー](#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 エンドポイントが 1 つあれば、各  AWS リージョン のすべてのコレクションと Dashboards にアクセスできます。OpenSearch Serverless のエンドポイントを持つすべての VPC には、独自のプライベートホストゾーンがアタッチされています。

OpenSearch Serverless インターフェイスエンドポイントは、リージョン内のすべてのコレクションのパブリック Route 53 ワイルドカード DNS レコードも作成します。DNS 名は OpenSearch Serverless パブリック IP アドレスに解決されます。OpenSearch Serverless の VPC エンドポイントを持たない VPC 内のクライアント、またはパブリックネットワーク内のクライアントは、パブリック Route 53 リゾルバーを使用し、それらの IP アドレスを使用してコレクションと Dashboards にアクセスできます。VPC エンドポイントの IP アドレスタイプ (IPv4、IPv6、またはデュアルスタック) は、[OpenSearch Serverless のインターフェイスエンドポイントを作成する](#serverless-vpc-create)ときに提供されるサブネットに基づいて決定されます。

**注記**  
OpenSearch Serverless は、OpenSearch Service ドメイン解決用の追加の Amazon Route 53 プライベートホストゾーン (``<region>.opensearch.amazonaws.com``) を作成します。 AWS CLIの [update-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-vpc-endpoint.html) コマンドを使用して、既存の IPv4 VPC エンドポイントを Dualstack に更新できます。

特定の VPC の DNS リゾルバーアドレスは、VPC CIDR の 2 番目の IP アドレスです。VPC 内のクライアントは、そのリゾルバーを使用して、コレクション用の VPC エンドポイントアドレスを取得する必要があります。リゾルバーは、OpenSearch Serverless によって作成されたプライベートホストゾーンを使用します。任意のアカウントのすべてのコレクション用にそのリゾルバーを使用すれば十分です。一部のコレクションエンドポイントには VPC リゾルバーを使用し、他のコレクションエンドポイントにはパブリックリゾルバーを使用することもできますが、通常は必要ありません。

## VPC とネットワークアクセスポリシー
<a name="vpc-endpoint-network"></a>

コレクション用に OpenSearch API および 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 エンドポイントはサービスへのアクセスポイント、ネットワークアクセスポリシーはコレクションおよび Dashboards へのネットワークレベルのアクセスポイント、データアクセスポリシーはコレクション内のデータに対するあらゆる操作についてのきめ細かいアクセスコントロールのためのアクセスポイントとお考えください。

ネットワークポリシーでは複数の VPC エンドポイント ID を指定できるため、コレクションにアクセスする必要がある VPC ごとに VPC エンドポイントを作成することをお勧めします。これらの VPCsは、OpenSearch Serverless コレクションおよびネットワークポリシーを所有する AWS アカウントとは異なるアカウントに属することができます。あるアカウントの VPC-to-VPCピアリングまたはその他のプロキシソリューションを作成することはお勧めしません。これは、各 VPC が独自のエンドポイントを持つ場合よりも安全性とコスト効率が低くなります。最初の VPC は、ネットワークポリシーでその VPC のエンドポイントへのアクセスを設定した他の VPC の管理者には簡単に表示されません。

## VPC とエンドポイントポリシー
<a name="vpc-endpoint-policy"></a>

 Amazon OpenSearch Serverless は、VPC 用のエンドポイントポリシーをサポートします。エンドポイントポリシーは、VPC エンドポイントにアタッチして、エンドポイント AWS を使用して AWS サービスにアクセスできるプリンシパルを制御する IAM リソースベースのポリシーです。詳細については、「[エンドポイントポリシーを使用して 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 コンソールでエンドポイントポリシーを直接定義することはできません。

エンドポイントポリシーは、設定済みの他の ID ベースポリシー、リソースベースポリシー、ネットワークポリシー、またはデータアクセスポリシーをオーバーライドしたり、これらに置き換わったりすることはありません。エンドポイントポリシーの更新の詳細については、「[エンドポイントポリシーを使用して 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 ID を使用して、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)」を参照してください。

また、IAM ユーザーと SAML ユーザーを同じ 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"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            },
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

------

インターフェイス VPC エンドポイントを介して Amazon EC2 から Amazon OpenSearch Serverless コレクションにアクセスすることもできます。詳細については、「[Access an OpenSearch Serverless collection from Amazon EC2 (via interface VPC endpoints)](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 コレクションにアクセスできるようにするために、そのエンドポイントを[ネットワークアクセスポリシー](serverless-network.md)に含める必要があります。
+ デフォルトでは、インターフェイスエンドポイント経由で OpenSearch Serverless へのフルアクセスが許可されます。セキュリティグループをエンドポイントのネットワークインターフェイスに関連付けて、インターフェイスエンドポイント経由で OpenSearch Serverless へのトラフィックを制御できます。
+ 1 つの に最大 50 個の OpenSearch Serverless VPC エンドポイント AWS アカウント を設定できます。
+ ネットワークポリシーでコレクションの API またはダッシュボードへのパブリックインターネットアクセスを有効にすると、コレクションには任意の VPC およびパブリックインターネットからアクセスできます。
+ オンプレミスで VPC の外部にいる場合、OpenSearch Serverless の VPC エンドポイント解決に DNS リゾルバーを直接使用することはできません。VPN アクセスが必要な場合、VPC には外部クライアントが使用できる DNS プロキシリゾルバーが必要です。Route 53 は、オンプレミスネットワークまたは別の VPC から VPC への DNS クエリを解決するために使用できるインバウンドエンドポイントオプションを提供します。
+ OpenSearch Serverless が作成して VPC にアタッチするプライベートホストゾーンは、 サービスによって管理されますが、 Amazon Route 53 リソースに表示され、アカウントに請求されます。
+ その他の考慮事項については、「*AWS PrivateLink ガイド*」の「[Considerations](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 エンドポイントを削除します。

さらに、VPC エンドポイントを作成するには、以下の Amazon EC2 許可と Route 53 許可が必要です。
+ `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://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. **[Subnet]** (サブネット) で、OpenSearch Serverless にアクセスするサブネットを 1 つ選択します。
   + エンドポイントの IP アドレスと DNS タイプはサブネットタイプに基づいています
     + Dualstack: すべてのサブネットに IPv4 と IPv6 の両方のアドレス範囲がある場合
     + IPv6: すべてのサブネットが IPv6 のみのサブネットの場合
     + IPv4: すべてのサブネットに IPv4 アドレス範囲がある場合

1. **[Security groups]** (セキュリティグループ) で、エンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。これは、エンドポイントに承認するインバウンドトラフィックのポート、プロトコル、ソースを制限する重要なステップです。OpenSearch Serverless との通信に VPC エンドポイントを使用するリソースがエンドポイントのネットワークインターフェイスと通信できるように、セキュリティグループルールが設定されていることを確認します。

1. **エンドポイントの作成** を選択します。

OpenSearch Serverless API を使用して VPC エンドポイントを作成する場合は、`CreateVpcEndpoint` コマンドを使用します。

**注記**  
エンドポイントを作成したら、その ID を書き留めます (例: `vpce-abc123def4EXAMPLE`)。コレクションへのエンドポイントアクセスを提供するには、この ID を 1 つまたは複数のネットワークアクセスポリシーに含める必要があります。

インターフェイスエンドポイントを作成したら、ネットワークアクセスポリシーを使用して、そのエンドポイントにコレクションへのアクセスを提供する必要があります。詳細については、「[Amazon OpenSearch Serverless でのネットワークアクセス](serverless-network.md)」を参照してください。

## Amazon OpenSearch Serverless の共有 VPC の設定
<a name="shared-vpc-setup"></a>

Amazon Virtual Private Cloud (VPC) を使用して、VPC サブネットを組織 AWS アカウント 内の他の と共有したり、複数の のリソース間で VPN などのネットワークインフラストラクチャを共有したりできます AWS アカウント。

現在、Amazon OpenSearch Serverless は、 AWS PrivateLink VPC の所有者でない限り、共有 VPC への接続の作成をサポートしていません。 AWS PrivateLink また、 は、その VPC 間の接続の共有もサポートしていません AWS アカウント。

ただし、OpenSearch Serverless の柔軟なモジュール式のアーキテクチャに基づいて、共有 VPC をセットアップすることはできます。これは、OpenSearch Serverless ネットワークインフラストラクチャが個々のコレクション (OpenSearch Service) インフラストラクチャとは異なるためです。したがって、VPC が配置されている 1 つのアカウントの AWS PrivateLink 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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

1. 「[OpenSearch Serverless のインターフェイスエンドポイントを作成する](#serverless-vpc-create)」のステップを実行してください。その際、以下の選択を行います。
   + 組織内のコンシューマーアカウントと共有されている VPC とサブネットを選択します。

1. エンドポイントを作成したら、生成された VPCe ID を書き留めて、コンシューマーアカウントでセットアップタスクを実行する管理者に渡します。

   VPCe ID は `vpce-abc123def4EXAMPLE` 形式になっています。

**コンシューマーアカウントで共有 VPC を設定するには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) で Amazon OpenSearch Service コンソールにサインインします。

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 は、コントロールプレーンとデータプレーンオペレーションの 2 種類の AWS PrivateLink 接続をサポートしています。コントロールプレーンオペレーションには、コレクションの作成と削除、アクセスポリシーの管理が含まれます。データプレーンオペレーションは、コレクション内のデータのインデックス作成とクエリに使用します。このページでは、コントロールプレーン AWS PrivateLink エンドポイントについて説明します。データプレーン VPC エンドポイントの詳細については、「」を参照してください[を介したデータプレーンアクセス AWS PrivateLink](serverless-vpc.md)。

## コントロールプレーン AWS PrivateLink エンドポイントの作成
<a name="serverless-vpc-privatelink"></a>

インターフェイス VPC エンドポイントを使用するように OpenSearch Serverless を設定することで、VPC のセキュリティ体制を改善できます。インターフェイスエンドポイントは AWS PrivateLink を利用しています。このテクノロジーにより、インターネットゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続なしで、OpenSearch Serverless APIs にプライベートにアクセスできます。

 AWS PrivateLink と VPC エンドポイントの詳細については、「Amazon [VPC ユーザーガイド」の「VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html#concepts-vpc-endpoints)」を参照してください。

### 考慮事項
<a name="serverless-vpc-cp-considerations"></a>
+ VPC エンドポイントは、同じリージョン内でのみサポートされます。
+ VPC エンドポイントでは、Amazon Route 53 を介して 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. Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。

1. ナビゲーションペインで、**[Endpoints]** (エンドポイント) を選択します。

1. [**エンドポイントの作成**] を選択します。

1. **[サービスカテゴリ]** で、**[AWS のサービス]** を選択します。

1. **サービス** で、 を選択します`com.amazonaws.region.aoss`。例えば、`com.amazonaws.us-east-1.aoss`。

1. **[VPC]** で、エンドポイントを作成する VPC を選択します。

1. [**サブネット**] で、エンドポイントネットワークインターフェイスを作成する先のサブネット (アベイラビリティーゾーン) を選択します。

1. **セキュリティグループ**で、エンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。HTTPS (ポート 443) が許可されていることを確認します。

1. **ポリシー** では、**フルアクセス**を選択してすべてのオペレーションを許可するか、**カスタム**を選択してカスタムポリシーをアタッチします。

1. **エンドポイントの作成** を選択します。

### エンドポイントポリシーの作成
<a name="serverless-vpc-cp-endpoint-policy"></a>

Amazon OpenSearch Serverless へのアクセスを制御するエンドポイントポリシーを VPC エンドポイントにアタッチできます。このポリシーでは、以下の情報を指定します。
+ アクションを実行できるプリンシパル。
+ 実行可能なアクション。
+ アクションを実行できるリソース。

詳細については、「*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 認証を使用すると、Serverless コレクションの OpenSearch Dashboards エンドポイントに対し、既存の ID プロバイダーによるシングルサインオン (SSO) を提供できます。

SAML 認証により、ユーザーはサードパーティの ID プロバイダーを使用して OpenSearch Dashboards にサインインし、データのインデックス化と検索を行えます。OpenSearch Serverless では、IAM Identity Center、Okta、Keycloak、Active Directory Federation Services (AD FS)、Auth0 など、SAML 2.0 標準を使用するプロバイダーをサポートしています。Okta、OneLogin 、Microsoft Entra ID などの他の ID ソースからのユーザーとグループを同期するように IAM Identity Center を設定できます。IAM Identity Center でサポートされている ID ソースのリストと設定手順については、「*IAM Identity Center ユーザーガイド*」の「[Getting started tutorials](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)」を参照してください。

**注記**  
SAML 認証は、ウェブブラウザから OpenSearch Dashboards にアクセスする場合のみに使用します。この認証を受けたユーザーは、OpenSearch Dashboards の **[Dev Tools]** (開発ツール) を通じてのみ、OpenSearch API オペレーションにリクエストを行うことができます。ユーザーが、SAML 認証情報により、OpenSearch API オペレーションに直接 HTTP リクエストを発行することは*できません*。

SAML 認証の使用を開始するには、まず SAML の ID プロバイダー (IdP) を設定します。次に、その IdP から 1 人以上のユーザーを、[データアクセスポリシー](serverless-data-access.md)に含めます。このポリシーにより、コレクションやインデックスに対する特定のアクセス許可が付与されす。その後、ユーザーは、OpenSearch Dashboards にサインインして、データアクセスポリシーで許可されているアクションを実行できます。

![\[SAML authentication flow with data access policy, OpenSearch interface, and JSON configuration.\]](http://docs.aws.amazon.com/ja_jp/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 ID に対するコレクションデータへのアクセス権の付与](#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 が開始することはサポートされていません。
+ サービスコントロールポリシー (SCP) は、IAM 以外の ID (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` – 現在のアカウントのすべての SAM Lプロバイダーを一覧表示します。
+ `aoss:GetSecurityConfig` – SAML プロバイダーの情報を表示します。
+ `aoss:UpdateSecurityConfig` – 特定の SAML プロバイダーの (XML メタデータを含む) 設定を変更します。
+ `aoss:DeleteSecurityConfig` – SAML プロバイダーを削除します。

次の ID ベースのアクセスポリシーでは、すべての 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 プロバイダーを作成する方法について説明します。この手順により、SAML 認証がサービスプロバイダー (SP) を使用して、OpenSearch Dashboards に対する認証を開始できるようになります。認証を IdP が開始することはサポートされていません。

**OpenSearch Dashboards の SAML 認証を有効にするには**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールにサインインします。

1. 左側のナビゲーションパネルで **[Serverless]** (サーバーレス) を展開し、**[SAML authentication]** (SAML 認証) を選択します。

1. **[Add SAML provider]** (SAML プロバイダーを追加) を選択します。

1. プロバイダーの名前と説明を入力します。
**注記**  
ここで指定した名前はパブリックにアクセス可能で、OpenSearch Dashboards にサインインしたユーザーは、ドロップダウンメニューに表示することができます。名前は認識しやすく、また、ID プロバイダーに関する機密情報が明らかにならないものにしてください。

1. **[Configure your IdP]** (IDP の設定) で、アサーションコンシューマーサービス (ACS) のURL をコピーします。

1. ここでコピーした ACS URL は、ID プロバイダーを設定するために使用します。用語と手順はプロバイダーによって異なります。プロバイダーのドキュメントを参照してください。

   例えば、Okta では「SAML 2.0 ウェブアプリケーション」を作成し、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 ID センターでは、**[Application SAML audience]** (アプリケーション SAML オーディエンス) になります。

1. IAM ID センターを使用している場合は、[属性マッピング](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributemappingsconcept.html) (`unspecified` の形式を使用する `Subject=${user:name}`) も指定する必要があります。

1. ID プロバイダーを設定すると、IdP メタデータファイルが生成されます。この XML ファイルには、TLS 証明書、Single Sign-On エンドポイント、ID プロバイダーのエンティティ ID など、プロバイダーに関する情報が含まれています。

   IdP メタデータファイル内のテキストをコピーして、**[Provide metadata from your IdP]** (IdP からメタデータを提供) フィールドに貼り付けます。または、[**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. ユーザーネームに対する SAML アサーションの `NameID` 要素を使用するために、**[Custom user ID attribute]** (カスタムユーザー ID 属性) フィールドは空のままにしておきます。アサーションでこの標準エレメントを使用せず、代わりにユーザーネームをカスタム属性として含める場合は、ここでその属性を指定します。属性では、大文字と小文字が区別されます。シングルユーザー属性のみがサポートされています。

   次の例では、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`など) を指定します。グループ属性は、 1 つだけがサポートされます。グループ属性には、デフォルト値はありません。これを指定しない場合、データアクセスポリシーにはユーザープリンシパルのみが含まれます。

   次に、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 時間にリセットされます。

1. **[Create SAML provider]** (SAML プロバイダーを作成) を選択します。

## OpenSearch Dashboards へのアクセス
<a name="serverless-saml-dashboards"></a>

SAML プロバイダーを設定すると、そのプロバイダーに関連付けられたすべてのユーザーとグループは、OpenSearch Dashboards エンドポイントを使用できるようになります。Dashboards URL は、*すべてのコレクション*で `collection-endpoint/_dashboards/` の形式になっています。

SAML が有効になっている場合、 のリンクを選択すると IdP 選択ページ AWS マネジメントコンソール に移動し、SAML 認証情報を使用してサインインできます。まず、ドロップダウンから ID プロバイダーを選択します。

![\[OpenSearch login page with dropdown menu for selecting SAML Identity Provider options.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/idpList.png)


次に、自分の IdP 認証情報を使用してサインインします。

SAML が有効になっていない場合、 のリンクを選択すると、SAML のオプションなしで IAM ユーザーまたはロールとしてログインするように AWS マネジメントコンソール 指示されます。

## SAML ID に対するコレクションデータへのアクセス権の付与
<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"
      ]
   }
]
```

アクセス権は、コレクション、インデックス、またはその両方に付与できます。ユーザーごとに異なる権限を持たせたい場合は、複数のルールを作成します。使用可能な許可のリストについては、「[Supported policy permissions](serverless-data-access.md#serverless-data-supported-permissions)」(サポートされるポリシーの許可) を参照してください。アクセスポリシーの形式の詳細については、「[Policy syntax](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
```

.json ファイル内のキーと値のマップとして (メタデータ XML を含めながら) `saml-options` を指定します。メタデータ 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 プロバイダーに関する (ID プロバイダーが生成する完全な 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 認証) を選択し、ID プロバイダーを選択した後に、**[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>

サードパーティーの監査者は、さまざまな AWS コンプライアンスプログラムの一環として Amazon OpenSearch Serverless のセキュリティとコンプライアンスを評価します。このプログラムには、SOC、PCI、HIPAA が含まれます。

 AWS のサービス が特定のコンプライアンスプログラムの範囲内にあるかどうかを確認するには、[AWS のサービス 「コンプライアンスプログラムによるスコープ](https://aws.amazon.com/compliance/services-in-scope/)」の「コンプライアンス」を参照して、関心のあるコンプライアンスプログラムを選択します。一般的な情報については、[AWS 「コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)」を参照してください。

を使用して、サードパーティーの監査レポートをダウンロードできます AWS Artifact。詳細については、[「Downloading Reports 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 リソースに割り当てるメタデータラベルです。

各タグは、*キー*と*値*から構成されます。ユーザーが割り当てるタグでは、ユーザーがキーと値を定義します。たとえば、1 つのリソースのキーを `stage` と定義し、値を `test` と定義します。

タグを使用すると、 AWS リソースを識別して整理できます。多くの AWS サービスはタグ付けをサポートしているため、異なるサービスのリソースに同じタグを割り当てて、リソースが関連していることを示すことができます。例えば、Amazon OpenSearch Service ドメインに割り当てる OpenSearch Serverless コレクションに同じタグを割り当てることができます。

OpenSearch Serverless では、プライマリリソースはコレクションです。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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) で Amazon OpenSearch Service コンソールにサインインします。

1. 左側のナビゲーションペインで **[Serverless]** (サーバーレス) を展開し、**[Collections]** (コレクション) を選択します。

1. タグを追加するコレクションを選択し、**[Tags]** (タグ) タブに移動します。

1. [**管理**] を選択して、[**新しいタグを追加**] を選択します。

1. タグキーとオプションの値を入力します。

1. **[保存]** を選択します。

タグを削除するには、同じ手順に従って、[**タグを管理**] ページで [**削除**] を選択します。

タグを操作するコンソールを使用する方法の詳細については、*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 は、インデックス作成、検索、メタデータ [API オペレーション](https://opensearch.org/docs/latest/opensearch/rest-api/index/)のサブセットの他にも、OpenSearch での利用が可能な各種の OpenSearch プラグインをサポートしています。[データアクセスポリシー](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/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  インデックスの詳細を表示します。詳細については、以下のリソースを参照してください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:WriteDocument`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  ドキュメントを作成および更新する。詳細については、以下のリソースを参照してください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  | ドキュメントを読み取ります。詳細については、以下のリソースを参照してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  インデックス設定を更新します。詳細については、以下のリソースを参照してください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:CreateCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html) | 
|  `aoss:DescribeCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  エイリアス、インデックスとフレームワークのテンプレート、パイプラインを操作する方法について説明します。詳細については、以下のリソースを参照してください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:UpdateCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  | エイリアス、インデックステンプレート、フレームワークテンプレートを更新します。詳細については、以下のリソースを参照してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html) \$1 テンプレートのプロビジョニングを解除する API。ML Commons Client および OpenSearch Serverless サービスは、依存ポリシーを管理します。  | 
|  `aoss:DeleteCollectionItems`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  エイリアス、インデックスとフレームワークのテンプレート、パイプラインを削除します。詳細については、以下のリソースを参照してください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  | 
|  `aoss:DescribeMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  モデルとコネクタに関する情報を取得するための GET および検索 API について説明します。  | 
|  `aoss:CreateMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  ML リソースを作成するアクセス許可を付与します。  | 
|  `aoss:UpdateMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  既存の ML リソースを更新するアクセス許可を付与します。  | 
|  `aoss:DeleteMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  ML リソースを削除するアクセス許可を付与します。  | 
|  `aoss:ExecuteMLResource`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/serverless-genref.html)  |  モデルを実行するアクセス許可を提供します。  | 

## サポートされている OpenSearch プラグイン
<a name="serverless-plugins"></a>

OpenSearch Serverless コレクションには、OpenSearch コミュニティから提供される以下のプラグインが、事前にパッケージされて提供されます。Serverless は、自動的にプラグインのデプロイと管理を実行します。

**分析プラグイン**
+  [ICU Analysis](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-icu) 
+  [Japanese (kuromoji) Analysis](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-kuromoji)
+  [Korean (Nori) Analysis](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-nori) 
+  [Phonetic Analysis](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-phonetic) 
+  [Smart Chinese Analysis](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-smartcn) 
+  [Stempel Polish Analysis](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-stempel)
+  [Ukrainian Analysis](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/analysis-ukrainian)

**マッパープラグイン**
+  [Mapper Size](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/mapper-size) 
+  [Mapper Murmur3](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/mapper-murmur3) 
+  [Mapper Annotated Text](https://github.com/opensearch-project/OpenSearch/tree/main/plugins/mapper-annotated-text)

**スクリプトプラグイン**
+  [Painless](https://opensearch.org/docs/latest/api-reference/script-apis/exec-script/)
+  [Expression](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 ソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分です。 には、OpenSearch Serverless をモニタリングし、問題が発生したときに報告し、必要に応じて自動アクションを実行するための以下のモニタリングツール AWS が用意されています。
+ *Amazon CloudWatch* は、 AWS リソースと で実行しているアプリケーションを AWS リアルタイムでモニタリングします。メトリクスの収集と追跡、カスタマイズしたダッシュボードの作成、および指定したメトリクスが指定したしきい値に達したときに通知またはアクションを実行するアラームの設定を行うことができます。

  例えば、CloudWatch で Amazon EC2 インスタンスの CPU 使用率などのメトリクスを追跡し、必要に応じて新しいインスタンスを自動的に起動できます。詳細については、「[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 をモニタリングし、収集した未加工データを、ほぼリアルタイムの読み取り可能なメトリクスに変換できます。これらの統計は 15 か月間保持されるため、履歴情報にアクセスし、ウェブアプリケーションまたはサービスの動作をより的確に把握できます。

また、特定のしきい値を監視するアラームを設定し、これらのしきい値に達したときに通知を送信したりアクションを実行したりできます。詳細については、「[Amazon CloudWatch ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)」を参照してください。

OpenSearch Serverless は、`AWS/AOSS` 名前空間に以下のメトリクスをレポートします。


| メトリクス | 説明 | 
| --- | --- | 
| ActiveCollection |  コレクションが有効化されているかどうかを示します。値が 1 の場合は、コレクションのステータスが `ACTIVE` であることを意味します。この値は、コレクションが正しく作成された時点で出力され、そのコレクションを削除するまで 1 を保ちます。このメトリクスでは、値が 0 になることはありません。 **関連する統計情報**: Max **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| DeletedDocuments |  削除されたドキュメントの総数。 **関連する統計情報**: Average、Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻度**: 60 秒  | 
| IndexingOCU |  コレクションデータを取り込むために使用された OpenSearch Compute Units (OCU) の数。このメトリクスは、アカウントレベルで適用されます。どのコレクショングループにも属さないコレクションの使用のみを表します。 **関連する統計情報**: Sum **ディメンション**: `ClientId` **頻度**: 60 秒  | 
| IndexingOCU |  コレクションデータを取り込むために使用された OpenSearch Compute Units (OCU) の数。このメトリクスは、コレクショングループレベルに適用されます。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionGroupId`、`CollectionGroupName` **頻度**: 60 秒  | 
| IngestionDataRate |  コレクションまたはインデックスに対するインデックス化レート (GiB /秒)。このメトリクスは、一括インデックス作成リクエストにのみ適用されます。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻度**: 60 秒  | 
| IngestionDocumentErrors |  コレクションまたはインデックスに対する取り込み中に発生した、ドキュメントエラーの総数。一括インデックス作成リクエストが成功すると、ライターはそのリクエストを処理し、リクエスト内で失敗したすべてのドキュメントについてエラーを出力します。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻度**: 60 秒  | 
| IngestionDocumentRate |  コレクションまたはインデックスへの、ドキュメントの取り込みにおける 1 秒あたりのレート。このメトリクスは、一括インデックス作成リクエストにのみ適用されます。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻度**: 60 秒  | 
| IngestionRequestErrors |  コレクションに対して発生した、一括インデックス作成リクエストエラーの総数。OpenSearch Serverless は、認証や可用性の問題など、何らかの理由で一括インデックス作成リクエストが失敗した場合に、このメトリックを出力します。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| IngestionRequestLatency |  コレクションへの一括書き込みオペレーションにおけるレイテンシー (秒単位)。 **関連する統計情報**: Minimum、Maximum、Average **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| IngestionRequestRate |  コレクションが受信した、一括書き込みオペレーションの総数。 **関連する統計情報**: Minimum、Maximum、Average **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| IngestionRequestSuccess |  コレクションに対して成功した、インデックス作成オペレーションの総数。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| SearchableDocuments |  コレクションまたはインデックス内にある、検索可能なドキュメントの合計数。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻度**: 60 秒  | 
| SearchRequestErrors |  コレクションに対し発生したクエリエラーの、1 分あたりの総数。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| SearchRequestLatency |  コレクションに対し、検索オペレーションを完了するために必要な平均時間 (ミリ秒)。 **関連する統計情報**: Minimum、Maximum、Average **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| SearchOCU |  コレクションデータの検索に使用された OpenSearch Compute Units (OCU) の数。このメトリクスは、アカウントレベルで適用されます。どのコレクショングループにも属さないコレクションの使用のみを表します。 **関連する統計情報**: Sum **ディメンション**: `ClientId` **頻度**: 60 秒  | 
| SearchOCU |  コレクションデータの検索に使用された OpenSearch Compute Units (OCU) の数。このメトリクスは、コレクショングループレベルに適用されます。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionGroupId`、`CollectionGroupName` **頻度**: 60 秒  | 
| SearchRequestRate |  コレクションに対する検索リクエストの、1 分あたりの総数。 **関連する統計情報**: Average、Maximum、Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 
| StorageUsedInS3 |  使用した Amazon S3 ストレージの量 (バイト)。OpenSearch Serverless は、インデックス付きデータをAmazon S3 に保存します。正確な値を取得するには、1 分単位で期間を選択します。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName`、`IndexId`、`IndexName` **頻度**: 60 秒  | 
| VectorIndexBuildAccelerationOCU |  ベクトルインデックス作成の高速化に使用される OpenSearch コンピューティングユニット (OCUs) の数。このメトリクスはコレクションレベルに適用されます。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId` **頻度**: 60 秒  | 
| 2xx, 3xx, 4xx, 5xx |  コレクションに対するリクエストのうち、特定の HTTP レスポンスコード (2*xx*、3*xx*、4*xx*、5*xx*) で応答したものの数。 **関連する統計情報**: Sum **ディメンション**: `ClientId`、`CollectionId`、`CollectionName` **頻度**: 60 秒  | 

# を使用した OpenSearch Serverless API コールのログ記録 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Amazon OpenSearch Serverless は AWS CloudTrail、Serverless のユーザー、ロール、または のサービスによって実行されたアクションを記録する AWS サービスである と統合されています。

CloudTrail は、OpenSearch Serverless のすべての API 呼び出しをイベントとしてキャプチャします。キャプチャされる対象としては、OpenSearch Service コンソールの Service セクションからの呼び出しや、OpenSearch Serverless API オペレーションへのコード呼び出しなどが含まれます。

証跡を作成する場合は、OpenSearch Serverless のイベントなど、Amazon S3 バケットに対する CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、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>

CloudTrail は、アカウントの作成 AWS アカウント 時に で有効になります。OpenSearch Serverless でアクティビティが発生すると、そのアクティビティはイベント**履歴**の他の AWS サービスイベントとともに CloudTrail イベントに記録されます。で最近のイベントを表示、検索、ダウンロードできます AWS アカウント。詳細については、「[CloudTrail イベント履歴でのイベントの表示](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)」を参照してください。

OpenSearch Serverless のイベントなど AWS アカウント、 のイベントの継続的な記録については、証跡を作成します。*証跡*により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべての AWS リージョンに適用されます。

証跡は、 AWS パーティション内のすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、CloudTrail ログで収集されたイベントデータをさらに分析して処理するように他の AWS サービスを設定できます。詳細については、次を参照してください:
+ [追跡を作成するための概要](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)

すべての OpenSearch Serverless アクションは CloudTrail によってログ記録されます。これらは、「[OpenSearch Service API reference](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/Welcome.html)」(OpenSearch Service API リファレンス) に記載されています。たとえば、`CreateCollection`、`ListCollections`、`DeleteCollection` の各アクションを呼び出すと、CloudTrail ログファイルにエントリが生成されます。

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。この ID 情報は以下のことを確認するのに役立ちます。
+ リクエストがルートまたは 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 コンソール、または CloudTrail CloudTrail API オペレーションを使用して AWS CLI、`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)」を参照してください。

## Amazon OpenSearch Serverless のデータイベントエントリを理解する
<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 ログファイルには、1 つ以上のログエントリがあります。

イベントは、任意の送信元からの単一のリクエストを表します。これには、リクエストされたアクション、アクションの日時、リクエストパラメータなどに関する情報が含まれます。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 EventBridge の先行である [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatchEvents.html) にも送信されます。ルールを記述して、注目するイベントと、イベントがルールに一致した場合に自動的に実行するアクションを指定できます。自動的にアクティブ化できるアクションの例には、以下が含まれます。
+  AWS Lambda 関数の呼び出し
+ Amazon EC2 Run Command の呼び出し
+ 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 は、OCU 関連の次のイベントのいずれかが発生したときに、EventBridge にイベントを送信します。

### OCU の使用量が上限に近づいている
<a name="monitoring-events-ocu-approaching-max"></a>

OpenSearch Serverless は、検索またはインデックス OCU の使用量が容量制限の 75% に達するとこのイベントを送信します。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>

OpenSearch Serverless は、検索またはインデックス OCU の使用量が容量制限の 100% に達するとこのイベントを送信します。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."
  }
}
```