見出し画像

個人で行うAWSインフラ構築日記5日目

今回から前回紹介した書籍に沿ってインフラ構築を進めていきたいと思います。

まずは画像動画配信サイトを構築していきます。構成図は以下の通りになっています。

ネットワーク構成図

画像1

Amazon S3について

今回新しく使うAWSサービスにAmazon S3があります。
S3はSimple Storage Serviceを意味し、古くからAWSに存在するサービスです。
大きな特徴として、耐久性に優れていて容量のスケール調整が容易なことが挙げられます。
今回はEC2上にインストールしていたHTTPサーバーでWebサイトを構築するのではなく、S3バケットにすべてのファイルを配置してS3バケット(注:S3の単位バケツを意味する)をHTTPサーバーとして使います。

S3上でサイトを構築するメリット

EC2上でサイト運営を行っていくと画像、動画が段々と増えていきサーバーへの負荷が高まります。そうなると多数のユーザーがアクセスするとEC2に対して過負荷となり、サイト接続が途切れてしまう懸念があります。
S3は最初に触れたとおり、高い耐久性を誇り秒間数百万リクエストがあったとしても耐えられるようにAWS側で設計されています。
自動的に負荷分散もしてくれるので、サイトの運営者がアクセス負荷を気にする必要がなくなるわけです。

S3上でコンテンツ配信サイトを行う課題

S3上でコンテンツ配信サイトを行うにあたって1つ課題があります。
S3はあくまでもストレージサービスであり、EC2インスタンスのようにソフトをインストールしてPHPやJavaScriptなどのプログラムを実行することはできません。
なので、記事の投稿、記事へのコメントなどの動作を伴う処理はEC2上で行います。
そして「処理が行われた結果をS3バケットへ書き込む」という仕組みが必要になります。この仕組みを達成するためにs3fsというソフトを使いました。
s3fsは、S3バケットをEC2のディスクとしてマウントする機能を持っています。
マウントについて簡単に説明しますと、外付けデバイスを使えるようにするというものです。WindowsですとUSBを差し込めば自動的に使えるようにしてくれますが、UNIX/Linuxではユーザーが手動で設定をしなければなりません。

画像2

イメージとしてはPCに繋いだUSBメモリにデータを保存できるようにするものです。
それでは、s3fsを用いてS3をマウントしていこうと思います。

構築結果

先に結論を申し上げますと、マウントがうまくいかずに失敗に終わりました…

$ sudo s3fs mybucket-name(設定したバケットネームを書き込んだ) /data/file/static -o allow_other,use_path_request_style
$ ls -l
合計 1
drwxr-xr-x 2 www  www    6  21 07:52 cgi-bin
drwxrwxrwx 1 root root   0  11  1970 static   #マウント対象ディレクトリ
drwxr-xr-x 4 www  www  336  28 08:54 static-old
$ sudo cp -rp static-old/* static/
cp: `static/2020' を stat できません: Input/output error
cp: `static/7019db4e583fe5b60e03ba982df774af957ae357.JPG' を stat できません: Input/output error
cp: `static/IMG_0069.JPG' を stat できません: Input/output error
cp: `static/Movable.png' を stat できません: Input/output error
〜〜〜〜〜
$ mount | grep s3fs
s3fs on /data/file/static type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)

上記のs3fsコマンドを実行して、対象ディレクトリをマウントさせることに成功できたかに見えたのですが、ディレクトリにファイルをコピーしようとしてもエラーとなり、ファイルを配置することができませんでした。こちらの詳しい事象はTeratailの方にも投稿いたしましたのでわかる方がいましたら、ご教授願いたいです(泣)

構築感想

書籍にかいてあるs3fsですが、バージョンが古く書籍通り打ってもうまくいかないことが度々ありました。
公式ドキュメントを参照に最新版にコマンドを打ち直して四苦八苦したことが記憶に残りました。現状質問サイトへの回答待ちですが、解決でき次第更新していこうと思います。

次回予告

次回ですが、Eコマースサイトの構築を行ってみようと思います。
またこれまでは一通り最後まで出来上がってから日記を残してきましたが、時間が掛かり、更新頻度が落ちてしまうので進捗具合を残すという意味を込めて途中の状態でも日記として残していきたいと思います。

この記事が気に入ったらサポートをしてみませんか?