AWSをいじり倒す(6.EFS)
EFSを使ってみる。
以前、複数のWindowsサーバをEC2で立ち上げて、
ファイル共有したいなぁと思って調べた時に出てきたキーワードだけど
EFSはWIndows対応してなくて使えなかった。
blackbeltみてても結構大きくWIndows非対応と書いてあるので、今後も対応することはないのだろう・・・。
(ちなみにその時は多めにEBSを積んだEC2をストレージ用として建て、別EC2からネットワークドライブとしてマウントした。)
調べてみると、気合でWindowsから使う方法もあるにはあるみたいだが、
今回はLinuxサーバを2つたてて、それぞれにEFSをマウントし、ファイル共有を試す
これが参考になりそう
サービスからEFSを選択した最初の画面
ネットワーク設定
アクセスしたいEC2の所属するVPCを指定する。
マウントターゲットの設定
セキュリティグループはデフォルトで何か入っているが、今までの経験からするとうまく機能しないと思われるので、要確認。
タグの設定
なんでか説明が詳しくて、Nameがデフォルトで入っている
ライフサイクル管理
EFSにはスタンダードと定頻度アクセスという2種類のストレージがある
EFS ストレージクラス - Amazon Elastic File System
ただ、定頻度を最初から指定できるわけではなく、このライフサイクル管理によって指定した期間アクセスがないと自動で移動されるような使い方になる
選択肢はこんな感じ。
長期保存となるものはなるべくS3に保存すべきなんだろうけど、
使うと思ってたけど実は使わない、みたいなものがあるとしたら
有効にしといて損はない機能かな。
スループットモードの選択
バーストは、普段貯金しておいて突発的な支出に備えるモードであるが
貯金で買えない量のトラフィックが必要ならプロビジョニングモード。
この辺はblackbeltP66あたり参照
パフォーマンスモード
最大I/Oを使うべきかどうかはClowdWatchあたりで監視してないとわからん気がする
暗号化
暗号化を有効にすると、保管されているデータの暗号化はともかく
転送中のデータ暗号化は証明書の準備など、設定がややこしくなる。
インターネット越しにEFSと通信する時とかに必要になってきそう。
同一VPC内のEC2との通信であれば不要かな。
Amazon Elastic File System(EFS)を使ううえでの勘所 - Qiita
デフォルトでいろんな制限しておいて、IDベースで権限を上書きして使う。
これはこの辺が参考になった
[アップデート] Amazon EFSでIAM認証とアクセスポイントの設定が可能に | Developers.IO
試しに、読み取り専用アクセスを強制にチェック。
ポリシーの設定を押して
JSONの画面を出して、保存する。ここまでしないと反映されない。
アクセスポイント
アクセス権限付きのディレクトリ を作成するイメージ。
先ほどと同じ
[アップデート] Amazon EFSでIAM認証とアクセスポイントの設定が可能に | Developers.IO
が参考になる。見様見真似で2個ディレクトリ を作成
確認画面を経て、作成。
割とすぐできた
上の画像に見えているファイルシステムIDを使ってマウントすることになる。
セキュリティグループの確認
入ってるのはデフォルトのガバガバ設定だった。
なんか作る時は先にセキュリティグループを作らんとあかんかも。
ルールを作って
ファイルシステムアクセスの管理から
新たにセキュリティグループを選択して保存
接続確認をしていく。
接続したいEC2に、Linux NFSv4 Clientのインストールが必要。
EFSマウントヘルパーというのがamazon-efs-utilsに含まれており、これを使うことが推奨されている
特に問題なくインストールできた。
さてマウント。
怒られた。
どうもこの指定したファイルシステムIDからドメイン名を生成して、
ドメイン名からマウント対象のEFSを探してくる挙動みたいなのだが
DNSの解決ができねーぞ、と。
【AWS】EC2からEFSをマウントする - MOテクノロジー
DNS解決の編集・・・すでに有効
DNSホスト名の編集
チェックついていなかったので、有効化
・・・で、DNSホスト名の編集って何?
VPC での DNS の使用 - Amazon Virtual Private Cloud
パブリック IP アドレスを持つインスタンスが、対応するパブリック DNS ホスト名を取得するかどうか示します。
この属性が
true
の場合、VPC 内のインスタンスは DNS ホスト名を取得しますが、これはenableDnsSupport
属性もtrue
に設定されている場合のみです。
今回のEFSはパブリックIPなんて持ってないはずなんだけど・・・。
パブリックDNSって関係なくない?
これで結果が変わる理由がよくわからないままコマンドが・・・通った。
念の為nslookup
ローカルIPだよなぁ。モヤモヤ
気を取り直して、アクセス制限を確認する。
想定通り。
EC2用のロールを作成
ロールの作成
EC2を選ぶ
今回必要なのはElasticFileSystemでClientでRead/Writeなので
これを選択。
タグに適当に名前をつけて、作成。
できた。
EC2の画面を出して、ロールのアタッチ
先ほど作ったロールを選択。
さて、これで本当にいけるんだろうか。
いったんEFSをアンマウントして、iamを指定してマウントする
ファイルを作ってみると・・・
いけた!
アクセスポイントも試してみる。
read-onlyのアクセスポイントにマウントしたら、書き込みが不可となった。
違うEC2を建てて、マウントしてみると今まで作ったファイルが見えた。
試し忘れたけど、EC2再起動するとマウント状態も解除されてしまうので
永続的にマウントするには追加設定が必要
Amazon EFS ファイルシステムを自動的にマウントする - Amazon Elastic File System
Linux系をメインで使うときの共有ストレージとしては、気軽にアタッチできて使いやすいかも。
でもSMB対応のストレージも欲しいなぁ
進捗