バックアップのエクスポート - Amazon ElastiCache for Redis

バックアップのエクスポート

Amazon ElastiCache は、ElastiCache バックアップの Amazon Simple Storage Service (Amazon S3) バケットへのエクスポートをサポートしています。これにより、ElastiCache の外部からバックアップにアクセスできます。ElastiCache コンソール、AWS CLI、または ElastiCache API を使用して、バックアップをエクスポートできます。

バックアップのエクスポートは、他の AWS リージョンのクラスターを起動する必要がある場合に便利です。1 つの AWS リージョンでデータをエクスポートし、.rdb ファイルを新しい AWS リージョンにコピーして、その .rdb ファイルを使うことにより、新しいクラスターの入力を待つのではなく、新しいクラスターをシードできます。新しいクラスターのシードについては、「外部で作成されたバックアップによる新しいクラスターのシード」を参照してください。クラスターのデータをエクスポートする別の理由は、オフライン処理のために .rdb ファイルを使用するためです。

重要

ElastiCache バックアップと、そのコピー先の Amazon S3 バケットは、同じ AWS リージョンにあることが必要です。

Amazon S3 バケットにコピーされたバックアップは暗号化されますが、バックアップを保存する Amazon S3 バケットへのアクセス権を他の人に付与しないことを強くお勧めします。

バックアップをAmazon S3 バケットにエクスポートする前に、バックアップと同じ AWS リージョンに Amazon S3 バケットが必要です。バケットへのアクセス権を ElastiCache に付与します。最初の 2 つのステップで、これを行う方法を示します。

警告

以下のシナリオでは、望まない方法でデータが公開される可能性があります。

  • 他のユーザーがバックアップのエクスポート先の Amazon S3 バケットにアクセスできる。

    バックアップへのアクセスを制御するために、データにアクセスする必要があるユーザーにのみ Amazon S3 バケットへのアクセスを許可します。Amazon S3 バケットへのアクセスの管理については、Amazon S3 デベロッパーガイドの「アクセスの管理」を参照してください。

  • 他のユーザーが CopySnapshot API を使用するためのアクセス許可を持っている。

    CopySnapshot API オペレーションを使用するためのアクセス許可のあるユーザーまたはグループは、独自の Amazon S3 バケットを作成し、このバケットにバックアップをコピーできます。バックアップへのアクセスを制御するには、AWS Identity and Access Management (IAM) ポリシーにより、だれが CopySnapshot API を使用できるかを管理します。IAM を使用して ElastiCache API オペレーションの使用を制御する方法については、ElastiCache ユーザーガイドの「Amazon ElastiCache での Identity and Access Managementq」を参照してください。

ステップ 1: Amazon S3 バケットを作成する

以下の手順では、Amazon S3 コンソールを使用して、ElastiCache バックアップをエクスポートおよび保存する Amazon S3 バケットを作成します。

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

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

  2. [Create Bucket] を選択します。

  3. [Create a Bucket - Select a Bucket Name and Region] で、以下の操作を実行します。

    1. [Bucket Name] に Amazon S3 バケットの名前を入力します。

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

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

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

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

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

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

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

    2. [リージョン] リストから、Amazon S3 バケットの AWS リージョンを選択します。この AWS リージョンは、エクスポートする ElastiCache バックアップと同じ AWS リージョンである必要があります。

    3. [Create] を選択します。

Amazon S3 バケットの作成の詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットの作成」を参照してください。

ステップ 2: Amazon S3 バケットへのアクセス権を ElastiCache に付与する

ElastiCache がスナップショットを Amazon S3 バケットにコピーできるようにするには、バケットへのアクセス権を付与します。Amazon S3 バケットへのアクセス権は、バケットがデフォルトの AWS リージョンにあるか、オプトイン AWS リージョンにあるかによって、異なる方法で ElastiCache に付与します。

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

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

デフォルトリージョンの S3 バケットへのアクセス権を ElastiCache に付与する

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

デフォルトで有効になっている AWS リージョンの Amazon S3 バケットで適切なアクセス許可を作成するには、以下の手順を実行します。

警告

Amazon S3 バケットにコピーされるバックアップは暗号化されますが、Amazon S3 バケットへのアクセス権を持つユーザーなら、誰でもデータにアクセスできます。したがって、この Amazon S3 バケットへの不正アクセスを防ぐよう IAM ポリシーを設定することを強くお勧めします。詳細については、Amazon S3 デベロッパーガイドの「アクセス管理」を参照してください。

デフォルトの AWS リージョンの S3 バケットへのアクセス権を ElastiCache に付与するには

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

  2. バックアップのコピー先とする Amazon S3 バケットの名前を選択します。これは、「ステップ 1: Amazon S3 バケットを作成する」で作成した S3 バケットとなります。

  3. バケットの AWS リージョンが ElastiCache バックアップの AWS リージョンと同じであることを確認します。同じでない場合は、「ステップ 1: Amazon S3 バケットを作成する」に戻り、バックアップするクラスターと同じ AWS リージョンに新しいバケットを作成します。

  4. [Permissions] タブを選択し、[アクセスコントロールリスト] を選択します。次に、[他の AWS アカウントへのアクセス] で [被付与者の追加] を選択します。

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

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

      40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
      重要

      バックアップは AWS GovCloud (US) 内の S3 バケットにエクスポートする必要があります。

    • その他すべての AWS リージョンは、デフォルトで有効になっています。

      540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
  6. 次のオプションで [はい] を選択して、バケットのアクセス許可を設定します。

    • オブジェクトのリスト化

    • オブジェクトの書き込み

    • バケットの読み取りアクセス権限

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

これで、Amazon S3 バケットでは、ElastiCache コンソール、AWS CLI、または ElastiCache API を使用して、 ElastiCache バックアップをエクスポートする準備ができました。

オプトインリージョンの S3 バケットへのアクセス権を ElastiCache に付与する

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

オプトイン AWS リージョンの Amazon S3 バケットで適切なアクセス許可を作成するには、以下の手順を実行します。

オプトイン AWS リージョンの S3 バケットへのアクセス権を ElastiCache に付与するには

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

  2. バックアップのコピー先とする Amazon S3 バケットの名前を選択します。これは、「ステップ 1: Amazon S3 バケットを作成する」で作成した S3 バケットとなります。

  3. [Permissions] タブを選択し、[Permissions] で [Bucket policy] を選択します。

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

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

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

      • "s3:PutObject"

      • "s3:GetObject"

      • "s3:ListBucket"

      • "s3:GetBucketAcl"

      • "s3:ListMultipartUploadParts"

      • "s3:ListBucketMultipartUploads"

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

    { "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "aws-opt-in-region.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/*" ] } ] }

ステップ 3: ElastiCache バックアップをエクスポートする

これで、S3 バケットを作成し、そのバケットにアクセスするためのアクセス許可を ElastiCache に付与しました。次は、ElastiCache コンソール、AWS CLI、または ElastiCache API を使用して、スナップショットをそのバケットにエクスポートできます。以下では、次の S3 固有の IAM アクセス許可を持っていることを前提としています。

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

以下のプロセスでは、ElastiCache コンソールを使用してバックアップを Amazon S3 バケットにエクスポートし、ElastiCache 外部からアクセスできるようにします。Amazon S3 バケットは、ElastiCache バックアップと同じ AWS リージョンにある必要があります

ElastiCache バックアップを Amazon S3 バケットにエクスポートするには

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

  2. バックアップのリストを表示するには、左のナビゲーションペインから [Backups] を選択します。

  3. バックアップのリストから、エクスポートするバックアップの名前の左にあるチェックボックスをオンにします。

  4. [Copy (コピー)] を選択します。

  5. [Create Copy of the Backup? (バックアップのコピーを作成しますか)] ダイアログボックスで、以下の設定を指定します。

    1. [New backup name] ボックスに、新しいバックアップの名前を入力します。

      この名前は 1 ~ 1,000 文字で、UTF-8 エンコードが可能である必要があります。

      ElastiCache は、ここで入力した値に、インスタンス識別子と .rdb を追加します。たとえば、「my-exported-backup」と入力した場合、ElastiCache によって my-exported-backup-0001.rdb が作成されます。

    2. [Target S3 Location] リストから、バックアップをコピーする Amazon S3 バケット (「ステップ 1: Amazon S3 バケットを作成する」で作成したバケット) の名前を選択します。

      エクスポートプロセスが成功するためには、[Target S3 Location] は、次のアクセス許可を持つバックアップの AWS リージョン内の Amazon S3 バケットである必要があります。

      • オブジェクトアクセス – [読み取り] および [書き込み]。

      • アクセス許可 – [読み取り]

      詳細については、「ステップ 2: Amazon S3 バケットへのアクセス権を ElastiCache に付与する」を参照してください。

    3. [Copy (コピー)] を選択します。

注記

S3 バケットにバックアップをエクスポートするためのアクセス許可が ElastiCache にない場合、以下のいずれかのエラーメッセージを受け取ります。「ステップ 2: Amazon S3 バケットへのアクセス権を ElastiCache に付与する」に戻り、示されたアクセス権限を追加して、バックアップのエクスポートを再試行してください。

  • ElastiCache has not been granted READ permissions %s on the S3 Bucket.

    解決策: バケットで読み取りのアクセス権限を追加します。

  • ElastiCache has not been granted WRITE permissions %s on the S3 Bucket.

    解決策: バケットで書き込みのアクセス権限を追加します。

  • ElastiCache has not been granted READ_ACP permissions %s on the S3 Bucket.

    解決策: バケットで読み取りのアクセス権限を追加します。

別の AWS リージョンにバックアップをコピーする場合は、Amazon S3 を使用してコピーします。詳細については、Amazon Simple Storage Service ユーザーガイドの「オブジェクトのコピー」を参照してください。

以下のパラメータを指定して copy-snapshot CLI オペレーションを使用することで、Amazon S3 バケットにバックアップをエクスポートします。

Parameters

  • --source-snapshot-name – コピーするバックアップの名前。

  • --target-snapshot-name – バックアップのコピーの名前。

    この名前は 1 ~ 1,000 文字で、UTF-8 エンコードが可能である必要があります。

    ElastiCache は、ここで入力した値に、インスタンス識別子と .rdb を追加します。たとえば、「my-exported-backup」と入力した場合、ElastiCache によって my-exported-backup-0001.rdb が作成されます。

  • --target-bucket – バックアップをエクスポートする Amazon S3 バケットの名前。バックアップのコピーは、指定したバケットで作成されます。

    エクスポートプロセスが成功するためには、--target-bucket は、次のアクセス許可を持つバックアップの AWS リージョン内の Amazon S3 バケットである必要があります。

    • オブジェクトアクセス – [読み取り] および [書き込み]。

    • アクセス許可 – [読み取り]

    詳細については、「ステップ 2: Amazon S3 バケットへのアクセス権を ElastiCache に付与する」を参照してください。

以下のオペレーションは、my-s3-bucket にバックアップをコピーします。

Linux、macOS、Unix の場合:

aws elasticache copy-snapshot \ --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 \ --target-snapshot-name my-exported-backup \ --target-bucket my-s3-bucket

Windows の場合:

aws elasticache copy-snapshot ^ --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 ^ --target-snapshot-name my-exported-backup ^ --target-bucket my-s3-bucket
注記

S3 バケットにバックアップをエクスポートするためのアクセス許可が ElastiCache にない場合、以下のいずれかのエラーメッセージを受け取ります。「ステップ 2: Amazon S3 バケットへのアクセス権を ElastiCache に付与する」に戻り、示されたアクセス権限を追加して、バックアップのエクスポートを再試行してください。

  • ElastiCache has not been granted READ permissions %s on the S3 Bucket.

    解決策: バケットで読み取りのアクセス権限を追加します。

  • ElastiCache has not been granted WRITE permissions %s on the S3 Bucket.

    解決策: バケットで書き込みのアクセス権限を追加します。

  • ElastiCache has not been granted READ_ACP permissions %s on the S3 Bucket.

    解決策: バケットで読み取りのアクセス権限を追加します。

詳細については、AWS CLI コマンドのリファレンスの「copy-snapshot」を参照してください。

別の AWS リージョンにバックアップをコピーする場合は、Amazon S3 を使用してコピーします。詳細については、Amazon Simple Storage Service ユーザーガイドの「オブジェクトのコピー」を参照してください。

以下のパラメータを指定して CopySnapshot API オペレーションを使用し、バックアップを Amazon S3 バケットにエクスポートします。

Parameters

  • SourceSnapshotName – コピーするバックアップの名前。

  • TargetSnapshotName – バックアップのコピーの名前。

    この名前は 1 ~ 1,000 文字で、UTF-8 エンコードが可能である必要があります。

    ElastiCache は、ここで入力した値に、インスタンス識別子と .rdb を追加します。たとえば、「my-exported-backup」と入力した場合、my-exported-backup-0001.rdb が返されます。

  • TargetBucket – バックアップをエクスポートする Amazon S3 バケットの名前。バックアップのコピーは、指定したバケットで作成されます。

    エクスポートプロセスが成功するためには、TargetBucket は、次のアクセス許可を持つバックアップの AWS リージョン内の Amazon S3 バケットである必要があります。

    • オブジェクトアクセス – [読み取り] および [書き込み]。

    • アクセス許可 – [読み取り]

    詳細については、「ステップ 2: Amazon S3 バケットへのアクセス権を ElastiCache に付与する」を参照してください。

以下の例では、Amazon S3 バケット my-s3-bucket に自動バックアップのコピーを作成します。

https://elasticache.us-west-2.amazonaws.com/ ?Action=CopySnapshot &SourceSnapshotName=automatic.my-redis-primary-2016-06-27-03-15 &TargetBucket=my-s3-bucket &TargetSnapshotName=my-backup-copy &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &Version=2016-01-01 &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>
注記

S3 バケットにバックアップをエクスポートするためのアクセス許可が ElastiCache にない場合、以下のいずれかのエラーメッセージを受け取ります。「ステップ 2: Amazon S3 バケットへのアクセス権を ElastiCache に付与する」に戻り、示されたアクセス権限を追加して、バックアップのエクスポートを再試行してください。

  • ElastiCache has not been granted READ permissions %s on the S3 Bucket.

    解決策: バケットで読み取りのアクセス権限を追加します。

  • ElastiCache has not been granted WRITE permissions %s on the S3 Bucket.

    解決策: バケットで書き込みのアクセス権限を追加します。

  • ElastiCache has not been granted READ_ACP permissions %s on the S3 Bucket.

    解決策: バケットで読み取りのアクセス権限を追加します。

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

別の AWS リージョンにバックアップをコピーする場合は、Amazon S3 のコピーを使用して、エクスポートされたバックアップを別の AWS リージョンの Amazon S3 バケットにコピーします。詳細については、Amazon Simple Storage Service ユーザーガイドの「オブジェクトのコピー」を参照してください。