Help us understand the problem. What is going on with this article?

Amazon EFS を AWS Fargate (のタスク)にマウントする最低限の設定

1. 概要

  • Amazon EFS のルートディレクトリ(/)を、AWS Fargate (プラットフォームバージョン 1.4.0)から起動したタスクの /efs にマウントする。
  • 動作確認のために、タスクから df コマンドの標準出力を、 /efs/df.txt へリダイレクトする。
  • 確認用 EC2 から /efs/df.txt を表示する。

2. 構成図

20200612-18.png

3. 設定手順概要

(1) タスクと確認用EC2用のセキュリティグループ(Security Group A)を作成する
(2) EFS用のセキュリティグループ(Security Group B)を作成する
(3) EFS のファイルシステムと、マウントターゲットを作成する
(4) 確認用EC2を作成して、EFS を EC2 にマウントする
(5) Docker イメージを作成して、ECR に PUSH する
(6) Amazon ECS タスク定義を作成する
(7) AWS Fargate (プラットフォームバージョン 1.4.0)で タスク を実行する

4. 設定具体例

(1) タスクと確認用EC2用のセキュリティグループ(Security Group A)を作成する
  • 作業用PCからのSSH接続を許可する。
(2) EFS用のセキュリティグループ(Security Group B)を作成する
  • インバウンド設定で、Security Group A からの 2049 (NFS) 接続を許可する。
(3) EFS のファイルシステムと、マウントターゲットを作成する
  • 設定例(注意点は特に無い) 20200612.png
(4) 確認用EC2を作成して、EFS を EC2 にマウントする
  • Amazon Linux を適当に作成
  • EFS マウント設定
Bash
# yum install amazon-efs-utils
# mount -t efs fs-******** /mnt
# df
Filesystem                                            1K-blocks    Used        Available Use% Mounted on
devtmpfs                                                 480444      72           480372   1% /dev
tmpfs                                                    491128       0           491128   0% /dev/shm
/dev/nvme0n1p1                                          8189348 1174932          6914168  15% /
fs-********.efs.ap-northeast-1.amazonaws.com:/ 9007199254739968       0 9007199254739968   0% /mnt
(5) Docker イメージを作成して、ECR に PUSH する
  • Dockerfile
    • イメージは何でもOK(のはず)。とりあえず、alpine:latest と amazonlinux:2 は動作確認済み。
    • マウントポイント /efs を作成する
    • echo "df" は、動作確認のために実行ログを CloudWatch ログへ出力するため。
    • df コマンドの標準出力を、 /efs/df.txt へリダイレクトする。
Dockerfile
FROM alpine:latest
RUN mkdir /efs
CMD echo "df" && df > /efs/df.txt
Bash
# docker build -t test-repository:test-efs-fargate .
# docker tag test-repository:test-efs-fargate ************.dkr.ecr.ap-northeast-1.amazonaws.com/test-repository:test-efs-fargate
# aws ecr get-login --no-include-email | sh
# docker push ************.dkr.ecr.ap-northeast-1.amazonaws.com/test-repository:test-efs-fargate
(6) Amazon ECS タスク定義を作成する
  • 起動タイプ「FARGATE」を選択
    20200612-1.png

  • タスクとコンテナの定義の設定

    • タスク定義名:適当に (test-efs-fargate)
    • タスクロール:指定しない 20200612-7.png
  • タスク実行ロール

    • デフォルト (ecsTaskExecutionRole 20200612-8.png
  • タスクサイズ

    • タスクメモリ (GB):0.5GB
    • タスク CPU (vCPU):0.25 vCPU 20200612-9.png
  • ボリューム(コンテナの定義の前に設定を行う)

    • 名前:適当に(test-efs)
    • ボリュームタイム:EFS
    • ファイルシステムID:fs-********
    • ルートディレクトリ:/ 20200612-5.png

      20200612-6.png
  • コンテナの追加

    • コンテナ名:適当に (test-efs-fargate)
    • イメージ:************.dkr.ecr.ap-northeast-1.amazonaws.com/test-repository:test-efs-fargate 20200612-4.png

    • ストレージとログ(ここでタスクのマウントポイントを設定する
      • マウントポイント ソースボリューム:test-efs を選択
      • コンテナパス:/efs 20200612-10.png

         * 以上の設定でタスク定義を作成する
(7) AWS Fargate (プラットフォームバージョン 1.4.0)で タスク を実行する
  • クラスターの作成
    20200612-12.png

    • クラスターテンプレート:AWS Fargate を使用 20200612-13.png

    • クラスター名:適当に(test-efs-fargate) 20200612-14.png

    • 以上の設定でクラスターを作成する
  • タスクの実行

    • タスク定義「test-efs-fargate」を選択して、アクションから「タスクの実行」を選択する 20200612-11.png

    • 起動タイプ:FARGATE
    • プラットフォームのバージョン:1.4.0
    • クラスター:test-efs-fargate
    • クラスターVPC:構成図のVPC
    • サブネット:構成図のサブネット
    • セキュリティグループ:Security Group A
      20200612-15.png
  • タスク実行ステータス
    20200612-16.png

  • CloudWatch ログで実行結果を確認
    20200612-17.png

5. 実行結果(動作確認)

  • 確認用EC2から /mnt/df.txt を確認する
BASH
[root@ip-10-1-0-121 ~]# cat /mnt/df.txt
Filesystem           1K-blocks      Used Available Use% Mounted on
overlay               25671908   5165020  19179784  21% /
tmpfs                    65536         0     65536   0% /dev
shm                    2018796         0   2018796   0% /dev/shm
tmpfs                  2018796         0   2018796   0% /sys/fs/cgroup
fs-d14344f0.efs.ap-northeast-1.amazonaws.com:/
                     9007199254739968         0 9007199254739968   0% /efs
/dev/xvdcz            25671908   5165020  19179784  21% /etc/hosts
/dev/xvdcz            25671908   5165020  19179784  21% /etc/resolv.conf
/dev/xvdcz            25671908   5165020  19179784  21% /etc/hostname
tmpfs                  2018796         0   2018796   0% /proc/acpi
tmpfs                    65536         0     65536   0% /proc/kcore
tmpfs                    65536         0     65536   0% /proc/keys
tmpfs                    65536         0     65536   0% /proc/latency_stats
tmpfs                    65536         0     65536   0% /proc/timer_list
tmpfs                    65536         0     65536   0% /proc/sched_debug
tmpfs                  2018796         0   2018796   0% /sys/firmware
tmpfs                  2018796         0   2018796   0% /proc/scsi


EFSファイルシステムに df.txt ファイルが作成されていることを確認。
EFS ファイルシステムが タスクの /efs にマウントされている(されていた)ことを確認
fs-d14344f0.efs.ap-northeast-1.amazonaws.com:/
9007199254739968 0 9007199254739968 0% /efs

tonishy
寒がりインフラエンジニア(今はAWSがメイン) 最近は、WACK の EMPiRE にどハマリ中
https://www.wantedly.com/id/tonishy
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away