1. 概要
- Amazon EFS のルートディレクトリ(/)を、AWS Fargate (プラットフォームバージョン 1.4.0)から起動したタスクの /efs にマウントする。
- 動作確認のために、タスクから df コマンドの標準出力を、 /efs/df.txt へリダイレクトする。
- 確認用 EC2 から /efs/df.txt を表示する。
2. 構成図
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 のファイルシステムと、マウントターゲットを作成する
(4) 確認用EC2を作成して、EFS を EC2 にマウントする
- Amazon Linux を適当に作成
- EFS マウント設定
# 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 へリダイレクトする。
FROM alpine:latest
RUN mkdir /efs
CMD echo "df" && df > /efs/df.txt
# 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 タスク定義を作成する
-
タスクとコンテナの定義の設定
-
タスク定義名:適当に (test-efs-fargate)
-
タスク実行ロール
-
タスクサイズ
-
タスクメモリ (GB):0.5GB
-
ボリューム(コンテナの定義の前に設定を行う)
-
名前:適当に(test-efs)
-
ボリュームタイム:EFS
-
ファイルシステムID:fs-********
-
コンテナの追加
-
コンテナ名:適当に (test-efs-fargate)
-
イメージ:************.dkr.ecr.ap-northeast-1.amazonaws.com/test-repository:test-efs-fargate
↓ -
ストレージとログ(ここでタスクのマウントポイントを設定する)
(7) AWS Fargate (プラットフォームバージョン 1.4.0)で タスク を実行する
-
以上の設定でクラスターを作成する
-
タスクの実行
-
起動タイプ:FARGATE
-
プラットフォームのバージョン:1.4.0
-
クラスター:test-efs-fargate
-
クラスターVPC:構成図のVPC
-
サブネット:構成図のサブネット
5. 実行結果(動作確認)
- 確認用EC2から /mnt/df.txt を確認する
[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