[アップデート]AWS BackupでCloudformationのスタックをバックアップ出来るようになりました!

地味にアツいアップデートではないでしょうか??
2022.11.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、コンサルティング部の南です。

遂にAWS re:Invent 2022が始まりました! ちなみに私は現地で参戦しております。
日本時間28日の発表でAWS Backup関連のアップデートが複数リリースされましたが、その中でも「AWS BackupのCloudFormation対応」に関してまとめます。

結論 

AWS BackupにてCloudFormationが対応したことで、IAMロールやLambda関数、VPC周りなどCloudformationで作成したリソースのバックアップを取ることが可能になりました。また、リソースとデータを紐付けつつバックアップすることが可能となり、アプリケーション全体のバックアップが取りやすくなりました。
ユースケースとしてクロスリージョンバックアップを利用し、DRとしてCloudformationを別リージョンに置く運用も容易になります。

アップデート内容

AWS BackupにてCloudFormationが対応しました。
実際のマネジメントコンソール上での動作を確認します。 まずは準備としてDynamoDBとLambdaをデプロイするCfnテンプレートを用意し、Stackを作成します。
リソースが作成されたら「AWS Backup」に移動します。

バックアップの作成

バックアッププランを作成し、今回は検証として1時間おきにバックアップを作成するバックアップルールを作成します。

リソースの割り当てでは事前に作成したStackを選択します。

数時間放置し、複数のバックアップが作成するのを待ちます。

CloudFormationスタックがバックアップされると、コンポジットというグループ単位で管理されます。

コンポジットの中にAWS Backupでサポートされているスタック内の各リソースとCloudFormationのテンプレートに対して復旧ポイントが作成されます。
RDSやDynamoDBなどAWS Backupでサポートされているステートフルなサービスに関しては通常通りバックアップされ、IAMロールやLambda関数、VPC周りなどのステートレスなリソースに関してはリソースタイプ「CloudFormation」にて管理されます。
コンポジットというグループで管理されることでリソースとデータを紐付けつつバックアップすることが可能というわけです。

復元の実行

コンポジット内で、CloudFormation スタックの復旧ポイントを選択し、[復元]を選択します。 復元を行う為に新たなスタックと変更セットを作成します。
注意点として元のスタックとは別の新たなスタックとして扱われる為、復元する際はリソース名の重複を防ぐ為にパラメーターでリソース名を任意に変更できるようにするか、バックアップ元を削除する必要があります。

新たなスタックを確認すると「REVIEW_IN_PROGRESS」となっているので、復元ジョブによって作成された変更セットを確認し、実行します。

変更セットの実行を行うと元のスタックのリソースが新しいスタックで再作成され、ステートフルなリソースは空で再作成されます。
最後にステートフルリソースを復旧するには、復旧ポイントのリストに戻り、必要な復旧ポイントを選択して、復元を開始します。

まとめ

現時点ではネストしたスタックは対応していませんが、CloudFormationが今回対応になったことでリソースからデータまで一貫してバックアップができるようになり、システム全体のバックアップが簡単になりました。
また料金に関してもステートレスなリソース(リソースタイプが「CloudFormation」のもの)に関しては無料ですので、気軽にインフラ基盤をバックアップすることも可能です!