Amazon OpenSearch Service でのカスタムプラグイン管理 - Amazon OpenSearch Service

Amazon OpenSearch Service でのカスタムプラグイン管理

OpenSearch Service のカスタムプラグインを使用すると、言語分析、カスタムフィルタリング、ランキングなどの領域で OpenSearch 機能を拡張できるため、パーソナライズされた検索エクスペリエンスを作成できます。OpenSearch 用のカスタムプラグインは、org.opensearch.plugins.Plugin クラスを拡張し、.zip ファイルにパッケージ化することで開発できます。

現在、Amazon OpenSearch Service では以下のプラグイン拡張機能がサポートされています。

  • AnalysisPlugin – カスタムアナライザー、文字トークナイザ、テキスト処理用のフィルターなどを追加して、分析機能を拡張します。

  • SearchPlugin – カスタムクエリタイプ、類似度アルゴリズム、提案オプション、集計を使用して検索機能を強化します。

  • MapperPlugin – OpenSearch でカスタムフィールドタイプとそのマッピング設定を作成し、さまざまなタイプのデータの保存方法とインデックス作成方法を定義できます。

  • ScriptPlugin – OpenSearch にカスタムスクリプト機能を追加できます。例えば、検索またはインデックス作成中のスコアリング、ソート、フィールド値変換などのオペレーション用のカスタムスクリプトなどです。

OpenSearch Service コンソールまたはカスタムパッケージの既存の API コマンドを使用して、プラグインをアップロードし、Amazon OpenSearch Service クラスターに関連付けることができます。DescribePackages コマンドを使用して、アカウント内のすべてのパッケージを記述し、OpenSearch バージョンやエラーの詳細などの詳細情報を表示することもできます。OpenSearch Service は、プラグインパッケージのバージョン互換性、セキュリティの脆弱性、許可されたプラグインオペレーションを検証します。カスタムパッケージの詳細については、「Amazon OpenSearch Service でのパッケージのインポートと管理」を参照してください。

OpenSearch のバージョンと AWS リージョン のサポート

カスタムプラグインは、以下の AWS リージョン で OpenSearch バージョン 2.15 を実行している OpenSearch Service ドメインでサポートされています。

  • 米国東部 (オハイオ) (us-east-2)

  • 米国東部 (バージニア北部) (us-east-1)

  • 米国西部 (オレゴン) (us-west-2)

  • アジアパシフィック (ムンバイ) (ap-south-1)

  • アジアパシフィック (ソウル) (ap-northeast-2)

  • アジアパシフィック (シンガポール) (ap-southeast-1)

  • アジアパシフィック (シドニー) (ap-southeast-2)

  • アジアパシフィック (東京) (ap-northeast-1)

  • カナダ (中部) (ca-central-1)

  • ヨーロッパ (フランクフルト) (eu-central-1)

  • 欧州 (アイルランド) (eu-west-1)

  • ヨーロッパ (ロンドン) (eu-west-2)

  • 欧州 (パリ) (eu-west-3)

  • 南米 (サンパウロ) (sa-east-1)

注記

カスタムプラグインには、ユーザーが開発したコードが含まれています。ユーザーが開発したコードに起因する SLA 違反などの問題は、SLA クレジットの対象外です。詳細については、「Amazon OpenSearch Service - サービスレベルアグリーメント」を参照してください。

プラグインクォータ

  • アカウントにつき、リージョンごとに最大 25 個のカスタムプラグインを作成できます。

  • プラグインの非圧縮状態での最大サイズは 1 GB です。

  • 1 つのドメインに関連付けることができるプラグインの最大数は 20 です。このクォータは、オプション、サードパーティー、カスタムからなるすべてのプラグインタイプの合計に適用されます。

  • カスタムプラグインは、OpenSearch バージョン 2.15 以降を実行しているドメインでサポートされています。

  • プラグインの descriptor.properties ファイルは、2.15.0 のようなエンジンバージョン、つまりパッチバージョンがゼロに設定されている 2.x.x バージョンをサポートしている必要があります。

前提条件

