なになれ

IT系のことを記録していきます

S3で知らなかった色々なこと

S3を利用していて色々知らないことがあるなと思ったので記録しておきます。

アクセス権限

パブリックアクセスブロックでバケット及びオブジェクトに対するパブリックアクセスを有効にする操作を無効化できます。

Amazon S3 パブリックアクセスブロックの使用 - Amazon Simple Storage Service

基本的なアクセス権限には、ACLバケットポリシーのどちらを使えばいいのか?
-> バケットポリシーを使う
IAMポリシーの書き方で柔軟にアクセス制御を記述できます。

バケットポリシーの例 - Amazon Simple Storage Service

ACLはどういう時に使うのか?
-> AWSアカウントの異なるバケットにオブジェクトを作成した場合、バケットの所有者はそのオブジェクトへの権限がないです。
そのため、ACLでオブジェクト所有者が許可を与える必要があります。

Amazon S3 がオブジェクトオペレーションのリクエストを許可する方法 - Amazon Simple Storage Service

バージョニング

オブジェクトにおいて、複数のバージョンを保持できます。
誤った変更をした時に過去のバージョンに戻すことができるので、Terraformのstateといった状態や設定などを保存する時に便利です。

オブジェクトのバージョニング - Amazon Simple Storage Service

ライフサイクル管理

ある条件で別のストレージクラスに移行したり、有効期限を決めてオブジェクトを削除したりできます。

オブジェクトのライフサイクル管理 - Amazon Simple Storage Service

別のストレージクラスに移行するのはS3Intelligent-Tieringを使うと良いです。
30日間連続してアクセスされていないオブジェクトは自動的に低頻度のアクセス層に移動してくれるのでコスト削減に役立ちます。

暗号化

オブジェクトの暗号化にはSSE-S3とSSE-KMSといったやり方があります。
SSE-S3はとりあえず暗号化したい時に使います。
SSE-KMSはCloudTrailで証跡を残す必要があったり、暗号化キー自体にアクセス制御を実施したい場合に使います。
基本的な利用にはSSE-S3で十分だと思います。

サーバー側の暗号化を使用したデータの保護 - Amazon Simple Storage Service

一度S3に配置したオブジェクトの暗号化の設定を変える場合、以下のようにオブジェクトをコピーするコマンドを実行します。

# SSE-S3
$ aws s3 cp s3://awsexamplebucket/ s3://awsexamplebucket/ --sse AES256 –recursive
# SSE-KMS
$ aws s3 cp s3://awsexamplebucket/ s3://awsexamplebucket/ --sse aws:kms –recursive

AWS CLI を使用した既存の Amazon S3 オブジェクトの暗号化 | Amazon Web Services ブログ

まとめ

S3は調べてみると色々な機能があって奥深いです。