【Mac】tfenvを使ってterraformの実行バージョン管理
saratogax
サラトガ牧場
RDS(Aurora)のバックアップを別アカウントに集約して管理したい場合、以下の2つの壁にぶつかります。
aws/rds(AWS管理キー)で暗号化されたスナップショットは、そのままでは別アカウントにコピーできない。本記事では、これらを Lambda で自動化しつつ、運用しやすい命名規約で管理する方法を解説します。
バックアップ先のアカウント側(管理アカウント)で KMS キー(CMK)を作成する際の重要ポイントです。
AdministratorAccess を持つロールを指定する。AWS Backup のリソース名には 50文字制限 があります。クラスタ名が長い場合を考慮し、以下の規約を採用しました。
| リソース | 命名テンプレート | 理由 |
|---|---|---|
| Backup Vault | rds-backup-vault | 全アカウント共通でシンプルに。 |
| Backup Plan | rds-plan-{クラスタ名} | rds 識別子を使い文字数を節約。 |
| Backup Resource | rds-backup-resource-{クラスタ名} | resource をフルスペルで残し視認性を確保。 |

通常、aws/rds キーで暗号化されたものは別アカウントへ持っていけませんが、コピー時に 「宛先(管理アカウント)の CMK ARN」 を指定することで、コピーと同時に暗号化キーの付け替え(再暗号化)が行われます。
aws/rds での初回バックアップ完了を検知。start_copy_job を 1 回だけ発行。
aws/rds 復元ポイント管理アカウントの Backup Vault には、外部からのコピーを許可するポリシーを忘れずに設定します。
{
"Sid": "AllowCopyFromOtherAccounts",
"Effect": "Allow",
"Principal": { "AWS": ["arn:aws:iam::[アカウントA]:root", "..."] },
"Action": "backup:CopyIntoBackupVault",
"Resource": "*"
}rds- プレフィックスを活用する。