🔰

AWS初心者向け~ゼロからECSアプリケーションの構築まで~ S3編

2025/03/13に公開

S3編

目次
  1. S3とは
  2. 実際にS3バケットを作る
  3. S3バケットにライフサイクルルールを設定する

1. S3とは

AWS S3 (Amazon Simple Storage Service) を使うメリットは以下の通りです:

  • スケーラビリティ: 自動的にスケールし、どんな量のデータでも保存可能です。
  • 耐久性: 99.999999999% (11 9's) の耐久性を提供し、データの損失リスクを最小限に抑えます。
  • 可用性: 高い可用性を提供し、データへのアクセスが常に可能です。
  • セキュリティ: データの暗号化やアクセス制御などの高度なセキュリティ機能を提供します。
  • コスト効率: 使用した分だけ支払う従量課金制で、コストを最適化できます。
  • 統合性: 他のAWSサービスとの統合が容易で、データ処理や分析が簡単に行えます。
  • データ管理: バージョニング、ライフサイクル管理、レプリケーションなどのデータ管理機能が充実しています。

これらの特徴により、AWS S3は信頼性が高く、柔軟でコスト効率の良いストレージソリューションとして広く利用されています。

2. 実際にS3でバケットを作る

バケットとは多種多様なファイルを置くためのフォルダのようなものです。
フォルダと同様に階層化できます。
基本的なユースケースでは汎用バケットを選択します。
S3などAWSサービスごとに認識すべきポイントとして、そのサービスがゾーンサービスなのかリージョンサービスなのか、グローバルサービスなのかを気にする必要があります。
S3はリージョンサービスです。
サービスの区分については、↓を参照
https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-fault-isolation-boundaries/zonal-services.html


S3バケット作成時にACL無効がデフォルトになっていますが、
基本的にはACL無効で良いです。ACL無効だとバケットを作成したAWSアカウントしか利用できないように思えますがバケットポリシーを設定することで、他AWSリソースやアカウントからのアクセスが可能になります。

パブリックアクセスは特別な要件がない限りは設定しないです。
バージョニングは、要件によってはオンにします。例えば同名ファイルが日時で配置されるようなケースなどでバックアップ取りたいならオンにします。追加で料金が発生します。
暗号化に関しても特別な要件がない限りはデフォルトで良いかと思います。

サービスがどこにあるかを気にする理由としては、アプリケーション(ここではECSアプリを例にして)からS3にアクセスするという時にアクセス方法が問題になるためです。
何も設定しないとS3にアクセスするにはインターネットを経由するためそのためバケットポリシーが必要になったりします。
VPCエンドポイントを用いることでインターネットを介さないでもS3バケットにアクセスできるようになるためプライベートなリソースからS3にアクセスする用途があるときは、VPCエンドポイントでS3を接続できるようにすると良いです。

3. S3バケットにライフサイクルルールを設定する

  1. バケットの「管理」タブからライフサイクルルールを確認できます。こちらで新規のライフサイクルルールを作成してみます。
  2. ライフサイクルルールのアクションとして、現行バージョンを有効期限切れ、非現行バージョンを有効期限にするなどあります。画像のチェックのように設定すると現行バージョンをから非現行バージョンへ移行する+非現行バージョンに対する削除アクションを同時に実行してくれるルールになります。
  • 現行バージョン...まだルールの対象になっていない状態のオブジェクトのこと
  • 非現行バージョン...現行バージョンから有効期限が切れた古いオブジェクトのこと
  1. 現行バージョンから非現行バージョンになる日数、非現行バージョンを削除するルールにチェックを入れた場合は、非現行バージョンになってからどれくらい日数が経ったオブジェクトを削除するかの日数を決めます。オプションで非現行バージョンのうち、何個かは残すというような設定も可能です
  2. 画面下部で分かりやすくオブジェクトが有効期限になってから削除されるまでの流れが日数ベースで表示されます。

Discussion