AWS RDS のバックアップとクロスリージョンリストア
この記事では、東京リージョン (ap-northeast-1) で日次バックアップを取得し、大阪リージョン (ap-northeast-3) にコピーしてリストアする方法について説明します。
バックアップ要件
- 東京リージョン(ap-northeast-1)で稼働するRDSを日次でバックアップする・維持する期間は仕様上の最大値とする。
- 東京リージョン(ap-northeast-1)でバックアップしたデータを日次で大阪リージョン(ap-northeast-3)へコピーし、維持する期間は1年とする。
東京リージョン(ap-northeast-1)でのRDSバックアップ
- 自動バックアップ機能を無効にする
バックアップウィンドウが明示的に設定されていない場合、AWSはランダムな30分間の期間を選択し、その期間内に自動バックアップを開始します。今回、AWS BackupプランでRDSバックアップをスケジュールするので自動バックアップ機能は無効にしておくことをお勧めします。これにより、2回バックアップが取得されることを防ぐことができます。
db.tf
resource "aws_db_instance" "example" {
# ...
backup_retention_period = 0 // Controlled by backup plan
東京リージョン(ap-northeast-1)から大阪リージョン(ap-northeast-3)へのバックアップデータのコピー
- 東京リージョンと大阪リージョンの両方で、バックアップデータを格納するための AWS Backup Vault を作成します。
main.tf
provider "aws" {
alias = "tokyo"
region = "ap-northeast-1"
}
provider "aws" {
alias = "osaka"
region = "ap-northeast-3"
}
vault.tf
resource "aws_backup_vault" "tokyo" {
provider = aws.tokyo
name = "vault-tokyo"
}
resource "aws_backup_vault" "osaka" {
provider = aws.osaka
name = "vault-osaka"
}
- 東京リージョンでバックアップし、そのデータを大阪リージョンへコピーするためにCrossRegionCopyを有効化します
backup.tf
resource "aws_backup_plan" "multi_region" {
name = "multi-region-backup"
rule {
rule_name = "multi-region-backup-rule"
target_vault_name = aws_backup_vault.tokyo.name
schedule = "cron(00 14 * * ? *)" // 23:00UTC+9
lifecycle {
delete_after = "35"
}
copy_action {
destination_vault_arn = aws_backup_vault.osaka.arn
lifecycle {
delete_after = "365" // 1年
}
}
}
}
iam-role.tf
data "aws_iam_role" "awsbackupservicerolepolicyforbackup" {
name = "AWSBackupServiceRolePolicyForBackup"
}
resource "aws_iam_role" "example_backup" {
name = "example-backup"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Principal = {
Service = "backup.amazonaws.com"
}
}
]
})
}
resource "aws_iam_role_policy_attachment" "example_backup" {
policy_arn = data.aws_iam_role.awsbackupservicerolepolicyforbackup.arn
role = aws_iam_role.example_backup.id
}
リストアについて注意点
- RDSのリージョン間コピーを使用した場合、コピー先リージョンでリストアする際には、AWSマネージド型キー(aws/rds というデフォルトのマネージドキー)しか使用できません。そもそも、データ暗号化で使用するKMSキーはリージョン固有なので、東京リージョンで使用したKMSキーを他リージョンでは使用できません。
- コピー元リージョンで使用しているインスタンスタイプがコピー先リージョンでは提供されておらず、使用できないこともあります。
まとめ
この記事では、東京リージョンで日次 RDS バックアップを取得し、大阪リージョンにコピーしてリストアする方法について説明しました。AWS Backup を使用することで、異なるリージョン間でのデータの移動やリストアを簡単に行うことができます。これにより、災害復旧やデータの可用性が向上し、ビジネスの継続性が確保されます。