AWS Backup で ACL を無効化した S3 バケットのバックアップを取得して、同じ S3 バケットへリストアするときに気をつけたいこと
S3 バケットの ACL 無効化した状態で AWS Backup でバックアップを取得してリストアは可能なのか?以下の記述を見て疑問に思ったので確認しました。
Access Control Lists (ACLs) must be enabled in the destination bucket, or the job will fail otherwise. Restoring S3 data - AWS Backup
AWS Backup でリストア対象の S3 バケットの ACL 設定は有効である必要があると説明されています。バックアップ時の要件に ACL は無効でよいのか、有効でないとダメなのか説明はありせんでした(記述を見つけられませんでした)。
そんな ACL 無効化は2021年12月のアップデートで追加されています。
確認結果
リストア時に一時的に対象の S3 バケットの ACL 設定を有効にすればリストアはできる。
- ACL 無効の S3 バケットを AWS Backup でバックアップしたあとリストアすることは可能
- リストアジョブ実行時、リストア対象の S3 バケットの ACL 設定を有効にする必要がある
- リストア完了後、S3 バケットの ACL 設定を無効に戻せる
2022年10月20日現在、ACL 無効化が推奨されているため今後状況は変わりうると思います。以下のリンクから最新情報を確認するとよいでしょう。
Restoring S3 data - AWS Backup
検証環境
リストア時に新規の S3 バケットを作成してリストアする場合は、ACL 有効化状態の S3 バケットが作成されると説明があります。今回確認したいのはリストア時に元の S3 バケットへオブジェクトを書き戻す(復元)する場合です。
(note that restoring with the Create new bucket option will create a bucket with ACLs enabled) Restoring S3 data - AWS Backup
CloudFront 経由からの Web アクセスを許可している環境を用意し、ACL 無効設定の S3 バケットを AWS Backup からバックアップを取得しました。
CloudFront で公開している URL へ Web アクセスするとテストページが表示されます。
S3 バケットの設定
ACL は無効の状態で AWS Backup を取得しています。
オブジェクトの削除からリストアまで
AWS Backup からのバックアップは取得済みです。
オブジェクトの削除
S3 バケットのオブジェクト(index.html
)を削除します。
検証用の環境なのでindex.html
以外のオブジェクトはなく空の S3 バケットなりました。
CloudFront に設定してあるカスタムドメインに Web アクセスすると表示できなくなりました。
AWS Backup からリストア
復元ポイントを選択して復元をクリックします。
バックアップを取得した S3 バケットに対してすべてのオブジェクト復元するデフォルト設定でリストアをかけます。
予定どおりリストアに失敗しました。
ACL は有効にしておかないとリストアに失敗するとドキュメントに書いてありましたからね。
ACL 有効へ変更からリストアまで
ACL 有効
ACL 有効に変更します。
改めてリストア
前回同様の手順でリストアをかけます。今度はジョブが進行していることを確認できました。
110 Bites のindex.html
の復元に9分かかりました。
S3 バケットを確認するとオブジェクトが復元されています。オブジェクトの最終更新日時はリストアジョブが走ってオブジェクトを書き戻したタイミングの時間になっています。
CloudFront にアクセスすると Web アクセス可能な状態に戻りました。
ACL を無効に戻す
ACL を無効に戻してはじめて AWS Backup でバックアップを取得したときのオブジェクトと S3 バケットの状態に戻せたと言えるのでACL 無効に戻します。
CloudFront にアクセスしても影響はありません。
まとめ
リストア時に一時的に対象の S3 バケットの ACL 設定を有効にすればリストアはできる。
- ACL 無効の S3 バケットを AWS Backup でバックアップしたあとリストアすることは可能
- リストアジョブ実行時、リストア対象の S3 バケットの ACL 設定を有効にする必要がある
- リストア完了後、S3 バケットの ACL 設定を無効に戻せる
2022年10月20日現在、ACL 無効化が推奨されているため今後状況は変わりうると思います。以下のリンクから最新情報を確認するとよいでしょう。
Restoring S3 data - AWS Backup
おわりに
リストアしてエラーになってはじめて ACL 有効の S3 バケットではないとリストアできないことを知り勉強になりました。エラーメッセージのとおり対応したら問題なく解消でき、あとでドキュメントを確認してみるとリストアの条件書いてありました。わかりやすいエラーメッセージだったのでl逆に今後ドキュメント確認する機会が少なさそうなので URL のメモために書き残しました。
私が今現在把握している限りですと ACL 無効化が推奨されてから ACL 有効化する場面があるのは以下のリンクの件と本件のみです。他によく利用するとサービスで ACL 有効化する必要ものがあればご連絡いただけると幸いです。