EFSをVPC PeeringしたLightsailのCentOSにマウントさせる

# LightsailのVPC ピアリング接続って・・・
Amazon Lightsail では、Amazon RDS データベースや Amazon Aurora など、他の AWS リソースを表示して接続できます。
Lightsail Virtual Private Cloud (VPC) を同じリージョンの AWS VPC とピア接続できます。
たとえば、アプリからデータ層を分離することができます。

# ドキュメント
- 関連するドキュメントは[こちら](https://lightsail.aws.amazon.com/ls/docs/how-to/article/lightsail-how-to-set-up-vpc-peering-with-aws-resources)です。

# 手順(ごめんなさい、最低限の設定のみです。アクセス管理などは省略してます。）
## Lightsail側でVPC Peeringを有効化する

1. Lightsailのマネジメントコンソールからアカウントをクリックして設定画面を開く
<img width="1257" alt="スクリーンショット 2019-10-17 15.55.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44351/b64a3968-98de-9c19-0c54-0f220a5925b1.png">

2. 「アドバンスト」の下の方に「VPC Peering」の設定項目があるのでクリックして有効化する
<img width="986" alt="スクリーンショット 2019-10-17 15.57.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44351/4a03f2ea-7fbc-de83-4cd4-662c9d924428.png">

3. VPCのピアリング接続を確認すると、LightsailとデフォルトVPCでVPC Peeringが有効になっている

<img width="1051" alt="スクリーンショット 2019-10-17 16.00.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44351/525df66f-7a7a-5eb0-045c-41e162ccc56c.png">


4.EFSファイルシステムの作成

- ステップ 1: ネットワークアクセスを設定する

- - VPC:デフォルトのVPCを指定しました（Lightsailとだとデフォルトでしかダメ）
- - マウントターゲットの作成:アベイラビリティーゾーンとサブネット（デフォルト）、IPアドレス（自動）、セキュリティグループを選択

EFSのセキュリティグループは、事前に作成しておきます。

<img width="1145" alt="スクリーンショット 2020-01-20 14.53.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44351/30eed7b8-f094-cdad-80b8-ed6b2ea313d6.png">

<img width="1114" alt="スクリーンショット 2020-01-20 14.54.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44351/be5c0bad-060c-7eb6-2b04-819183d08961.png">

- ステップ 2: ファイルシステムの設定を行う

- - 特に何も変更せずデフォルトで設定しました。

- ステップ 3: クライアントアクセスを設定

- - 特に何も変更せずデフォルトで設定しました。

- ステップ 4: 確認と作成

- - ファイルシステムの作成ボタンをポチッとな

5.マウント

ansibleでやりたかったので、ansible-galaxyに、初めて公開してみました。

[ansible-role-efs-lightsail](https://github.com/kaihei777/ansible-role-efs-lightsail)


内部のIPアドレスで指定する方法を採用します。

```main.yml
- hosts: servers
  roles:
  - {
      role: kaihei777.ansible_role_efs_lightsail,
      mount_type: "vpc-peering",
      aws_efs_paths:
        [
          {
            path: "/mnt/efs", ← マウントしたい場所
            owner: "root",
            group: "root",
            mode: "0644",
            region: "ap-northeast-1", ← リージョン
            filesystem_id: "fs-xxxxx", ← 作成すると割当られるファイルシステムID
            mount_target_ip: "172.31.xx.xx", ← 作成すると割当られるマウントターゲットのIPアドレス
            state: "mounted",
            opts: "nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2",
          },
        ],
    }
```

このroleを実行すると・・・おー！　すごい使用可能の領域w
fstabにも追加されてる！

```
[centos@hogehoge ~]$ ls -la /mnt/
合計 12
drwxr-xr-x.  5 root root   59  1月 21 11:14 .
dr-xr-xr-x. 17 root root  240  9月 12 18:06 ..
drwxrwxrwx   2 root root 4096  1月 17 19:14 efs

[centos@hogehoge ~]$ df
ファイルシス                               1K-ブロック    使用           使用可 使用% マウント位置
/dev/xvda1                                    20960236 4903012         16057224   24% /
devtmpfs                                        225700       0           225700    0% /dev
tmpfs                                           248556       0           248556    0% /dev/shm
tmpfs                                           248556   33304           215252   14% /run
tmpfs                                           248556       0           248556    0% /sys/fs/cgroup
172.31.xx.xx:/                        9007199254739968       0 9007199254739968    0% /mnt/efs

[centos@hogehoge ~]$ cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Jan 28 20:51:49 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=f41e390f-835b-4223-a9bb-9b45984ddf8d /                       xfs     defaults        0 0
/swapfile none swap sw 0 0
172.31.xx.xx:/ /mnt/efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0
```

書き込んでみる

```
[centos@hogehoge ~]$ sudo vi /mnt/jad_disk_efs/test.txt
```

<img width="570" alt="スクリーンショット 2020-01-21 11.54.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44351/b498915c-4e7a-4fae-ba11-7e1408a0faf4.png">

```
[centos@hogehoge ~]$ sudo cat /mnt/jad_disk_efs/test.txt
やったよー！
```

## 最後に

もちろん、他のサーバーでマウントすれば、共有領域として使うことができます。

goofysでS3をマウントすることも可能ではありますが、そもそも用途が違うこともあり
頻繁に、I/Oを行う様なことをすると、goofys君メモリリークして、パンクします。
（プロセス落として、マウントし直すとかすると解放される・・・）

無難に、EFSを使って、バックアップやアーカイブの保存先としてS3を使うのが良いかと