Ponz Dev Log

ソース派のシステムエンジニアの開発日記

AWSの各サービスを舐める (3) - Amazon S3

AWSのサービス舐めるシリーズその3。今回はS3です。
Kubernetesの検証の時にお世話になったので、今回はちょっとしたメモ程度で。 以前どんなことに使ったかは過去記事をご参照ください。

特徴と制約

  • レコードを格納するようなDBではなく、ファイル(CSV, JSON, Image, etc...)を格納するオブジェクト・ストレージ

  • ファイルの保存だけでなく、HTML/CSS/JSのファイルを置いてウェブサイトホスティングができます。

    • フロントエンドアプリ(React, Vue.js, Angularとか)ならバンドルして置くだけで良さげ。
    • PHPやNode.js, Javaのようなサーバーサイドスクリプトはおいてもアプリは動かない。

    • リージョンによって、ホスティングするときのサイトのエンドポイント名の命名規則が若干違うらしいです。

      • <bucket-name>.s3-website-<AWS-region>.amazonaws.com
      • <bucket-name>-s3-website-<AWS-region>.amazonaws.com

docs.aws.amazon.com

  • ほぼ無限にオブジェクトを格納できる

    • ただし、バケット数の上限は100個/アカウント.
    • 1オペレーション(PUT)で格納できるファイルサイズ上限は5GB.
    • 複数回に分けて格納した場合は格納できるファイルサイズ(1ファイル)の上限は5TB.

ストレージのタイプ

  • 高頻度(ミリ秒単位でパフォーマンスが求められる)のアクセス

    • STANDARD ... デフォルトの設定
    • RRS ... 非推奨
  • 低頻度のアクセス

    • STANDARD_IA ... AZにコピーして保存
    • ONEZONE_IA ...
  • ほとんどアクセスしないアーカイブ

    • Amazon Glacierを使う. S3のライフサイクル管理で一定期間経ったらS3 --> Glacierに移動させることができる.

イベント通知

  • バケットに対して特定のオペレーションをかけたときにAWSの他のサービスに通知送信・起動ができるみたい.
  • 通知先は、SNS, SQS, Lambdaの3種類
    • Lambdaの直接キックもできる。

ファイルの格納はもちろんですが、静的ファイルホスティングやイベント通知はかなり使い勝手が良さそうですね。 イベント通知のとこは別のアプリ(オンライン, 定刻起動のジョブとか)でS3にファイル置く -> Lambdaキックとかパイプライン組めそうなので、次回にやってみて記事に載せようと思います