チュートリアル: Amazon OpenSearch Service への移行 - Amazon OpenSearch サービス

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

チュートリアル: Amazon OpenSearch Service への移行

インデックススナップショットは、セルフマネージド OpenSearch または従来の Elasticsearch クラスターから Amazon OpenSearch Service に移行する一般的な方法です。そのプロセスは、大きく分けて以下のステップで構成されています。

  1. 既存のクラスターのスナップショットを作成し、そのスナップショットを Amazon S3 バケットにアップロードする。

  2. OpenSearch Service ドメインを作成する。

  3. バケットにアクセスするための許可を OpenSearch Service に付与し、スナップショットを使用するための許可があることを確認する。

  4. OpenSearch Service ドメインでスナップショットを復元する。

このチュートリアルでは、より詳細な手順と代替のオプション (ある場合) について説明します。

スナップショットの作成とアップロード

repository-s3 プラグインを使用すると、スナップショットを S3 に直接作成できます。ただし、このプラグインをすべてのノードにインストールし、opensearch.yml (または Elasticsearch クラスターを使用している場合は elasticsearch.yml) を設定し、各ノードを再起動し、AWS 認証情報を追加した上で、スナップショットを作成する必要があります。このプラグインは、継続使用や大規模なクラスターの移行の場合に役立ちます。

小規模なクラスターの場合は、1 回ごとに共有ファイルシステムのスナップショットを作成して、AWS CLI を使用して S3 にアップロードする方法があります。すでにスナップショットを作成している場合は、手順 4 に進んでください。

スナップショットを取り、Amazon S3 にアップロードするには
  1. すべてのノードで opensearch.yml (または Elasticsearch.yml) に path.repo 設定を追加して、各ノードを再起動します。

    path.repo: ["/my/shared/directory/snapshots"]
  2. スナップショットを作成する前に必要な スナップショットリポジトリ を登録します。リポジトリは単なる保存場所です。共有ファイルシステム、Amazon S3、File system distribuito Hadoop (HDFS) などです。この場合、共有ファイルシステム (「fs」) を使用します。

    PUT _snapshot/my-snapshot-repo-name { "type": "fs", "settings": { "location": "/my/shared/directory/snapshots" } }
  3. スナップショットを作成します。

    PUT _snapshot/my-snapshot-repo-name/my-snapshot-name { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }
  4. AWS CLI をインストールし、aws configure を実行して認証情報を追加します。

  5. スナップショットのディレクトリに移動します。次のコマンドを実行して新しい S3 バケットを作成し、スナップショットのディレクトリの中身をそのバケットにアップロードします。

    aws s3 mb s3://bucket-name --region us-west-2 aws s3 sync . s3://bucket-name --sse AES256

    スナップショットのサイズとインターネット接続の速度によっては、この操作に時間がかかる場合があります。

ドメインの作成

コンソールはドメインを作成する最も簡単な方法です。この例では、すでにターミナルを開いており、AWS CLI がインストールされています。次のコマンドを変更して、ニーズに合わせてドメインを作成してください。

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

このコマンドでは、それぞれ 100 GiB のストレージを持つ 2 つのデータノードがあるインターネットにアクセス可能なドメインが作成されます。また、HTTP Basic 認証とすべての暗号化の設定により、きめ細かなアクセスコントロールが可能になります。VPC などのアドバンストセキュリティ設定が必要な場合は、OpenSearch Service コンソールを使用してください。

このコマンドを発行する前に、ドメイン名、マスターユーザーの認証情報、アカウント番号を変更します。S3 バケットに使用したものと同じAWS リージョンと、スナップショットと互換性のある OpenSearch/Elasticsearch のバージョンを指定します。

重要

スナップショットには上位互換性のみがあり、その対象は 1 つのメジャーバージョンのみです。例えば、Elasticsearch 7.x クラスター上の OpenSearch 1 x クラスターからスナップショットを復元することはできず、OpenSearch 1.x または 2.x クラスターのみです。また、マイナーバージョンも同様です。セルフマネージド 5.3.3 クラスターのスナップショットを 5.3.2 の OpenSearch Service ドメインに復元することはできません。OpenSearch または Elasticsearch は、スナップショットがサポートしている最新バージョンを選択することをお勧めします。互換性のあるバージョンのテーブルについては、「スナップショットを使用してデータを移行する」を参照してください。

