AWS S3 ライフサイクルルールの設定

Amazon S3 の料金設定は、実際に使用した分だけ課金されていくとの事。
（料金について詳しくは→　https://aws.amazon.com/jp/s3/pricing/）
使用しなくなった（古いファイル等）を削除することで料金を抑えることができそうでね。
ということで、S3のライフサイクル管理を設定してみます。

#S3の設定
公式通りにS3を作成。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/user-guide/create-bucket.html

![スクリーンショット 2020-08-26 9.40.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/894acdd6-fc95-4b79-d59b-cbdd63dad297.png)

#ライフサイクルルールの設定
では実際にライフサイクルルールを設定していきましょう。
##設定確認
バケット直下にindex.htmlをアップロードしました。これを選択するとファイルの情報が表示されます。
ここの有効期限日と有効期限ルールに注目してください。
N/Aとなって特に設定されていないことがわかりますね。
![スクリーンショット 2020-08-26 9.47.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/a3b1d191-910a-29a3-acb4-7f3c7f2f55a7.png)

##ライフサイクルルールの追加
作成したバケットを選択し、管理タブを開きます。ライフサイクルルールの追加ボタンがあるのでクリックします。
![スクリーンショット 2020-08-26 9.45.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/b2b69421-54a0-fef8-9258-4c77d3d9d8c6.png)

まずは、バケット内全てのオブジェクトにルールを適用する設定をしてみます。
###名前とスコープ
適当なルール名を設定、「バケットないの全てのオブジェクトに適用」を選択し次へボタンをクリック。
![スクリーンショット 2020-08-26 9.56.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/bce8ea0c-bec0-593a-7b7e-d24a66274751.png)
###移行
今回は削除をしたいので移行の設定はしません。なのでそのまま次へボタンをクリック。
![スクリーンショット 2020-08-26 9.57.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/aa3bb60b-0e4f-c9b6-6e89-77081eef1379.png)
###有効期限
「現行バージョン」にチェックを入れ、「オブジェクトの現行バージョンを失効する 」にもチェックを入れます。
オブジェクトの有効期限を設定し（今回は1日で設定しました。）、次へボタンをクリック。
![スクリーンショット 2020-08-26 9.57.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/e2f501cb-137b-d2e2-54e5-580e0213dfe5.png)
###確認
バケット全てに対して失効ルールが設定されている場合、承認を求められるのでチェックを入れ保存。
![スクリーンショット 2020-08-26 9.58.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/7721c142-f740-b4c8-a70b-d74c1b1d9cab.png)

ライフサイクルルールが追加されました。
![スクリーンショット 2020-08-26 10.08.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/2365c807-3118-8288-ba07-2372a946741b.png)

##ルールが適用されているか？
もう一度index.htmlの有効期限日と有効期限ルールを見てみましょう。
先ほど作成したルールが適用されていることがわかります。
アップデートした日から1日過ぎた日の午前9時に削除されるという設定になっています。
![スクリーンショット 2020-08-26 10.11.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/1782dd03-c647-1c89-adf4-1ad2c28b2387.png)

#特定スコープを設定
次にバケット全てではなく指定のフォルダ内のルールを設定します。（この時点で一度先ほど作ったルールを削除しました。）
バケット内に「folder1、folder2」を作成し、それぞれのフォルダにindex.htmlを配置しました。
有効期限日と有効期限ルールが設定されていません。
![スクリーンショット 2020-08-26 10.39.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/dda1ab83-60ce-79b4-e277-bb64da400d8f.png)

##ライフサイクルルールを設定
folder1に対しては1日、folder2に対しては2日のルールで設定していきます。
「スコープを特定のプレフィックスまたはタグに制限」を選択し、プレフィックスを入力します。
![スクリーンショット 2020-08-26 10.47.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/0e2fe93a-5d6f-d055-2263-54c3fa92ae11.png)
先ほど作成したルールと同様にルールを設定し保存。
![スクリーンショット 2020-08-26 10.47.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/8e9d9460-418e-1333-6e23-fb939232a900.png)

##ルール適用を確認
ルート直下のindex.html。バケット全てに対してのライフサイクルルールを削除したのでルールが設定されていません。
![スクリーンショット 2020-08-26 10.56.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/9b3890fd-4f8d-4110-4d84-e2d446c578c3.png)
folder1のindex.html。folder1のライフサイクルルールが設定されています。
![スクリーンショット 2020-08-26 10.59.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/0e988786-e9db-514f-17ba-a6d81be412ed.png)
folder2のindex.html。folder2のライフサイクルルールが設定されています。
![スクリーンショット 2020-08-26 10.59.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453257/03ccd71f-167e-c73f-c13f-c02c10479d95.png)


あとは指定した日時にファイルが削除されるのを確認するだけです。

単純に有効期限でストレージの管理をしたい場合はとても便利でした。