タダです.
AWS Backup でリストアテストがサポートされました.これはシステムを動かすメインリージョンではなく DR の目的で別リージョンにコピーしたバックアップからリストアをやりたいと思ったため,この記事ではまず バックアップの取得とそのコピーを AWS CLI で行ったのでその内容をまとめていきます.なお AWS CLI のバージョンは aws-cli/2.13.29 Python/3.11.6 Darwin/21.6.0 source/arm64 prompt/off
になります.
バックアップとコピーを AWS CLI で行なう
まず別リージョンに複製するバックアップを取っていきます.この記事では東京リージョンの Aurora のバックアップを取ることにします.バックアップジョブ実行のコマンドは下記で実行しました.
$ aws backup start-backup-job --backup-vault-name hoge-test --resource-arn arn:aws:rds:ap-northeast-1:123456789191011:cluster:hoge --iam-role-arn arn:aws:iam::123456789191011:role/test-backup-role --lifecycle DeleteAfterDays=3 { "BackupJobId": "26d81d3c-cc99-456e-a9e6-a9cdd0fec86c", "CreationDate": "2023-12-08T22:09:40.039000+09:00", "IsParent": false }
バックアップジョブの実行時にレスポンスで返ってきた BackupJobId
を使ってバックアップ完了状況を確認します.完了したら COMPLETED
になるので,このステータスになったら RecoveryPointArn
をコピーしておきます.
aws backup describe-backup-job --backup-job-id 26d81d3c-cc99-456e-a9e6-a9cdd0fec86c { ~中略~ "RecoveryPointArn": "arn:aws:rds:ap-northeast-1:1234567891011:cluster-snapshot:awsbackup:job-26d81d3c-cc99-456e-a9e6-a9cdd0fec86c", ~中略~ "State": "COMPLETED", "PercentDone": "100.0", ~中略~ }
取得したバックアップを別リージョンにコピーしていきます.コピージョブ実行のコマンドは下記で実行し,大阪リージョンに複製しました.
$ aws backup start-copy-job --recovery-point-arn arn:aws:rds:ap-northeast-1:1234567891011:cluster-snapshot:awsbackup:job-26d81d3c-cc99-456e-a9e6-a9cdd0fec86c --source-backup-vault-name hoge-test --destination-backup-vault-arn arn:aws:backup:ap-northeast-3:1234567891011:backup-vault:hoge-test --iam-role-arn arn:aws:iam::1234567891011:role/test-backup-role --lifecycle DeleteAfterDays=3 { "CopyJobId": "1E8D42FF-7469-2442-1BEB-F1E7A8CCCED4", "CreationDate": "2023-12-08T22:35:42.782000+09:00", "IsParent": false }
コピージョブの実行時にレスポンスで返ってきた CopyJobId
を使ってバックアップ完了状況を確認します.完了したら COMPLETED
になります.
$ aws backup describe-copy-job --copy-job-id 1E8D42FF-7469-2442-1BEB-F1E7A8CCCED4 { "CopyJob": { ~中略~ "CopyJobId": "1E8D42FF-7469-2442-1BEB-F1E7A8CCCED4", ~中略~ "State": "COMPLETED", ~中略~ } }
バックアップのコピーで躓いたこと
バックアップのコピーで躓いたこととして KMS キーの権限追加付与が必要だったことがあります.まず,大阪リージョンの KMS キーの権限が必要で下記の権限をコピージョブ実行用の IAM に付与しました.
{ "Sid": "", "Effect": "Allow", "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:Decrypt" ], "Resource": [ "必要なKMSキーのARN" ] }
次にバックアップ対象の Aurora でも KMS を使った暗号化を使っていたため,この KMS に対して追加の権限付与を行いました.
{ "Sid": "", "Effect": "Allow", "Action": [ "kms:List*", "kms:Get*", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt", "kms:Describe*", "kms:CreateGrant", "kms:RevokeGrant" ], "Resource": [ "必要なKMSキーのARN" ] }
検証のためこれらの権限を広く与えているため絞ったほうが良いのは前提ですが,権限が不足していると The source snapshot KMS key does not exist, is not enabled or you do not have permissions to access it
といったエラーがでてコピーができませんでした.
まとめ
AWS Backup のリストアテストを行う準備として東京リージョンから大阪リージョンへの Aurora バックアップの複製を AWS CLI でやってみました.次回はリストアテストをやっていきます.