バックアップのエクスポート - 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 へのバックアップのエクスポートはサポートされていません。詳細については、「データ階層化」を参照してください。

バックアップを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. [バケットの作成] を選択します。

  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 バケットにコピーできるようにするには、バケットポリシーを更新し、バケットへのアクセス権を ElastiCache に付与する必要があります。

警告

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

Amazon S3 バケットで適切なアクセス許可を作成するには、以下の手順を実行します。

S3 バケットへのアクセス権を ElastiCache に付与するには

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

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

  3. [Permissions] (許可) タブを選択し、[Permissions] (許可) で、[Access control list (ACL)] (アクセスコントロールリスト (ACL)) を選択して、[Edit] (編集) を選択します。

  4. 次のオプションを使用して、被付与者の正規 ID 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353 を追加します。

    • [Objects] (オブジェクト): [List] (リスト)、[Write] (書き込み)

    • [Bucket ACL] (バケット ACL): [Read] (読み取り) または [Write] (書き込み)

      注記

      GovCloud リージョンの場合、正規 ID は 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6 です。

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

ステップ 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:::*" }] }

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

オプトインリージョンの場合、更新されたポリシーの例を以下に示します。(この例では、アジアパシフィック (香港) リージョンを使用しています。)

{ "Version": "2012-10-17", "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "elasticache.amazonaws.com" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::hkg-elasticache-backup", "arn:aws:s3:::hkg-elasticache-backup/*" ] }, { "Sid": "Stmt15399484", "Effect": "Allow", "Principal": { "Service": "ap-east-1.elasticache-snapshot.amazonaws.com" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::hkg-elasticache-backup", "arn:aws:s3:::hkg-elasticache-backup/*" ] } ] }

以下のプロセスでは、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 バケットにバックアップをエクスポートします。

パラメータ

  • --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 バケットにエクスポートします。

パラメータ

  • 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 ユーザーガイドの「オブジェクトのコピー」を参照してください。