RDS: DBスナップショットをリージョン間でコピー

概要

RDS: DBスナップショットをリージョン間でコピーアクションを使用すると、指定したDB スナップショットを別のリージョンへ(例: 東京からシンガポールへ)コピーすることができます。
スナップショットIDまたはDBインスタンスでコピー元となるDBスナップショットを指定することが出来ます。

設定時のオプション

No オプション 説明
1 コピー元リージョン コピー元となるDB スナップショットが存在するリージョンを指定します。
2 コピー先リージョン コピー先となるリージョンを指定します。
3 DBスナップショット名 コピーするDB スナップショットを名前で指定します
作成元のDBインスタンス(スナップショット群に同期) コピーするDB スナップショットを作成元のDB インスタンスで指定します。指定したDB インスタンスから作成されたDB スナップショットが全て同期されます。
4 オプショングループ

コピー先スナップショットに設定するオプショングループ名を指定します。

※ スナップショット作成元 DB インスタンスに、デフォルト以外のオプショングループが設定されている場合、かつそのオプショングループにデフォルト以外のオプションが追加されている場合、コピー先のスナップショットに設定するオプショングループ名を指定する必要があります。

5 スナップショットが暗号化されている場合に使用するKMSキー スナップショットもしくは作成元のDBインスタンスが暗号化されている場合に指定します。
6 ジョブ実行後のリソースの状態チェック ジョブ実行後のリソースの状態チェックをする場合
  • CopyDBSnapshot APIリクエストが成功し、コピーしたDB スナップショットのステータスが利用可能になった場合に成功します
  • DBスナップショットのステータスが利用可能以外(失敗等)になった場合、ジョブが失敗したと判断されます
ジョブ実行後のリソースの状態チェックをしない場合
  • CopyDBSnapshot APIリクエストの正否がジョブの実行結果正否となります。

設定例

Cloud Automatorで「RDS: DB スナップショットをリージョン間でコピー」アクションを使ったジョブを作成します。

  1. Cloud Automatorの運用ジョブ画面から「ジョブの追加」ボタンをクリックします。

  2. ジョブを所属させるグループを選択します。
  3. トリガーの選択で、任意のトリガーを選択下さい。

  4. アクションの選択で「RDS: DBスナップショットをリージョン間でコピー」アクションを選択します。

  5. AWS アカウントの選択で、任意の AWS アカウントを選択します。

  6. アクションのパラメーターを設定します。

    No オプション 設定値の例
    1 コピー元リージョン ap-northeast-1
    2 コピー先リージョン us-west-2
    3 作成元のDBインスタンス(スナップショット群に同期) encrypted-rds-instance-snapshot-001
    4 コピー先スナップショットに設定するオプショングループ名 default:mysql-8-0
    5 スナップショットが暗号化されている場合に使用するKMSキー (default) aws/rds
    6 ジョブ実行後のリソースの状態チェックする チェック
    20230704_copy_db_snapshot.png
  7. 成功時、失敗時の後処理を設定します。

  8. ジョブ名を入力し、「作成する」をクリックします。

動作確認

  1. 作成したジョブのログボタンをクリックします。

  2. 実行ログ一覧から該当の実行ログの詳細をクリックします。

  3. ログの詳細にて結果を確認します。「成功」となっていれば該当のジョブが実行されて成功していることが確認できます。「実行中」となっている場合はジョブの実行中なのでしばらく経ってから確認してください。

  4. それぞれのリソースの操作結果は「AWSリソース操作結果」項目で確認することができます。

以上で「RDS: DBスナップショットをリージョン間でコピー」を使ったジョブの動作確認が出来ました。DBスナップショットを別のリージョンへコピーすることにより、使用しているリージョンに万が一のことがあったとしても別のリージョンでデータを復旧することが可能になります。是非ご活用下さい。

ログのステータス条件

No ステータス 説明
1 成功 ジョブ実行後のリソースの状態をチェックしない場合、CopyDBSnapshot APIリクエストが成功すると成功となります。
ジョブ実行後のリソースの状態をチェックする場合、CopyDBSnapshot APIリクエストが成功且つ、コピーしたDB スナップショットのステータスが利用可能になったときに成功となります。
2 失敗 ジョブ実行後のリソースの状態をチェックしない場合、以下のいずれかで失敗となります。
  • コピー元となるDB スナップショットが存在しない場合
  • CopyDBSnapshot APIリクエストが失敗した場合
ジョブ実行後のリソースの状態をチェックする場合、以下のいずれかで失敗となります。
  • コピー元となるDB スナップショットが存在しない場合
  • CopyDBSnapshot APIリクエストが失敗した場合
  • コピーしたDB スナップショットのステータスが利用可能以外(失敗等)になった場合

リソース操作履歴のステータス条件

No ステータス 説明
1 Completed ジョブ実行後のリソースの状態をチェックしない場合、CopyDBSnapshot APIリクエストが成功するとCompletedとなります。
ジョブ実行後のリソースの状態をチェックする場合、CopyDBSnapshot APIリクエストが成功且つ、コピーしたDB スナップショットのステータスが利用可能になったときにCompletedとなります。
2 Failed ジョブ実行後のリソースの状態をチェックしない場合、CopyDBSnapshot APIリクエストが失敗すると失敗となります。

ジョブ実行後のリソースの状態をチェックする場合、CopyDBSnapshot APIリクエストが失敗するかコピーしたDB スナップショットのステータスが利用可能以外(失敗等)になったときにFailedとなります。

※DescribeDBSnapshots API を利用して約5分間隔でDBスナップショットの状態を確認します

注意事項

  • RDSの自動バックアップで取得されたDB スナップショットはコピー対象とならずにスキップされます
  • スナップショット作成元 DB インスタンスに、デフォルト以外のオプショングループが設定されている場合、かつそのオプショングループにデフォルト以外のオプションが追加されている場合、コピー先のスナップショットに設定するオプショングループ名を指定する必要があります
  • コピー先リージョンのKMSキーには以下のキーポリシーがStatementに含まれている必要があります。
    
    {
        "Sid": "Allow access through RDS for all principals in the account that are authorized to use RDS",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:CreateGrant",
            "kms:ListGrants",
            "kms:DescribeKey"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "kms:ViaService": "rds.us-west-2など転送先リージョン.amazonaws.com",
                "kms:CallerAccount": "RDSのスナップショットをコピーするAWSアカウントID(ハイフンなし)"
            }
        }
    }
        

 

このアクションで利用されるAWS API

当アクションの実行には以下のAWS APIを利用しています。
実行するAWSアカウントにはこれらのAPIを実行可能なIAMポリシーがアタッチされている必要があります。

 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください