チュートリアルの目的
次のアーキテクチャをどのように構築するかを見ていきます。
3つのインスタンスにS3バケットをボリュームとして使用し、これらのインスタンスがデータを共有できるようにマウントする予定です。
以前のチュートリアルで共通のEFSボリュームを使用した似たようなケースについてすでに触れています。
S3をボリュームとして使用すると、パフォーマンスとデータの整合性に関する多くの制約があることに注意してください。 S3はオブジェクトをバージョン管理することができますが、まだ更新されていないオブジェクトがインスタンスに取得される可能性があります。バージョニングを使用する場合は、この種の問題に注意してください。また、EFSはS3よりも優れたパフォーマンスを提供していることにも注意してください。
S3をボリュームとして使用するいくつかの方法があります。たとえば、s3fsのような方法があります。このチュートリアルでは、mount-s3を使用してそれをどのように行うかを説明します。
ロールの作成
検索フィールドに「IAM」と入力してください。
「IAM」を選択してください。
「ロール」をクリックしてください。
「ロールを作成」ボタンをクリックしてください。
「ユースケース」セクションに移動してください。
「EC2」を選択してください。
「次へ」ボタンをクリックしてください。
「AmazonS3FullAccess」を探して、選択してください。
「次へ」ボタンをクリックしてください。
「MyS3RoleFullAccess」というロールに名前を付けてください。
「ロールを作成」をクリックしてください。
S3 バケットの作成
「S3 ダッシュボード」にアクセスしてください。「バケットを作成」をクリックしてください。
S3バケットを作成し、それに好きな名前を付けます。私の場合、S3バケットの名前はqiita.comになります。
その後、S3 バケットにファイルを追加してください。
例:
EC2インスタンスの作成
「EC2 ダッシュボード」にアクセスしてください。「インスタンスを起動」をクリックしてください。
「MyInstance A」というボリュームに名前を付けてください。
Amazon Linuxを使用していることを確認ください。
また、t2.microを使用していることを確認してください。
このチュートリアルでは、キーペアが要らないので使用しません。
「キーペアなしで続行 (推奨されません)」を選択してください。
「ネットワーク設定」セクションに移動してください。
AWSは、セキュリティグループを作成すると書いています。
私の場合、セキュリティグループの名前はlaunch-wizard-2となります。ただし、注意してください。あなたの場合、異なる名前になる可能性があります。
次に、「編集」ボタンをクリックしてください。
「サブネット」サブセクションに移動してください。
「ap-northeast-1a」を選んでください。
MyInstance Bを作成する際には、ap-northeast-1cを選択し、MyInstance Cを作成する際にはap-northeast-1dを選択する必要があります。気をつけてください。
「インスタンスを起動」をクリックしてください。
「MyInstance B」と「MyInstance C」を作成
インスタンスBとCを作成する際には、以前にインスタンスAを作成する際に行われたすべての手順を再現してください。ただし、インスタンスBとCがインスタンスAと同じセキュリティグループを使用するように注意してください。また、インスタンスBがサブネットap-northeast-1cを使用し、インスタンスCがサブネットap-northeast-1dを使用するようにも注意してください。
疑問があれば、このチュートリアルに関連する動画をご覧ください。
すべてが順調に進むなら、3インスタンスがあるはずです。
EC2インスタンスの設定
接続して、3つのインスタンスにログインし、次のコマンドを実行してください。
{BUCKET_NAME} をあなたのS3バケットの名前に適切に変更してください。
sudo su
yum update -y
cd /home/ec2-user
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
yum install ./mount-s3.rpm -y
mount-s3 --version
mkdir s3mount
mount-s3 {BUCKET_NAME} s3mount/ --allow-delete
次のコマンドを入力して、S3バケットが正しくマウントされているかどうかを確認してください:
cd s3mount
ls -ll
もしすべてがうまくいけば、ファイルを見るはずです。
例:
ファイルを作成する場合、そのファイルはきちんとS3バケットに作成されます。
例:ファイルを作成します。
echo "Hello World" > test.txt
ファイルは、S3バケットに正常に作成されました。
ファイルを削除する場合、そのファイルはきちんとS3バケットに削除されます。
例:ファイルを削除します。
rm -f test.txt
ファイルは、S3バケットに正常に作成されました。
動画
必要なら、Youtubeで動画を作成しました。