S3 バケットをEC2 インスタンスにマウントする

# チュートリアルの目的

次のアーキテクチャをどのように構築するかを見ていきます。

![00d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/f203c9e5-622e-9894-5d2e-5038983ef7aa.png)

3つのインスタンスにS3バケットをボリュームとして使用し、これらのインスタンスがデータを共有できるようにマウントする予定です。

以前のチュートリアルで共通のEFSボリュームを使用した似たようなケースについてすでに触れています。

https://qiita.com/seikida/items/94e0b480d4bd1a1a9b92

:::note warn
S3をボリュームとして使用すると、**パフォーマンスとデータの整合性に関する多くの制約があることに注意してください。** S3はオブジェクトをバージョン管理することができますが、まだ更新されていないオブジェクトがインスタンスに取得される可能性があります。バージョニングを使用する場合は、この種の問題に注意してください。また、EFSはS3よりも優れたパフォーマンスを提供していることにも注意してください。
:::

S3をボリュームとして使用するいくつかの方法があります。たとえば、**s3fs**のような方法があります。このチュートリアルでは、**mount-s3**を使用してそれをどのように行うかを説明します。

## ロールの作成

検索フィールドに「**IAM**」と入力してください。

![Screenshot 2024-01-02 at 21.08.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/beabc0e4-1ac9-3b6a-098b-e96ce6bb4846.png)

「**IAM**」を選択してください。

![Screenshot 2024-01-02 at 21.08.21 copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/c6b24adf-e6e3-8a9a-adbf-bed5d70fc42e.png)

「**ロール**」をクリックしてください。

![Screenshot 2024-01-02 at 21.12.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/3b12c7ff-f549-6117-f471-054d38d83973.png)

「**ロールを作成**」ボタンをクリックしてください。

![Screenshot 2024-01-02 at 21.15.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/7ea09826-2862-3634-781f-a922c4ca2c43.png)

「**ユースケース**」セクションに移動してください。

![Screenshot 2024-01-02 at 21.18.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/28d20a85-7bd3-2851-f852-343adae60285.png)

「**EC2**」を選択してください。

![Screenshot 2024-01-02 at 21.21.58 copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/b3a93db7-68ac-c7b3-e87c-c527ad49080f.png)

「**次へ**」ボタンをクリックしてください。

![Screenshot 2024-01-02 at 21.21.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/dc786bef-1177-0cb8-4e41-9ae8b71f3834.png)

「**AmazonS3FullAccess**」を探して、選択してください。

![Screenshot 2024-01-02 at 21.27.27 copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/a3d4cefb-a83d-14be-7886-727d626c8984.png)

「**次へ**」ボタンをクリックしてください。

![Screenshot 2024-01-02 at 21.27.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/49598581-e0e1-859c-09d8-20da74e2423f.png)

「**MyS3RoleFullAccess**」というロールに名前を付けてください。

![Screenshot 2024-01-02 at 21.34.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/af44707d-e823-5d22-12b4-6380d51d61d4.png)

「**ロールを作成**」をクリックしてください。

![Screenshot 2024-01-02 at 21.42.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/db13a64e-0606-66bf-4bb9-0cba6a2b7e7f.png)

## S3 バケットの作成

「**S3 ダッシュボード**」にアクセスしてください。「**バケットを作成**」をクリックしてください。

![Screenshot 2024-01-02 at 23.00.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/b0af5b6d-96ea-2b65-99d0-9b07a18e8f5a.png)

S3バケットを作成し、それに好きな名前を付けます。私の場合、S3バケットの名前は**qiita.com**になります。

その後、S3 バケットにファイルを追加してください。
例：

![Screenshot 2024-01-03 at 8.08.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/e572e0f0-1c76-1314-197e-e1ce5cf8d222.png)



## EC2インスタンスの作成

「**EC2 ダッシュボード**」にアクセスしてください。「**インスタンスを起動**」をクリックしてください。

<img src="https://camo.qiitausercontent.com/5cae358cc0799822e7ea26e39e138b8f756bf918/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f65343837313236662d633765632d313034342d323764632d3962346435333666313265652e706e67">

「**MyInstance A**」というボリュームに名前を付けてください。

<img src="https://camo.qiitausercontent.com/95c6d97112846d486bec06e9ffbc3785ceb40670/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f30393262396462372d613632652d316331332d393233332d6163613736383361393631382e706e67">

**Amazon Linux**を使用していることを確認ください。

<img src="https://camo.qiitausercontent.com/a241367d6ec420b59bd54351260a55d28aee24e0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f37363338623739312d316339392d366566352d363731632d3961353532383538396439652e706e67">

また、**t2.micro**を使用していることを確認してください。

<img src="https://camo.qiitausercontent.com/ed85de72654002b6b64a38075887f45fea77006d/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f31643037646531642d333362642d656665642d613530372d6537613365613233343963312e706e67">

