はじめに
Amazon S3 (Simple Storage Service) は、AWSの提供するクラウドストレージサービスで、大量のデータを安全に保存し、アクセスしやすくするための機能を持っています。本記事では、エンジニア初心者にもわかりやすく、S3バケットの作成やオブジェクトのアップロード、アクセス権限管理、バージョニング、ライフサイクル管理、そして静的ウェブホスティングの設定について解説します。
S3バケットの作成
S3バケットは、S3でファイル(オブジェクト)を保存するための「フォルダ」のようなものです。まず、バケットを作成しましょう。
S3バケット作成の手順
- AWSコンソールにログインし、「S3」サービスに移動します。
- 「バケットの作成」ボタンをクリックします。
- バケットタイプを選択します。基本汎用設定で良いと思います。
- バケット名を入力します。バケット名はS3全体でユニークでなければならず、名前にスペースや大文字は使用できません。
- リージョンを選択します。ユーザーが主にアクセスする地域やコストに応じて、適切なリージョンを選びましょう。
- オプションの設定(例: バージョニング)を選択し、「バケットの作成」をクリックして完了です。
オブジェクトのアップロード
S3にファイルを保存することを「オブジェクトのアップロード」と言います。ファイル、画像、動画、ドキュメントなど、さまざまな形式のファイルをS3バケットにアップロードできます。
アップロード手順
- S3バケットにアクセスし、「アップロード」ボタンをクリックします。
- 「ファイルを追加」ボタンをクリックし、アップロードしたいファイルを選択します。
- 「アップロード」をクリックし、ファイルをバケットにアップロードします。
アクセス権限の管理
S3のアクセス権限は、バケットまたはオブジェクト単位で設定可能です。S3バケットのアクセス権限管理には、主に以下の方法があります。
アクセス権限の設定方法
- バケットポリシー:
- JSON形式でアクセスルールを記述し、特定のユーザーやIPからのみアクセスを許可するなどの詳細な制御が可能です。
- オブジェクトのパブリックアクセス設定:
- ファイル単位で「パブリックアクセス」を設定し、誰でもアクセス可能にすることができます。
- アクセスコントロールリスト (ACL):
- バケットやオブジェクトの所有者以外に特定のAWSアカウントやユーザーにアクセスを許可できます。
注意: セキュリティの観点から、パブリックにアクセスできる設定は慎重に行いましょう。
S3のバージョニング
バージョニングを有効にすると、S3バケットに同じ名前のファイルをアップロードした場合でも、以前のバージョンのファイルが削除されずに保持されます。これにより、誤ってファイルを上書きしてしまっても、以前のバージョンに戻すことが可能です。
バージョニングの有効化手順
- S3バケットにアクセスし、「プロパティ」タブを選択します。
- 「バージョニング」セクションにある「編集」をクリックし、「バージョニングを有効にする」を選択して保存します。
補足: バージョニングを有効にすると、バケットのストレージコストが増える可能性があるため、必要な場合のみ有効にしましょう。
ライフサイクル管理
ライフサイクル管理を使うと、ファイルの保存期限や保存場所を自動的に管理できます。例えば、一定期間が経過したファイルを別のストレージクラスに移動したり、自動で削除することが可能です。
ライフサイクルルールの設定手順
- S3バケットにアクセスし、「管理」タブを選択します。
- 「ライフサイクルルール」セクションで「ルールの作成」をクリックします。
- ルールの名前を設定し、対象のファイルやフォルダを指定します。
- アクションの設定: 例えば、30日後に「低頻度アクセス(Standard-IA)」に移行、1年後に削除などの設定を行います。
例: アップロード後30日が経過したファイルを「Glacier」(長期保存用)に移行するなど、保存コストを自動的に最適化できます。
静的ウェブホスティングの実装
S3は、HTMLファイルやCSS、JavaScriptファイルをアップロードすることで、静的なウェブサイトのホスティングも可能です。静的サイトはサーバーレスで、手軽にウェブページを公開する方法です。
静的ウェブホスティング設定手順
- S3バケットの「プロパティ」タブにアクセスし、「静的ウェブホスティング」セクションで「設定」をクリックします。
- 「静的ウェブホスティングを有効にする」を選択し、インデックスドキュメント(例:
index.html
)とエラードキュメント(例:error.html
)を指定します。 - パブリックアクセスの設定: ウェブサイトをインターネットに公開するためには、バケットとファイルのパブリックアクセス権限を有効にします。
- URLの確認: S3が発行するエンドポイントURLを使用して、ウェブサイトにアクセスできるようになります(例:
http://[バケット名].s3-website-[リージョン].amazonaws.com
)。
注意: S3の静的ホスティングはHTTPS対応ではないため、HTTPSを使用したい場合はCloudFrontと連携させる必要があります。
テストファイルのアップロード
静的ウェブホスティングサイトのアップロードを試してみます。
あらかじめ静的ウェブホスティング設定手順の1.2の設定を完了させ、静的ウェブホスティングを有効にしておきます。
下記ファイルをローカルで作成し、S3にアップロードします。
<!-- index.html -->
<h1>Hello World</h1>
アップロードが完了したら、index.htmlのACL設定を変更します。
ACLを変更する前に下記2点の設定を確認します。
- パブリックアクセスをすべて ブロックが解除されていること
- オブジェクト所有者を編集画面にて、ACLが有効になっていること
ジョキの確認ができたら、index.htmlのアクセス許可タブで、アクセスコントロールリスト (ACL)を編集します。
全員 (パブリックアクセス)のオブジェクトの書き込みをOKにしアクセスできるようになります。
その後、バケットの静的ウェブサイトホスティング欄にある、バケットウェブサイトエンドポイントにアクセスし、Hello Worldが出力されていれば成功です。
まとめ
S3は単なるストレージではなく、アクセス権限管理、バージョニング、ライフサイクル管理、静的ウェブホスティングなどの便利な機能を備えています。この記事で紹介した手順を参考に、S3バケットを活用して安全で効率的なストレージ管理を実現しましょう。これにより、初心者でもAWSのS3を使いこなせるようになるはずです。
コメント