カスタムプラグインをインストールしてドメインに関連付ける際は、次の要件を満たしていることを確認してください。

  • descriptor.properties ファイル内のプラグインでサポートされているエンジンバージョンが 2.15.0 または 2.x.0 と同等であること。つまり、パッチバージョンがゼロである必要があります。

  • ドメインで以下の機能が有効になっていること。

    • ノード間の暗号化

    • 保管中の暗号化

    • EnforceHTTPS が「true」に設定されている

      AWS Config デベロッパーガイド」の「opensearch-https-required」も参照してください。

    • クライアントは Policy-Min-TLS-1-2-PFS-2023-10 をサポートする必要があります。以下のコマンドを使用することでこのサポートを指定できます。プレースホルダー値は、ユーザー自身の情報に置き換えてください。

      aws opensearch update-domain-config \ --domain-name domain-name \ --domain-endpoint-options '{"TLSSecurityPolicy":"Policy-Min-TLS-1-2-PFS-2023-10" }'

      詳細については、「Amazon OpenSearch Service API リファレンス」の「DomainEndpointOptions」を参照してください。

トラブルシューティング

システムがエラー PluginValidationFailureReason : The provided plugin could not be loaded を返した場合、トラブルシューティング情報については「バージョンの互換性の問題によりカスタムプラグインのインストールが失敗する」を参照してください。

コンソールを使用したカスタムプラグインのインストール

サードパーティープラグインをドメインに関連付けるには、まずプラグインのライセンスと設定をパッケージとしてインポートします。

カスタムプラグインをインストールするには
  1. Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home) にサインインします。

  2. 左のナビゲーションペインで [パッケージ] を選択します。

  3. [パッケージのインポート] を選択します。

  4. [名前] に、このプラグインの一意の識別可能な名前を入力します。

  5. (オプション) [説明] に、パッケージまたはその目的に関する有用な詳細を入力します。

  6. [パッケージタイプ][プラグイン] を選択します。

  7. [パッケージソース] に、パスを入力するか、Amazon S3 のプラグイン ZIP ファイルを参照して選択します。

  8. [OpenSearch エンジンのバージョン] で、プラグインがサポートする OpenSearch のバージョンを選択します。

  9. [パッケージ暗号化] で、パッケージの暗号化キーをカスタマイズするかどうかを選択します。デフォルトでは、OpenSearch Service はプラグインパッケージを AWS 所有のキー で暗号化します。代わりにカスタマーマネージドキーを使用することもできます。

  10. [インポート] を選択します。

プラグインパッケージをインポートしたら、ドメインに関連付けます。手順については、「パッケージをドメインにインポートして関連付ける」を参照してください。

AWS CLI を使用したカスタムプラグインの管理

AWS CLI を使用して、複数のカスタムプラグインタスクを管理できます。

AWS CLI を使用したカスタムプラグインのインストール

開始する前に

カスタムプラグインをドメインに関連付ける前に、Amazon Simple Storage Service (Amazon S3) のバケットにアップロードする必要があります。バケットは、プラグインを使用する場所と同じ AWS リージョン に配置する必要があります。S3 バケットにオブジェクトを追加する際の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「オブジェクトのアップロード」を参照してください。

プラグインに機密情報が含まれている場合は、アップロード時に S3 で管理されたキーによるサーバー側の暗号化を指定します。ファイルをアップロードしたら、その S3 パスを書き留めます。パスの形式は s3://amzn-s3-demo-bucket/file-path/file-name です。

注記

必要に応じて、AWS Key Management Service (AWS KMS) キーを指定することで、プラグイン作成時にカスタムプラグインを保護できます。詳細については、「AWS KMS キーセキュリティを使用してカスタムプラグインを作成または更新する」を参照してください。

