外部で作成されたバックアップによる新しいクラスターのシード - Amazon ElastiCache for Redis

外部で作成されたバックアップによる新しいクラスターのシード

新しい Redis クラスターを作成するときに、Redis .rdb バックアップファイルのデータでシードできます。クラスターをシードすることは、現在 ElastiCache の外部で Redis インスタンスを管理していて、Redis クラスターの新しい ElastiCache に既存の Redis データを入力する場合に役に立ちます。

Amazon ElastiCache 内で作成された Redis バックアップから新しい Redis クラスターのシード値を設定する方法については、「クラスターのサイズ変更 (オプション) によるバックアップからの復元」を参照してください。

新しい Redis .rdb ファイルを使用して新しい Redis クラスターをシードするときは、以下を実行できます。

  • パーティション分割されていないクラスターから、Redis バージョン 3.2.4 を実行している Redis(クラスターモードが有効 クラスターにアップグレードします。

  • 新しいクラスターのシャード (API および CLI ではノードグループと呼ばれる) の数を指定します。この数は、バックアップファイルの作成に使用されたクラスター内のシャードの数とは異なる場合があります。

  • 新しいクラスタに異なるノードタイプを指定します。つまり、バックアップを作成したクラスタで使用されているノードタイプよりも大きいか小さいかを指定します。より小さいノードタイプにスケールダウンする場合は、新しいノードタイプに、データと Redis のオーバーヘッドに対する十分なメモリがあることを確認してください。詳細については、「Redis スナップショットを作成するのに十分なメモリがあることの確認」を参照してください。

  • バックアップファイルの作成に使用されたクラスターとは異なる新しい Redis (クラスターモードが有効) クラスターのスロットで、キーを分散します。

注記

Redis (クラスターモードが無効) クラスターから作成された .rdb ファイルから Redis (クラスターモードが無効) クラスターをシードすることはできません。

重要
  • Redis バックアップデータがノードのリソースを超えていないことを確認する必要があります。たとえば、2.9 GB のメモリがある cache.m3.medium ノードに、5 GB の Redis データがある .rdb ファイルをアップロードすることはできません。

    バックアップが大きすぎる場合、クラスターのステータスは restore-failed になります。その場合は、クラスターを削除してやり直す必要があります。

    ノードの種類および仕様の一覧については、「Redis のノードタイプ固有のパラメータ」および Amazon ElastiCache 製品の特徴と詳細を参照してください。

  • Redis .rdb ファイルは、Amazon S3 サーバー側の暗号化 (SSE-S3) でのみ暗号化できます。詳細については、「サーバー側の暗号化を使用したデータの保護」を参照してください。

以下では、Redis クラスターを ElastiCache for Redis の外部から ElastiCache for Redis に移行する方法について説明します。

ステップ 1: Redis バックアップを作成する

Redis バックアップを作成して、ElastiCache for Redis インスタンスをシードするには

  1. 既存の Redis インスタンスに接続します。

  2. Redis BGSAVE オペレーションまたは SAVE オペレーションを実行してバックアップを作成します。.rdb ファイルの場所を書き留めておきます。

    BGSAVE は非同期処理であり、処理中も他のクライアントをブロックしません。詳細については、Redis ウェブサイトの「BGSAVE」を参照してください。

    SAVE が同期され、完了するまで他のプロセスがブロックされます。詳細については、Redis ウェブサイトの「SAVE」を参照してください。

バックアップの作成の詳細については、Redis ウェブサイトの「Redis Persistence」を参照してください。

ステップ 2: Amazon S3 バケットとフォルダを作成する

バックアップファイルを作成したら、Amazon S3 バケット内のフォルダにアップロードする必要があります。これを行うには、最初にそのバケット内に Amazon S3 バケットとフォルダが必要です。既に適切なアクセス許可を持つ Amazon S3 バケットフォルダがある場合は、「ステップ 3: バックアップを Amazon S3 にアップロードする」に進むことができます。

Amazon S3 バケットを作成するには:

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. Amazon S3 バケットを作成するには、Amazon Simple Storage Service ユーザーガイドの「バケットの作成」の手順に従います。

    Amazon S3 バケットの名前は DNS に準拠している必要があります。それ以外の場合、ElastiCache はバックアップファイルにアクセスできません。DNS コンプライアンスのルールは次のとおりです。

    • 名前は、3~63 文字以内にする必要があります。

    • 名前は、ピリオド (.) で区切られた 1 つのラベルまたは一連の複数のラベルとして指定します。

      • 先頭の文字には小文字の英文字または数字を使用します。

      • 終了の文字には小文字の英文字または数字を使用します。

      • 小文字の英文字、数字、およびダッシュのみを含めます。

    • 名前は IP アドレスの形式にすることはできません (例: 192.0.2.0)。

    Amazon S3 バケットは、新しい ElastiCache for Redis クラスターと同じ AWS リージョンで作成する必要があります。このアプローチにより、ElastiCache が Amazon S3 から .rdb ファイルを読み取る場合のデータ転送速度が最大限に速くなります。

    注記

    データを可能な限り安全に保つには、Amazon S3 バケットに対するアクセス許可をできるだけ制限します。同時に、バケットとその内容を使用して新しい Redis クラスターをシードするためのアクセス許可を付与する必要があります。

Amazon S3 バケットにフォルダを追加するには

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. .rdb ファイルのアップロード先となるバケットの名前を選択します。

  3. Create folder (フォルダの作成) を選択します。

  4. 新しいフォルダの名前を入力します。

  5. [Save] を選択します。

    バケット名とフォルダ名の両方の名前を書き留めます。

ステップ 3: バックアップを Amazon S3 にアップロードする

次に、「ステップ 1: Redis バックアップを作成する」で作成した .rdb ファイルをアップロードします。アップロード先は、「ステップ 2: Amazon S3 バケットとフォルダを作成する」で作成した Amazon S3 バケットとフォルダです。このタスクの詳細については、「バケットへのオブジェクトの追加」を参照してください。ステップ 2 と 3 の間に、作成したフォルダ名を選択します。

.rdb ファイルを Amazon S3 フォルダにアップロードするには

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. ステップ 2 で作成した Amazon S3 バケットの名前を選択します。

  3. ステップ 2 で作成したフォルダの名前を選択します。

  4. [Upload] (アップロード) を選択します。

  5. [Add files] を選択します。

  6. アップロードする 1 つまたは複数のファイルを参照して見つけ、そのファイルを選択します。複数のファイルを選択するには、Ctrl キーを押しながら各ファイル名を選択します。

  7. [Open (開く)] を選択します。

  8. 正しいファイルが [Upload] ダイアログボックスに表示されることを確認してから、[Upload] を選択します。

.rdb ファイルへのパスを記録します。たとえば、バケット名が myBucket で、パスが myFolder/redis.rdb の場合は、「myBucket/myFolder/redis.rdb」と入力します。新しいクラスターにこのバックアップのデータをシードする際にこのパスが必要です。

詳細については、Amazon Simple Storage Service ユーザーガイドBucket restrictions and limitations を参照してください。

ステップ 4: .rdb ファイルへの読み込みアクセスを ElastiCache に付与する

ここで、.rdb バックアップファイルへの読み取りアクセス権を ElastiCache に付与します。バケットファイルへのアクセス権は、バケットがデフォルトの AWS リージョンにあるか、オプトインする AWS リージョンにあるかによって、異なる方法で ElastiCache に付与します。

2019 年 3 月 20 日より前に導入された AWS リージョンはデフォルトで有効になっています。これらの AWS リージョンでは、すぐに使用を開始できます。2019 年 3 月 20 日以降に導入されたアジアパシフィック (香港) および中東 (バーレーン) などのリージョンは、デフォルトで無効になっています。「AWS 全般のリファレンス」の「AWS リージョンの管理」で説明されているように、これらのリージョンを使用する前に、それらを有効にするか、オプトインする必要があります。

AWS リージョンに応じてアプローチを選択します。

デフォルトリージョンの .rdb ファイルへの読み取りアクセス権を ElastiCache に付与する

2019 年 3 月 20 日より前に導入された AWS リージョンはデフォルトで有効になっています。これらの AWS リージョンでは、すぐに使用を開始できます。2019 年 3 月 20 日以降に導入されたアジアパシフィック (香港) および中東 (バーレーン) などのリージョンは、デフォルトで無効になっています。「AWS 全般のリファレンス」の「AWS リージョンの管理」で説明されているように、これらのリージョンを使用する前に、それらを有効にするか、オプトインする必要があります。

デフォルトで有効になっている AWS リージョンのバックアップファイルへの読み取りアクセス権を ElastiCache に付与するには

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. .rdb ファイルを含む S3 バケットの名前を選択します。

  3. .rdb ファイルを含むフォルダの名前を選択します。

  4. .rdb バックアップファイルの名前を選択します。選択したファイルの名前は、ページ先頭のタブの上に表示されます。

  5. [Permissions] (許可) を選択します。

  6. aws-scs-s3-readonly または次のリストの正規化 ID の 1 つがユーザーとして表示されていない場合は、以下の作業を行います。

    1. [Access for other AWS accounts] の下の [Add grantee] を選択します。

    2. ボックスに、以下に示す AWS リージョンの正規化 ID を追加します。

      • AWS GovCloud (米国西部) リージョン:

        40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
        重要

        お客様がバックアップを AWS GovCloud (US) 内の Redis クラスターにダウンロードするには、そのバックアップが AWS GovCloud (US) 内の S3 バケットにあることが必要です。

      • AWS リージョンはデフォルトで有効

        540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
    3. 以下について、[はい] を選択してバケットのアクセス許可を設定します。

      • [List/write object] (オブジェクトのリスト化/書き込み)

      • [Read/write object ACL permissions] (オブジェクト ACL の読み取り/書き込みアクセス許可)

    4. [Save] を選択します。

  7. [Overview] を選択し、[Download] を選択します。

オプトインリージョンの .rdb ファイルへの ElastiCache の読み取りアクセス権を付与する

2019 年 3 月 20 日より前に導入された AWS リージョンはデフォルトで有効になっています。これらの AWS リージョンでは、すぐに使用を開始できます。2019 年 3 月 20 日以降に導入されたアジアパシフィック (香港) および中東 (バーレーン) などのリージョンは、デフォルトで無効になっています。「AWS 全般のリファレンス」の「AWS リージョンの管理」で説明されているように、これらのリージョンを使用する前に、それらを有効にするか、オプトインする必要があります。

ここで、.rdb バックアップファイルへの読み取りアクセス権を ElastiCache に付与します。

バックアップファイルへの読み込みアクセスを ElastiCache に許可するには

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. .rdb ファイルを含む S3 バケットの名前を選択します。

  3. .rdb ファイルを含むフォルダの名前を選択します。

  4. .rdb バックアップファイルの名前を選択します。選択したファイルの名前は、ページ先頭のタブの上に表示されます。

  5. [Permissions] (許可) タブを選択します。

  6. [Permissions] (許可) で、[Bucket policy] (バケットポリシー) を選択し、[Edit] (編集) を選択します。

  7. ポリシーを更新して、オペレーションの実行に必要なアクセス許可を ElastiCache に付与します。

    • [ "Service" : "region-full-name.elasticache-snapshot.amazonaws.com" ]Principal に追加します。

    • スナップショットを Amazon S3 バケットにエクスポートするために必要な、以下のアクセス許可を追加します。

      • "s3:GetObject"

      • "s3:ListBucket"

      • "s3:GetBucketAcl"

    次に、更新されたポリシーの例を示します。

    { "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "ap-east-1.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/backup1.rdb", "arn:aws:s3:::example-bucket/backup2.rdb" ] } ] }
  8. [Save changes] (変更の保存) をクリックします。

ステップ 5: ElastiCache クラスターと .rdb ファイルデータを提携させる

これで ElastiCache クラスターを作成し、.rdb ファイルのデータと提携する準備が整いました。クラスターを作成するには、「クラスターの作成」または「ゼロからの Redis レプリケーショングループの作成」の手順に従います。Redis がクラスターエンジンとして選択されていることを確認してください。

さらに、お客様が ElastiCache に使用するよう指示した方法は、Amazon S3 にアップロードしたバックアップがどこにあるのかを検索するものですが、これはクラスターの作成に使用する方法によって異なります。

ElastiCache for Redis クラスターまたはレプリケーショングループと .rdb ファイルデータを提携させる

  • ElastiCache コンソールの使用

    Redis エンジンを選択したら、[Advanced Redis settings] セクションを展開し、[Import data to cluster] を見つけます。[Seed RDB file S3 location] ボックスに、ファイルの Amazon S3 パスを入力します。複数の .rdb ファイルがある場合は、カンマ区切りのリストで各ファイルのパスを入力します。Amazon S3 パスは myBucket/myFolder/myBackupFilename.rdb のようになります。

  • AWS CLI の使用

    create-cache-cluster または create-replication-group オペレーションを使用する場合、パラメータ --snapshot-arns を使用して、各 .rdb ファイルの完全修飾 ARN を指定します 例えば、arn:aws:s3:::myBucket/myFolder/myBackupFilename.rdb です。ARN は、Amazon S3 に保存したバックアップファイルに解決される必要があります。

  • ElastiCache API の使用

    CreateCacheCluster または CreateReplicationGroup ElastiCache API オペレーションを使用する場合、パラメータ SnapshotArns を使用して、各 .rdb ファイルの完全修飾 ARN を指定します 例えば、arn:aws:s3:::myBucket/myFolder/myBackupFilename.rdb です。ARN は、Amazon S3 に保存したバックアップファイルに解決される必要があります。

重要

Redis (クラスターモードが有効) クラスターを提携させる場合は、新しいクラスターまたはレプリケーショングループの各ノードグループ (シャード) を設定する必要があります。これを行うには、パラメータ --node-group-configuration (API: NodeGroupConfiguration) を使用します。詳細については、次を参照してください。

クラスターの作成処理中、Redis バックアップ内のデータがクラスターに書き込まれます。ElastiCache イベントメッセージを表示して、進行状況をモニタリングできます。これを行うには、ElastiCache コンソールを参照し、[キャッシュイベント] を選択します。AWS ElastiCache コマンドラインインターフェイスまたは ElastiCache API を使用して、イベントメッセージを取得することもできます。詳細については、「ElastiCache イベントの表示」を参照してください。