AWS
EFS
AmazonElasticFileSystem

Amazon EFS を使ってみた

はじめに

こんにちは

最近Googleのローカルガイドに手を出してしまった、streampack チームのまるちゃんです。

ローカルガイドと言うのは、Google Mapsで地球一周旅行した事がある方なら一度は触れたことがあるサービスです。

ユーザーが投稿した写真や動画など360度カメラで撮影された素晴らしいアレです。

I92RRrM.png

今回の内容について

個人的に Amazon Elastic File System(EFS) について使用してみて良かった点やメリットを紹介していこうと思います。

EFS自体は、2015年4月からありました・・・が、今までは東京リージョンにはありませんでした。
2018年の7月に東京リージョンに出たのをきっかけに試しに触れてみました。

アジアパシフィック (東京) リージョンで Amazon Elastic File System (Amazon EFS) が利用可能に

Amazon Elastic File System とは

cap2018_9_2_23_8_6_543.png

Amazon Elastic File System(EFS) とは、AWS上で使用出来る高速かつ大容量の共有ファイルストレージです。

まずは料金体系を

海外リージョンと比べると少し高いかもしれませんが、 東京リージョンバージニア北部リージョン の料金表を載せておきます。

リージョン ストレージ(GB-月) プロビジョンドスループット(MB/秒-月) EFS File Sync (EFSへのGBあたり)
米国東部 (バージニア北部) 0.30 USD 6.00 USD 0.01 USD
アジアパシフィック (東京) 0.36 USD 7.20 USD 0.01 USD

詳しい料金表はこちらを Amazon EFS Pricing

メリットとしては

  • マルチAZの複数インスタンスから同時にアクセス可能
  • ディスク容量制限がなく、使用した分だけスケーラブルに拡張
  • VPCからの使用のみに限られるため、インターネット上に公開しなくても良い
  • 書き始めから転送が可能

他のAWSサービスと比べてみると

S3 EBS EFS
接続数 1:n 1:1 1:n
耐久度 99.999999999% 99.999% 高い耐久性
料金 使用量課金 事前に確保領域分 使用量課金
主なアクセス方法 ブラウザー・API・CLI マウント・ローカル接続 マウント
レイテンシー 低い かなり低い 低い
CFとの連携 X X
OSからのマウント X

EFS 作成方法

  • デフォルトのVPCでも使用可能

ファイルシステム

ステップ 1: ファイルシステムアクセスの設定

  1. ファイルシステムアクセスの設定
    • ターゲットにしたい 【VPC】 を選択
  2. マウントターゲットの作成
    • セキュリティグループ】 の選択

cap2018_9_2_22_10_2_685.png

ステップ 2: オプション設定の構成

項目の指定については、今回は触れません。

ステップ 3: 確認と作成

問題が無ければ 【ファイルシステムの作成】 を選択して作成

cap2018_9_2_22_23_58_614.png

完成

  • 黄色のラインで隠している所はインスタンスのセットアップの際に使用
    • ファイルシステムID : fs-1234567
    • DNS名 : fs-1234567.efs.ap-northeast-1.amazonaws.com

cap2018_9_2_22_29_2_748.png


インスタンスのセットアップ

今回は、Amazon Linuxのセットアップ方法のみになります。(Amazon Linux2でも可)
インスタンスは最低でも2台あると、確認がしやすいかと思います。

EC2インスタンスにて(AmazonLinux)

1. EFSマウントヘルパーのインストール

# yum install -y amazon-efs-utils

2. ターゲットにしたいディレクトリを作成

# mkdir /mnt/efs

3. 各種マウントの仕方

  • EFSマウントヘルパーの使用
# mount -t efs fs-1234567:/ /mnt/efs
  • 暗号化の場合
# mount -t efs -o tls fs-1234567:/ /mnt/efs
  • NFSクライアントの使用の場合
# mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-1234567.efs.ap-northeast-1.amazonaws.com:/ /mnt/efs

4. 自動で接続

お好みのエディターで下記の内容を追加

# vim /etc/fstab

fs-1234567:/   /mnt/efs       efs     defaults,_netdev        0       0
  • オプションなどは、「Amazon EFS ファイルシステムの自動マウント」 を参考にしています。
    • defaults オプションについて
      • rw,suid,dev,exec,auto,nouser,async
    • _netdev オプションについて
      • ネットワークアクセスが必要なデバイス上にあるファイルシステム

最後に

今回の投稿には記載はしていないですが、EFSを使って約4時間ほど生配信をしていたのですがSegmentFileやPlayListが一切途切れることなく、別のインスタンス2台に対して高速転送が出来ていました。

配信構成としては

映像=>EC2(エンコーダ->EFS)=>EC2x2(EFS->Webサーバ)=>ELB=>PC/スマホ

個人的に一番驚いている点としては、「S3の場合は、書き終わり後に転送」に対して、「EFSの場合は書き始めから転送」をしているのが今後もっと需要が増えると思いました。

以下のカクカクGIF動画は実際に配信した際の映像になります。

Image from Gyazo
こちらにMP4の動画があります

使用した動画は、私が撮影した動画になります。(ご自由にお使いください。)
https://www.youtube.com/watch?v=LzZmQDoYa7Q

次回予定

次回は、前回投稿した「簡単にできる!Live配信サーバ構築」と今回の「EFS」を使用してドローン配信をしてみようと思います。