AWS CLI を使用してカスタムプラグインをインストールするには
  1. 以下の create-package コマンドを実行して、カスタムプラグインの新しいパッケージを作成します。その際、以下の要件を満たしていることを確認してください。

    • バケットとキーの場所は、コマンドを実行しているアカウントの S3 バケット内のプラグイン .zip ファイルを指している必要があります。

    • S3 バケットは、パッケージを作成しているリージョンと同じリージョンにある必要があります。

    • ZIP-PLUGIN パッケージでサポートされているのは .zip ファイルのみです。

    • .zip ファイルの内容は、プラグインが想定するディレクトリ構造に従う必要があります。

    • --engine-version の値は OpenSearch_{MAJOR}.{MINOR} 形式である必要があります。例: OpenSearch_2.17

    プレースホルダー値は、ユーザー自身の情報に置き換えてください。

    aws opensearch create-package \ --package-name package-name \ --region region \ --package-type ZIP-PLUGIN \ --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=s3-key \ --engine-version opensearch-version
  2. (オプション) describe-packages コマンドを使用して、検証やセキュリティ脆弱性の検出結果を含む、create-package オペレーションのステータスを表示します。プレースホルダー値は、ユーザー自身の情報に置き換えてください。

    aws opensearch describe-packages \ --region region \ --filters '[{"Name": "PackageType","Value": ["ZIP-PLUGIN"]}, {"Name": "PackageName","Value": ["package-name"]}]'

    コマンドは以下のような情報を返します。

    {
        "PackageDetailsList": [{
            "PackageID": "pkg-identifier",
            "PackageName": "package-name",
            "PackageType": "ZIP-PLUGIN",
            "PackageStatus": "VALIDATION_FAILED",
            "CreatedAt": "2024-11-11T13:07:18.297000-08:00",
            "LastUpdatedAt": "2024-11-11T13:10:13.843000-08:00",
            "ErrorDetails": {
                "ErrorType": "",
                "ErrorMessage": "PluginValidationFailureReason : Dependency Scan reported 3 vulnerabilities for the plugin: CVE-2022-23307, CVE-2019-17571, CVE-2022-23305"
            },
            "EngineVersion": "OpenSearch_2.15",
            "AllowListedUserList": [],
            "PackageOwner": "OWNER-XXXX"
        }]
    }
    注記

    create-package オペレーションの間、Amazon OpenSearch Service は ZIP-PLUGIN の値について、バージョン互換性、サポートされているプラグイン拡張機能、セキュリティの脆弱性をチェックします。セキュリティの脆弱性は、Amazon Inspector サービスを使用してスキャンされます。これらのチェックの結果は、API レスポンスの ErrorDetails フィールドに表示されます。

  3. associate-package コマンドを使用して、プラグインを任意の OpenSearch Service ドメインに関連付けます。その際は、前のステップで作成したパッケージのパッケージ ID を使用します。

    ヒント

    複数のプラグインがある場合は、代わりに associate-packages コマンドを使用します。これにより、1 回のオペレーションで複数のパッケージをドメインに関連付けることができます。

    プレースホルダー値は、ユーザー自身の情報に置き換えてください。

    aws opensearch associate-package \ --domain-name domain-name \ --region region \ --package-id package-id
    注記

    プラグインのインストールおよびアンインストールには、ブルー/グリーンデプロイプロセスが使用されます。

  4. (オプション) list-packages-for-domain コマンドを使用して、関連付けのステータスを表示します。関連付けステータスは、ワークフローが ASSOCIATING から ACTIVE に進行するにつれて変化します。プラグインのインストールが完了し、プラグインを使用できる状態になると、関連付けステータスは ACTIVE に変わります。

    プレースホルダー値を、ユーザー自身の情報に置き換えます。

    aws opensearch list-packages-for-domain \ --region region \ --domain-name domain-name

AWS CLI を使用したカスタムプラグインの更新

update-package コマンドを使用してプラグインを変更します。

注記

必要に応じて、AWS Key Management Service (AWS KMS) キーを指定することで、プラグイン更新時にカスタムプラグインを保護できます。詳細については、「AWS KMS キーセキュリティを使用してカスタムプラグインを作成または更新する」を参照してください。

AWS CLI を使用してカスタムプラグインを更新するには
  • 以下のコマンドを実行してください。プレースホルダー値を、ユーザー自身の情報に置き換えます。

    aws opensearch update-package \ --region region \ --package-id package-id \ --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=s3-key \ --package-description description

パッケージを更新した後は、ssociate-package コマンドまたは associate-packages コマンドを使用して、パッケージの更新をドメインに適用できます。

注記

AWS CloudTrail を使用して、プラグインの監査、作成、更新、関連付け、関連付けの解除のオペレーションを行えます。詳細については、「AWS CloudTrail での Amazon OpenSearch Service API 呼び出しのモニタリング」を参照してください。

