プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • AWS
  • 【AWS】「S3」、設定など
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【AWS】「S3」、設定など

02.24

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

S3とは?

Webサーバーとしても使うことができるストレージサービスのことです。汎用的なファイル置き場として様々な場面で使われます。AWSのサービス分類ではマネージドサービスに当たります。実務では画像置き場としての用途として広く使われていることが多いです。

特徴

  • 月に3円/1GBと安価
  • ほぼ稼働率100%と高い耐久性
  • 容量が無制限(1ファイル5TBまで)
  • バケットやオブジェクトに対してアクセス制限できる。
  • どのオブジェクトに対してもほぼ同速でアクセス可能

耐久性

複数AZ(データセンター)に配置しているので耐久性が高い。

どのオブジェクトにも同速でアクセス可能

普通のファイルシステムのようにフォルダ分けはせずにフラットにデータが配置されるので同速で高速にアクセスができます。

概念

バケット

  • オブジェクト(ファイル)の保存場所で、名前はグローバルでユニークにします。

オブジェクト

  • データの本体(ファイル)でURLが付与されます。
  • バケット内に存在し、オブジェクト数に制限はありません。

キー

  • オブジェクトの格納URLパスです。

用途

静的コンテンツ(画像)の配信

メリット

  • Webサーバのストレージがいっぱいになるのを防げる。
  • HTMLアクセスと画像アクセスを分けて負荷分散出来る。
  • Webサーバの台数を増やしやすい。(画像をWebサーバに保存しているとWebサーバ間で画像の同期が必要になり難しくなる。)
  • CloudFront(コンテンツ配信サービス)から配信する形式にすることで画像配信を高速化出来る。

バッチ連携用のファイル置き場

S3にCSV等のバッチ連携用ファイルを配置して、そのファイルをバッチファイルから参照して処理を行います。

ログ出力先

定期的にS3にログファイルを送信します。

ログの例

  • AWSのマネジメントコンソールの操作ログ
  • サーバーのアクセスログ

静的ウェブホスティング

これも非常にポピュラーなユースケースです。ランディングページ等の静的なウェブサイトをS3から直接公開します。(Webサーバがなくても静的ページなら直接公開できます。)

容量が多くなりがちなデータ(写真や動画など)はEC2のEBSに配置するのではなくS3にオフロードして配信負荷を分散させます。

CloudFrontと相性がよくS3のデータをキャッシュしてくれます。

バックアップ/DRストレージ用途

オンプレからでもクラウド上で動かしているサービスだとしてもどちらの用途としても活用できます。海外のリージョンを活用してマルチリージョン間のバックアップを行うこともできます。

ライフサイクルルール

配置されて使用頻度が低くなったものを自動で移動する設定をします。日付が経過するごとに「標準クラス→STANDARD-IA→Glacier」に移動させる設定にするのが通常でしょう。

STANDARD-IAクラス

普通のクラスよりも安いです。使用頻度が低いものを移動する。

Glacier

アーカイブとして保存する。

互換ストレージminioとは?

AWSのs3の互換ストレージです。開発時にs3をそのまま使用してしまうとアップロードのテストをする際にお金がかかってしまうので、開発環境だけはminio環境を作り、本番環境はs3を使うというようなシステム設計がされている場合が多いです。

開発設計

dockerにminioコンテナというコンテナを作ってそこにminioをインストールしてコンテナで運用するケースが多いでしょう。minioにアクセスするためには下記のアクセスキー とシークレットキーの情報が必要になりますが、どちらもコンテナの環境変数に設定(docker-compose.ymlに設定)しておく運用になるでしょう。

  • MINIO_ACCESS_KEY
  • MINIO_SECRET_KEY

バケットの作成

名前とリージョン

バケット名

他のユーザーと被らない一意の名前を付ける必要があります。

リージョン

アプリケーションと同じリージョンにするのが望ましいです。日本で利用するのであれば「アジアパシフィック(東京)」を選択するのが良いでしょう。

既存のバケットから設定をコピー

もし既存に何かしらバケットを作成していた場合は設定作業を楽できます。

オプションの設定

バージョニング

同じファイル名を保存した場合に別バージョンとして記録するかを指定できます。そこまで厳密でなければ設定しなくても良いでしょう。ユーザーやアプリケーションの誤操作による削除対策に有効です。

サーバーアクセスのログ記録

バケット(S3)に対するアクセスログ詳細を記録する設定です。監査対策にもなるので本番環境であれば設定しておきたいです。学習用であれば余計に費用がかかってしまうので大丈夫でしょう。

Tags

オブジェクトレベルのログ記録

さらに詳細なログ記録ができます。

デフォルト暗号化

S3に保存されるオブジェクトを自動的に暗号化するかどうかの設定を行えます。

詳細設定:オブジェクトのログ

管理:CloudWatch リクエストメトリクス

バケットのリクエストやデータ転送を詳細にモニタリングできます。

アクセス許可の設定

ブロックパブリックアクセス(バケット設定)

バケットとオブジェクトに外からのアクセスを禁止するかどうかの設定になります。外からアクセスされたくないファイルを配置する場合はこちらをチェックするようにすると良いでしょう。インターネット上で利用する画像とかの用途でS3を使用するのであればチェックを外します。

システムのアクセス許可の管理

バケットに対するリクエストの詳細ログを記録する設定になります。

確認

問題ないかチェックします。

IAMユーザーの作成

S3にアクセス用のIAMユーザーを作成します。

アクセスの種類

「プログラムによるアクセス」を選択します。

アクセス許可の設定

「既存のポリシーを直接アタッチ」を選択して、「AmazonS3FullAccess」を選択します。

AmazonS3FullAccess

S3に対する操作に関してはなんでもできるという権限です。

スポンサーリンク
  • 2020 02.24
  • miyabisan2
  • コメントを書く
  • AWS
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 11.24

    【AWS】「Amazon EC2インスタンス」、「セキュリティグループ」や「ACL」について

  2. 2021 12.02

    【AWS】「Code Commit」、「Code Build」、「Code Deploy」、「Code Pipeline」の違い

  3. 2021 01.16

    【AWS】「ストレージ」(S3、EFS、Glacier、Storage Gatewayなど)

  4. 2020 12.31

    【AWS】「EKS」、「eksctl」

  5. 2023 10.09

    【AWS】App Runnnerについて

  6. 2019 11.24

    【AWS】AWSの全体像、無料枠

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【インフラ】「DNS」の仕組み、インフラ設定

【webpack】設定の基本や「loader(ローダー…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー