S3の便利な機能 ~マウントと静的WebHosting~
はじめに
S3(Simple Storage Service) はAWSのオンラインストレージサービスです。
高い耐久性とACL、バケットポリシー、IAMといった多様なセキュリティー対策が用意されており、AWSを使いこなす上で、欠かせないサービスの1つとなっています。
本稿では、S3バケットのEC2へのマウントと、S3の静的Web Hostingを紹介します。
静的WebHostingの機能を使うにはドメインを取得する必要があります。ご自身でお持ちでない場合は、freenomという無料でドメインを取得できるサイトがあるので、興味があればご検討ください。
S3マウント
EC2インスタンス作成
AWSは一年間無料で利用する事ができるのですが、EC2を作成するにあたり、無料枠のAMIやインスタンスタイプは限られたものしか選択できませんが、学習用途としては十分です。
今回は以下の構成でEC2を作成します。
- AMI : Amazon Linux 2
- インスタンスタイプ : t2.micro
仮想サーバーに割り当てられる、仮想的なハードディスクはEBSと呼ばれるもので、今回の構成だと8GBになります。
IAMロールの作成
作成したEC2がS3にアクセスできるように権限を付与します。
IAMから新規でロールを作成し、AmazonS3FullAccessのポリシーを選択してアタッチして下さい。
ロール作成後、EC2の画面を表示し、上記で作成したEC2インスタンスを選択します。アクション > インスタンスの設定 > IAMロールの割り当て/置換 の順で操作し、作成したロールを割り当てて下さい。
S3バケットの作成
S3バケットを作成します。バケット作成時に特別な設定は不要です。AWSのマネジメントコンソールから、S3の画面を開いて、バケットの作成ボタンをクリックし、バケット名を任意のものに設定します。
注意点として、バケット名は全リージョンでユニークである必要があります。また、後々マウントする事を踏まえ、EC2インスタンスとの関わり判別しやすい名称にしたほうがよいでしょう。
マウント
マウントの手順は様々ありますが goofysというGo言語で開発されたソフトウェアを用いる方法があります。
Go言語のインストールとpathの設定、及びgoofysのインストールが必要です。インターネットで検索すると、いくつか紹介されているページがありますので、そちらを参考にしてみて下さい。
goofysをインストールしたらマウント用のディレクトリmkdir コマンドで作成します。
次にidコマンドでuidとgidを確認し、/etc/fstab を編集します。以下のバケット名、マウント用ディレクトリ、uid、gidを置き替えて編集します。
/home/ec2-user/go/bin/goofys#[※バケット名] [※マウントするディレクトリ] fuse _netdev,allow_other,–file-mode-0666,–uid=[※uid],–gid=[※gid] 0 0
サーバーを再起動して、df -h で確認すると、S3がマウントされ、1PB(ペタバイト)の容量が認識されていればOKです。
静的WebHosting
静的WebHostingについて
S3には、HTML、CSS等で作られた静的webページをwebサーバー無しで公開できる機能があります。
利用するには、ドメインを取得し、Route53でホストゾーンを作成し、レコードセットでS3と紐付ける必要があります。
また、S3のバケット名はドメインと同じ名称でなければいけません。
S3の設定
まず、バケットを作成します。上記で記載した通り、バケット名はドメイン名と同じでなくてはなりません。また、パブリックアクセスをすべてブロック のチェックをOFF、パブリックアクセス確認用のチェックもONにして、バケットを作成します。
プロパティからStatic web hosthing を選択します。
このバケットを使用して、ウェブサイトをホストする を選択し、インデックスドキュメントにindex.html と入力しておきます。
アクセス権限 > バケットポリシーの順に操作します
ここで記載されているARNを確認しておいて下さい。ページ下部のポリシージェネレータのリンクをクリックし、遷移先のページで以下の通り入力します。
- Select Type of Policy : S3 bucket of policy
- Effect : Allow
- Principal : *
- AWS service : Amazon S3
- Actions : s3:GetObject
- Amazon Resource Name : 上記で確認したARNを入力
Add Statement > Generate Policy の順でボタンをクリックするとポリシー設定用のJSONが表示されます。これを全てコピーし、S3のバケットポリシーのページに貼り付けます。
Route53の設定手順
ドメインを登録し、レコードセットを以下の設定で作成します。
- 名前 : 入力なし
- タイプ : A-IPv4 アドレス
- エイリアス : はい
- エイリアス先 : 作成したS3バケットを選択
- ルーティングポリシー : シンプル
- ターゲットの正常性の評価 : いいえ
ブラウザでアクセスしてみる
バケットに適当に作成したHTMLファイルをindex.htmlのファイル名で保存し、ブラウザでドメイン名を指定してアクセスしてみてください。Webページが表示されたらOKです。
まとめ
S3のEC2へのマウントと静的WebHostingの機能を紹介させて頂きました。
どちらも、実用性の高い便利な機能なので、是非ご自身の環境でお試し下さい。
最後まで、ご覧頂きありがとうございました。