

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

# チュートリアル: Amazon OpenSearch Service への移行
<a name="migration"></a>

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

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

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

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

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

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

## スナップショットの作成とアップロード
<a name="migration-take-snapshot"></a>

[repository-s3](https://docs.opensearch.org/latest/opensearch/snapshot-restore/#amazon-s3) プラグインを使用して S3 に直接スナップショットを取得できますが、プラグインをすべてのノードにインストールし、調整 `opensearch.yml` (または Elasticsearch クラスター`elasticsearch.yml`を使用している場合）、各ノードを再起動し、 AWS 認証情報を追加して、最後にスナップショットを作成する必要があります。このプラグインは、継続使用や大規模なクラスターの移行の場合に役立ちます。

小規模なクラスターの場合、1 回限りのアプローチとして、[共有ファイルシステムのスナップショット](https://docs.opensearch.org/latest/opensearch/snapshot-restore/#shared-file-system)を作成し、 を使用して S3 AWS CLI にアップロードします。すでにスナップショットを作成している場合は、手順 4 に進んでください。

****スナップショットを取り、Amazon S3 にアップロードするには****

1. すべてのノードで `opensearch.yml` (または `Elasticsearch.yml`) に `path.repo` 設定を追加して、各ノードを再起動します。

   ```
   path.repo: ["/my/shared/directory/snapshots"]
   ```

1. スナップショットを作成する前に必要な [スナップショットリポジトリ](https://opensearch.org/docs/latest/opensearch/snapshot-restore/#register-repository) を登録します。リポジトリは単なる保存場所です。共有ファイルシステム、Amazon S3、File system distribuito Hadoop (HDFS) などです。この場合、共有ファイルシステム (「fs」) を使用します。

   ```
   PUT _snapshot/my-snapshot-repo-name
   {
     "type": "fs",
     "settings": {
       "location": "/my/shared/directory/snapshots"
     }
   }
   ```

1. スナップショットを作成します。

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

1. [AWS CLI](https://aws.amazon.com/cli/) をインストールし、`aws configure` を実行して認証情報を追加します。

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

   ```
   aws s3 mb s3://amzn-s3-demo-bucket --region us-west-2
   aws s3 sync . s3://amzn-s3-demo-bucket --sse AES256
   ```

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

## ドメインの作成
<a name="migration-create-domain"></a>

コンソールはドメインを作成する最も簡単な方法ですが、この場合、ターミナルはすでに開いていて、 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": "arn:aws:iam::aws-region:user/UserName"},"Action":["es:ESHttp*"],"Resource":"arn:aws:es:aws-region:111122223333:domain/migration-domain/*"}]}' \
  --region aws-region
```

このコマンドでは、それぞれ 100 GiB のストレージを持つ 2 つのデータノードがあるインターネットにアクセス可能なドメインが作成されます。また、HTTP Basic 認証とすべての暗号化の設定により、[きめ細かなアクセスコントロール](fgac.md)が可能になります。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 は、スナップショットがサポートしている最新バージョンを選択することをお勧めします。互換性のあるバージョンのテーブルについては、「[スナップショットを使用してデータを移行する](snapshot-based-migration.md)」を参照してください。

## S3 バケットへの許可を提供します。
<a name="migration-permissions"></a>

 AWS Identity and Access Management (IAM) コンソールで、[次のアクセス許可と信頼関係を持つロールを作成します](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)。 [https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)ロールの作成時に、**AWS サービス**として **S3** を選択します。このロールには、分かりやすいように `OpenSearchSnapshotRole` と名前を付けます。

**アクセス許可**

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

****  

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

------

**信頼関係**

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

****  

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

------

次に、個人的な IAM ロールに、`OpenSearchSnapshotRole` を引き受ける許可を付与します。以下のポリシーを作成して、アイデンティティに[アタッチ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)します。

**アクセス許可**

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

****  

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

------

### OpenSearch Dashboards にスナップショットロールをマッピングします (きめ細かなアクセスコントロールを使用している場合)
<a name="migration-snapshot-role"></a>

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

**スナップショットを使用するためのアイデンティティの許可を提供するには**

1. OpenSearch Service ドメインの作成時に指定したマスターユーザーの認証情報を使用して Dashboards にログインします。Dashboards URL は、OpenSearch Service コンソールに表示されます。`https://domain-endpoint/_dashboards/` の形式です。

1. メインメニューから [**セキュリティ**]、[**ロール**] を選択し、[**manage\$1snapshots**] ロールを選択します。

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

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

   ```
   arn:aws:iam::123456789123:user/user-name
   ```

   ```
   arn:aws:iam::123456789123:role/role-name
   ```

1. **マップ**を選択し、ロールが**マッピングされたユーザー**に表示されていることを確認します。

## スナップショットを復元する
<a name="migration-restore"></a>

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

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

![\[Postman interface showing Authorization settings for AWS API request with Signature type.\]](http://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/images/migration2.png)


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

1. リクエストにどのような方法で署名するかにかかわらず、まずリポジトリを登録します。

   ```
   PUT _snapshot/my-snapshot-repo-name
   {
     "type": "s3",
     "settings": {
       "bucket": "amzn-s3-demo-bucket",
       "region": "us-west-2",
       "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole"
     }
   }
   ```

1. 次に、リポジトリ内のスナップショットを一覧表示し、復元するスナップショットを見つけます。この時点で、Postman を続けて使用するか、[curl](https://curl.haxx.se/) などのツールに切り替えることができます。

   **短縮構文**

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

1. スナップショットを復元します。

   **短縮構文**

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

1. 最後に、インデックスが正常に復元されていることを検証します。

   **短縮構文**

   ```
   GET _cat/indices?v
   ```

   **curl**

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

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