S3 バケットへの許可を提供します。

AWS Identity and Access Management (IAM) コンソールで、以下の許可と信頼関係を持つロールを作成します。ロールの作成時に、AWS サービスとして S3 を選択します。このロールには、分かりやすいように OpenSearchSnapshotRole と名前を付けます。

アクセス許可

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-name" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-name/*" ] } ] }

信頼関係

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

次に、個人的な IAM ロールに、OpenSearchSnapshotRole を引き受ける許可を付与します。以下のポリシーを作成して、アイデンティティにアタッチします。

アクセス許可

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } ] }

OpenSearch Dashboards にスナップショットロールをマッピングします (きめ細かなアクセスコントロールを使用している場合)

きめ細かなアクセスコントロールを有効にした場合は、HTTP 基本認証をその他すべての目的で使用する場合でも、manage_snapshots ロールを IAM ロールにマップして、スナップショットを使用できるようにする必要があります。

スナップショットを使用するためのアイデンティティの許可を提供するには
  1. OpenSearch Service ドメインの作成時に指定したマスターユーザーの認証情報を使用して Dashboards にログインします。Dashboards URL は、OpenSearch Service コンソールに表示されます。https://domain-endpoint/_dashboards/ の形式です。

  2. メインメニューから [セキュリティ]、[ロール] を選択し、[manage_snapshots] ロールを選択します。

  3. [マッピングされたユーザー][マッピングの管理] を選択します。

  4. 適切なフィールドに、個人的な IAM ロールのドメイン ARN を追加します。ARN は次のいずれかの形式となります。

    arn:aws:iam::123456789123:user/user-name
    arn:aws:iam::123456789123:role/role-name
  5. マップを選択し、ロールがマッピングされたユーザーに表示されていることを確認します。

スナップショットを復元する

ここでは、OpenSearch Service ドメインにアクセスする方法が 2 つあります。1 つはマスターユーザーの認証情報を使用した HTTP Basic 認証で、もう 1 つは IAM 認証情報を使用した AWS 認証です。スナップショットはマスターユーザーの概念がない Amazon S3 を使用するため、IAM 認証情報を使用してスナップショットのリポジトリを OpenSearch Service ドメインに登録する必要があります。

ほとんどのプログラミング言語にはリクエストの署名に役立つライブラリがありますが、Postman などのツールを使用して IAM 認証情報を [認可] セクションに入力するのが簡単な方法です。

Postman interface showing Authorization settings for AWS API request with Signature type.
スナップショットを復元するには
  1. リクエストにどのような方法で署名するかにかかわらず、まずリポジトリを登録します。

    PUT _snapshot/my-snapshot-repo-name { "type": "s3", "settings": { "bucket": "bucket-name", "region": "us-west-2", "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } }
  2. 次に、リポジトリ内のスナップショットを一覧表示し、復元するスナップショットを見つけます。この時点で、Postman を続けて使用するか、curl などのツールに切り替えることができます。

    短縮構文

    GET _snapshot/my-snapshot-repo-name/_all

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/_all
  3. スナップショットを復元します。

    短縮構文

    POST _snapshot/my-snapshot-repo-name/my-snapshot-name/_restore { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }

    curl

    curl -XPOST -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/my-snapshot-name/_restore \ -H 'Content-Type: application/json' \ -d '{"indices":"migration-index1,migration-index2,other-indices-*","include_global_state":false}'
  4. 最後に、インデックスが正常に復元されていることを検証します。

    短縮構文

    GET _cat/indices?v

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_cat/indices?v

これで、移行は完了です。続いて、新しい OpenSearch Service エンドポイントを使用するようにクライアントを設定したり、ワークロードに合わせてドメインのサイズを変更したり、インデックスのシャード数を確認したり、IAM マスターユーザーに切り替えたり、OpenSearch Dashboards での可視化の構築を開始したりすることができます。