同じVPCの2つのAZでLinuxのECS Fargateタスクを稼働させ、同じ共有ファイルを読み書きしたい。各AZに稼働するアプリがあり、一方のAZを失っても残るタスクから同じファイルを利用する。
EFS Regionalを保存先に選び、NFS対応アプリ、VPCルーティング、TCP 2049の通信許可、必要なファイル権限と再試行を準備する。Fargateの実行条件とタスク定義を含む接続構成を選びたい。
最も適切な構成はどれか。
EFS対応のLinux Fargate、RegionalのAZごとの経路、同じEFSを指定するタスク定義を揃える。
詳細解説
FargateでのEFS対応はLinuxプラットフォーム1.4.0以降である。タスク定義が同じでも対応していない実行条件を使えない。
環境変数だけではECSのEFS volumeをマウントしない。タスク定義の保存先とコンテナへのマウント設定が必要になる。
EFS対応プラットフォーム、各AZの経路、タスク定義からコンテナへの接続を揃えられる。同じRegionalファイルシステムを利用する。
パス名が同じでも別のファイルシステムのデータは共通にならない。One Zoneを別々に作るだけでは、同じファイルのRegional保存に置き換わらない。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
ECSのEFS対応プラットフォームとvolumes・efsVolumeConfiguration・mountPointsの公式設定を確認する。
参考にした公式資料
確認できる内容
同じEFS IDとsourceVolumeの対応、NFS経路、アクセス権限、残るAZのタスクを確認する手順を説明できる。
理解のポイント
- EFS Regional
- EFSマウントターゲット
- efsVolumeConfiguration
- mountPoints
- Fargate platform version
- TCP 2049
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
Fargateの対応条件とvolumeの接続
FargateのEFS対応はLinuxプラットフォーム1.4.0以降である。volumesのefsVolumeConfigurationに同じfileSystemIdを指定し、コンテナのmountPointsのsourceVolumeでそのvolume名を参照する。環境変数のEFS IDだけではマウントされず、別々のファイルシステムを同じパスへ置いてもデータは共有されない。
Regional保存と残るAZの利用条件
Regionalは複数AZへデータを冗長保存するが、利用するAZのマウントターゲットとNFS経路も準備する。クライアントの送信とターゲットの受信でTCP 2049を許可し、ファイル権限とアプリの再試行を確認する。残るAZに稼働するタスクが必要で、ファイルシステムを置くだけでサービスの配置や既存接続の無停止まで保証しない。
追加のアクセス設定には条件がある
EFSのIAM認可を有効にする場合はタスクIAMロールを使用し、transitEncryptionも有効にする。access pointを使う場合も転送時暗号化が必要で、rootDirectoryを省略または/にしてaccess point側のルートを使う。実行ロールだけでタスクのファイルアクセス権限を満たすとはみなさず、利用する設定に応じて確認する。