AWSをいじり倒す(6.EFS)

 

EFSを使ってみる。

以前、複数のWindowsサーバをEC2で立ち上げて、

ファイル共有したいなぁと思って調べた時に出てきたキーワードだけど

EFSはWIndows対応してなくて使えなかった。

blackbeltみてても結構大きくWIndows非対応と書いてあるので、今後も対応することはないのだろう・・・。

(ちなみにその時は多めにEBSを積んだEC2をストレージ用として建て、別EC2からネットワークドライブとしてマウントした。)

 

調べてみると、気合でWindowsから使う方法もあるにはあるみたいだが、

今回はLinuxサーバを2つたてて、それぞれにEFSをマウントし、ファイル共有を試す

AWS EFS をEC2にマウントしてみる - Qiita

これが参考になりそう

 

サービスからEFSを選択した最初の画面

f:id:Messerarche:20200504204249p:plain

 

ネットワーク設定

f:id:Messerarche:20200504204337p:plain

アクセスしたいEC2の所属するVPCを指定する。

 

マウントターゲットの設定

f:id:Messerarche:20200504204529p:plain

セキュリティグループはデフォルトで何か入っているが、今までの経験からするとうまく機能しないと思われるので、要確認。

 

タグの設定

f:id:Messerarche:20200504204741p:plain

なんでか説明が詳しくて、Nameがデフォルトで入っている

 

ライフサイクル管理

f:id:Messerarche:20200504204845p:plain

EFSにはスタンダードと定頻度アクセスという2種類のストレージがある

EFS ストレージクラス - Amazon Elastic File System

ただ、定頻度を最初から指定できるわけではなく、このライフサイクル管理によって指定した期間アクセスがないと自動で移動されるような使い方になる

 

選択肢はこんな感じ。

f:id:Messerarche:20200504205425p:plain

長期保存となるものはなるべくS3に保存すべきなんだろうけど、

使うと思ってたけど実は使わない、みたいなものがあるとしたら

有効にしといて損はない機能かな。

 

スループットモードの選択

f:id:Messerarche:20200504210324p:plain

バーストは、普段貯金しておいて突発的な支出に備えるモードであるが

貯金で買えない量のトラフィックが必要ならプロビジョニングモード。

この辺はblackbeltP66あたり参照

 

パフォーマンスモード

f:id:Messerarche:20200504211544p:plain

最大I/Oを使うべきかどうかはClowdWatchあたりで監視してないとわからん気がする

 

暗号化

f:id:Messerarche:20200504211917p:plain

暗号化を有効にすると、保管されているデータの暗号化はともかく

転送中のデータ暗号化は証明書の準備など、設定がややこしくなる。

インターネット越しにEFSと通信する時とかに必要になってきそう。

同一VPC内のEC2との通信であれば不要かな。

Amazon Elastic File System(EFS)を使ううえでの勘所 - Qiita

 

 

f:id:Messerarche:20200504212957p:plain

デフォルトでいろんな制限しておいて、IDベースで権限を上書きして使う。

 これはこの辺が参考になった

[アップデート] Amazon EFSでIAM認証とアクセスポイントの設定が可能に | Developers.IO

試しに、読み取り専用アクセスを強制にチェック。

ポリシーの設定を押して

f:id:Messerarche:20200504235722p:plain

JSONの画面を出して、保存する。ここまでしないと反映されない。

 

 

 

アクセスポイント

f:id:Messerarche:20200504215159p:plain

アクセス権限付きのディレクトリ を作成するイメージ。

先ほどと同じ

[アップデート] Amazon EFSでIAM認証とアクセスポイントの設定が可能に | Developers.IO

が参考になる。見様見真似で2個ディレクトリ を作成

f:id:Messerarche:20200504220027p:plain

 

 

確認画面を経て、作成。

f:id:Messerarche:20200504220400p:plain

割とすぐできた

上の画像に見えているファイルシステムIDを使ってマウントすることになる。

 

セキュリティグループの確認

入ってるのはデフォルトのガバガバ設定だった。

f:id:Messerarche:20200504225759p:plain

なんか作る時は先にセキュリティグループを作らんとあかんかも。

NFSは2049のTCP

f:id:Messerarche:20200504230222p:plain

ルールを作って

 

ファイルシステムアクセスの管理から

f:id:Messerarche:20200504230406p:plain

 

新たにセキュリティグループを選択して保存

f:id:Messerarche:20200504230459p:plain

 

 

 

接続確認をしていく。

接続したいEC2に、Linux NFSv4 Clientのインストールが必要。

EFSマウントヘルパーというのがamazon-efs-utilsに含まれており、これを使うことが推奨されている

sudo yum –y install amazon-efs-utils

特に問題なくインストールできた。

 

さてマウント。

f:id:Messerarche:20200504225322p:plain

怒られた。

 

どうもこの指定したファイルシステムIDからドメイン名を生成して、

ドメイン名からマウント対象のEFSを探してくる挙動みたいなのだが

DNSの解決ができねーぞ、と。

【AWS】EC2からEFSをマウントする - MOテクノロジー

 

久々にVPCの画面を開いてDNS設定を確認

f:id:Messerarche:20200504230919p:plain

 

DNS解決の編集・・・すでに有効

f:id:Messerarche:20200504231003p:plain

 

DNSホスト名の編集

f:id:Messerarche:20200504231035p:plain

チェックついていなかったので、有効化

・・・で、DNSホスト名の編集って何?

VPC での DNS の使用 - Amazon Virtual Private Cloud

パブリック IP アドレスを持つインスタンスが、対応するパブリック DNS ホスト名を取得するかどうか示します。

この属性が true の場合、VPC 内のインスタンスDNS ホスト名を取得しますが、これは enableDnsSupport 属性も true に設定されている場合のみです。

今回のEFSはパブリックIPなんて持ってないはずなんだけど・・・。

パブリックDNSって関係なくない?

 

これで結果が変わる理由がよくわからないままコマンドが・・・通った。

f:id:Messerarche:20200505000644p:plain



念の為nslookup

f:id:Messerarche:20200504232642p:plain

ローカルIPだよなぁ。モヤモヤ

 

気を取り直して、アクセス制限を確認する。

f:id:Messerarche:20200505000847p:plain

想定通り。

 

EC2用のロールを作成

f:id:Messerarche:20200505001322p:plain

 

ロールの作成

f:id:Messerarche:20200505001439p:plain

EC2を選ぶ

 

今回必要なのはElasticFileSystemでClientでRead/Writeなので

f:id:Messerarche:20200505001716p:plain

これを選択。

タグに適当に名前をつけて、作成。

 

できた。

f:id:Messerarche:20200505002031p:plain



 

EC2の画面を出して、ロールのアタッチ

f:id:Messerarche:20200505002155p:plain



先ほど作ったロールを選択。

f:id:Messerarche:20200505002231p:plain

 

さて、これで本当にいけるんだろうか。

いったんEFSをアンマウントして、iamを指定してマウントする

f:id:Messerarche:20200505002631p:plain

f:id:Messerarche:20200505002544p:plain

 

ファイルを作ってみると・・・

f:id:Messerarche:20200505002749p:plain


いけた!

アクセスポイントも試してみる。

f:id:Messerarche:20200505003728p:plain

read-onlyのアクセスポイントにマウントしたら、書き込みが不可となった。

 

違うEC2を建てて、マウントしてみると今まで作ったファイルが見えた。

f:id:Messerarche:20200505005434p:plain

 

 

試し忘れたけど、EC2再起動するとマウント状態も解除されてしまうので

永続的にマウントするには追加設定が必要

Amazon EFS ファイルシステムを自動的にマウントする - Amazon Elastic File System

 

Linux系をメインで使うときの共有ストレージとしては、気軽にアタッチできて使いやすいかも。

でもSMB対応のストレージも欲しいなぁ

 

進捗

f:id:Messerarche:20200505005916p:plain