AWS KMS キーセキュリティを使用してカスタムプラグインを作成または更新する

AWS KMS キーを指定することで、プラグイン作成または更新時にカスタムプラグインを保護できます。これを行うには、PackageEncryptionOptionstrue に設定し、以下の例に示すように、キーの Amazon リソースネーム (ARN) を指定します。

例: AWS KMS キーセキュリティを使用してカスタムプラグインを作成する

aws opensearch create-package \ --region us-east-2 --package-name my-custom-package \ --package-type ZIP-PLUGIN \ --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=my-s3-key --engine-version OpenSearch_2.15 "PackageConfigOptions": { ... } "PackageEncryptionOptions": { "Enabled": true, "KmsKeyId":"arn:aws:kms:us-east-2:111222333444:key/2ba228d5-1d09-456c-ash9-daf42EXAMPLE" }

例: AWS KMS キーセキュリティを使用してカスタムプラグインを更新する

aws opensearch update-package \ --region us-east-2 --package-name my-custom-package \ --package-type ZIP-PLUGIN \ --package-source S3BucketName=amzn-s3-demo-bucket,S3Key=my-s3-key --engine-version OpenSearch_2.15 "PackageConfigOptions": { ... } "PackageEncryptionOptions": { "Enabled": true, "KmsKeyId":"arn:aws:kms:us-east-2:111222333444:key/2ba228d5-1d09-456c-ash9-daf42EXAMPLE" }
重要

指定した AWS KMS キーが無効化または削除されると、関連付けられたクラスターが動作しなくなる可能性があります。

カスタムパッケージとの AWS KMS 統合の詳細については、「Amazon OpenSearch Service のカスタムパッケージの AWS KMS 統合」を参照してください。

AWS CLI を使用して、カスタムプラグインを持つ OpenSearch Service ドメインを OpenSearch の新しいバージョンにアップグレードする

カスタムプラグインを使用する OpenSearch Service ドメインを、OpenSearch の新しいバージョンにアップグレードする必要がある場合は、以下のプロセスを実行してください。

AWS CLI を使用して、カスタムプラグインを持つ OpenSearch Service ドメインを OpenSearch の新しいバージョンにアップグレードするには
  1. create-package コマンドを使用して、新しい OpenSearch バージョンを指定するプラグインの新しいパッケージを作成します。

    すべてのエンジンバージョンのプラグインでパッケージ名が同じであることを確認します。パッケージ名を変更すると、ブルー/グリーンデプロイ中にドメインのアップグレードプロセスが失敗します。

  2. Amazon OpenSearch Service ドメインのアップグレード」の手順に従って、ドメインを上位バージョンにアップグレードします。

    このプロセス中、Amazon OpenSearch Service は以前のバージョンのプラグインパッケージの関連付けを解除し、ブルー/グリーンデプロイを使用して新しいバージョンをインストールします。

カスタムプラグインのアンインストールと、関連付け解除ステータスの表示

任意のドメインからプラグインをアンインストールするには、disssociate-package コマンドを使用します。このコマンドを実行すると、関連する設定やライセンスパッケージも削除されます。その後、list-packages-for-domain コマンドを使用して、関連付け解除のステータスを表示できます。

ヒント

dissociate-packages コマンドを使用して、1 回のオペレーションでドメインから複数のプラグインをアンインストールすることもできます。

カスタムプラグインをアンインストールして、関連付け解除ステータスを表示するには
  1. すべてのインデックスでプラグインを無効にします。これは、プラグインパッケージの関連付けを解除する前に行う必要があります。

    すべてのインデックスからプラグインを無効にする前にプラグインをアンインストールしようとすると、ブルー/グリーンデプロイプロセスは Processing 状態でスタックしたままになります。

  2. 次のコマンドを実行して、プラグインをアンインストールします。プレースホルダー値を、ユーザー自身の情報に置き換えます。

    aws opensearch dissociate-package \ --region region \ --package-id plugin-package-id \ --domain-name domain name
  3. (オプション) list-packages-for-domain コマンドを実行して、関連付け解除のステータスを表示します。