このチュートリアルでは、キーペアが要らないので使用しません。

「**キーペアなしで続行 (推奨されません)**」を選択してください。

<img src="https://camo.qiitausercontent.com/e5bdddd8f9909a8c90f7b16fd7305c8c4e9459e8/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f32333335366633622d313236642d666339312d663830312d3565643837323335326233302e706e67">

「**ネットワーク設定**」セクションに移動してください。

<img src="https://camo.qiitausercontent.com/7f9e6e111f469ebc2615dfaacc51644d70d0a18f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f35316331353833642d333236342d663666652d653464362d6635623863656632353365362e706e67">

AWSは、セキュリティグループを作成すると書いています。

<img src="https://camo.qiitausercontent.com/28541c3aaa477039161872bb12063e5075232e4b/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f34663531356264322d363735302d636330342d306365612d3036623134656437376134352e706e67">

私の場合、セキュリティグループの名前は**launch-wizard-2**となります。ただし、注意してください。あなたの場合、異なる名前になる可能性があります。

次に、「**編集**」ボタンをクリックしてください。

<img src="https://camo.qiitausercontent.com/961fa9fe8ca71575ec5b528860d638eda0bec0a4/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f39376635396263372d653235652d656561392d656234372d6535323130373863323166332e706e67">

「**サブネット**」サブセクションに移動してください。

<img src="https://camo.qiitausercontent.com/a637461f97143a2ae6464839de4da5d25287bc26/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f63363462646561632d356664312d613066642d356636302d6239626136306563326332652e706e67">

「**ap-northeast-1a**」を選んでください。

<img src="https://camo.qiitausercontent.com/5af1d6343adc6a3837b1f70a33c1a927b8617eb2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f37343036326432312d386234392d333466352d346634362d3632373831313865643133312e706e67">

:::note warn
**MyInstance B**を作成する際には、**ap-northeast-1c**を選択し、**MyInstance C**を作成する際には**ap-northeast-1d**を選択する必要があります。気をつけてください。
:::

<img src="https://camo.qiitausercontent.com/56b734756544840a2aa859584755c7fd9c6720b4/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f63613864623037642d336331382d646231312d613033632d3565306165323436656134622e706e67">

「**インスタンスを起動**」をクリックしてください。

<img src="https://camo.qiitausercontent.com/48101921a0ef73aa820f81f29e6050a1d35650de/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f31343430303936322d356233362d353865362d616536362d6562383731633730326531392e706e67">

## 「MyInstance B」と「MyInstance C」を作成

インスタンスBとCを作成する際には、以前にインスタンスAを作成する際に行われたすべての手順を再現してください。ただし、インスタンスBとCがインスタンスAと同じセキュリティグループを使用するように注意してください。また、インスタンスBがサブネット**ap-northeast-1c**を使用し、インスタンスCがサブネット**ap-northeast-1d**を使用するようにも注意してください。

:::note warn
疑問があれば、このチュートリアルに関連する動画をご覧ください。
:::

<img src="https://camo.qiitausercontent.com/d4f11ad13a34c1ba57b0cac9ef9dd287cec6794b/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f63646265313662302d313861382d653831302d396561382d3962303633396237643839372e706e67">

すべてが順調に進むなら、3インスタンスがあるはずです。

<img src="https://camo.qiitausercontent.com/72be3c55daaf0b7c69dba2ee542e807161479ea5/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333632303136312f64613531376333322d656630632d363530372d656635662d3537653639653837346635392e706e67">

## EC2インスタンスの設定

接続して、3つのインスタンスにログインし、次のコマンドを実行してください。
**{BUCKET_NAME}** をあなたのS3バケットの名前に適切に変更してください。

```bash
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バケットが正しくマウントされているかどうかを確認してください：

```bash
cd s3mount
ls -ll
```

もしすべてがうまくいけば、ファイルを見るはずです。

例：

![Screenshot 2024-01-03 at 8.53.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/1f84cffa-63c0-b3b3-7911-89873be71872.png)

ファイルを作成する場合、そのファイルはきちんとS3バケットに作成されます。

例：ファイルを作成します。

```bash
echo "Hello World" > test.txt
```

![Screenshot 2024-01-03 at 8.56.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/daea9b5c-7dbc-b3e1-5a7f-de57cf519735.png)

ファイルは、S3バケットに正常に作成されました。

![Screenshot 2024-01-03 at 8.59.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/54bb7241-cfca-0704-bf55-2edef7fcee80.png)

ファイルを削除する場合、そのファイルはきちんとS3バケットに削除されます。

例：ファイルを削除します。

```bash
rm -f test.txt
```
ファイルは、S3バケットに正常に作成されました。

# 動画

必要なら、Youtubeで動画を作成しました。

<iframe width="1062" height="606" src="https://www.youtube.com/embed/wJS3Xo4JzTY" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>