はじまり
訳あって本番環境の RDS をステージング環境にクローンすることになったのですが、本番環境とステージング環境は AWS アカウントが分かれており「スナップショットの共有」が必要でした。
共有を行い、いざ復元をしようとしてみたところ……
クロスアカウントで暗号化済みスナップショットから DB を復元することはできません。
と言われてしまい、怒り狂ってしまいました。
手順
正確にこれの解決策セクションの内容と同じ手順を辿ると復元できます。当時は気付かなかったのですが、操作を説明したビデオもありました。
「これを読んでください! 完」だと悲しいのでもう少し続けます。
踏んだ罠
書いてある通りの手順で作業すればよいことではあるので罠でも何でもないのですが踏んだものについてご紹介します。
未共有のカスタムキーで暗号化されたスナップショットはコピーできない
コピー元スナップショット KMS キー [ここに ARN] は存在しないか、有効になっていないか、アクセス権限がありません。
KMS でカスタムキーを作るときに「別の AWS アカウント」を設定すると別アカウントでこのキーが利用可能になり、このキーで暗号化されたスナップショットをコピーできるようになります。
ただし、共有先アカウントで KMS キーの一覧にこの共有されたキーが表示されることはありません。(なぜ?)
共有済みカスタムキーで暗号化され、共有されたスナップショットから「そのまま」復元することはできない
クロスアカウントで暗号化済みスナップショットから DB を復元することはできません。
冒頭のこのエラーが返ってきます。
ターゲットアカウントからアクセス可能な KMS キーで暗号化されている場合であったとしてもクロスアカウントの暗号化済みスナップショットは復元できないようです。
共有されたスナップショットをターゲットアカウントでコピーすると、ターゲットアカウント所有のスナップショットが生成されるので RDS を復元可能になります。
おわり
コピーしないと復元できない点、コピーすれば復元できる点が何だか直感的でなくイマイチだなあと感じます。