Slide 1

Slide 1 text

Cloud on the BEACH 2025 2025-04-26 細見 大揮  ECS×EFSマウントで 実際にミスした小ネタ話 〜AWSにおけるトラブル・ハマった落とし穴共有大会〜

Slide 2

Slide 2 text

出身: 京都府 京都市 住んでいた場所: 東京都葛飾区 大分県別府市 沖縄移住 2025年1月〜 趣味: 筋トレ・プロ野球観戦(阪神) 沖縄でやってみたいこと エンジニア仲間・友人を作りたい ダイビング・キャンプ・釣り等の アウトドアに挑戦したい 自己紹介 / Daiki Hosomi 細見 大揮 エンジニア4年目 1社目: 事業会社, 2社目: クラウド系SIer 直近のPJ: Javaアプリケーションのメジャーバージ ョンアップ 担当領域: インフラ・バックエンド 好きなAWSサービス Amazon ECS 最近申請したプログラム: 2025 Japan All AWS Certifications Engineers (全冠達成!!)  2025 Japan AWS Jr. Champions @daikun205

Slide 3

Slide 3 text

とあるプロジェクトのバッチ構成 OSSのAirflowを利用 タスクの実行順や依存関係を管理で きる、ワークフローエンジン。 タスクの実行順序や監視、スケジュ ーリングを構成(DAG) Airflowからジョブを実行 ECSのスタンドアロンタスクが起動 する 各ジョブ間で共通のファイルを 扱いたい →EFSにマウントせよ!!

Slide 4

Slide 4 text

EFS Mount Target(接続ポイント)を作成 バッチのタスクはスタンドアロンタスクで、特定のA/Zでのみ実行される STG環境でなるべくコストを抑えたい/高可用性がそこまで必要ない →EFSは1つのAZにのみマウントターゲットを作成する「シングルAZ構成」 EFSのrootDirectoryを作成する EFSを操作可能なLinux環境(EC2)にアクセスし、マウント設定を行う sudo mount -t efs [ファイルシステムID] [マウントしたいディレクトリ] EFS内でコンテナから見えるディレクトリを作成 ex) /mnt/efs/fs1/### やったこと① EFSを作成する

Slide 5

Slide 5 text

やったこと② コンテナでボリュームをマウント バッチコンテナのマウント元ディレクト リを指定 EFSボリュームを定義 作成したEFSのファイルシステムIDを指定 EFS内のマウント先のディレクトリを指定 IAM認証・アクセスポイントは使わない構成 ECSタスク定義でEFSの設定を追加

Slide 6

Slide 6 text

いざバッチを実行して検証・・・・ ECSタスクの起動に失敗・・・ ログを確認してみると・・・ ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve "fs-########.efs.ap-northeast-1.amazonaws.com" - check that your file system ID is correct, and ensure that the VPC has an EFS mount target for this file system ID. →EFSのマウントターゲットがVPC内にない、もしくはDNS解決できない

Slide 7

Slide 7 text

原因は・・ マウントターゲットが存在しないAZで タスクを実行していた

Slide 8

Slide 8 text

学びと教訓 EFSのマウントターゲットを作成したAZと、タスクの起動AZを揃えること 他にも・・ mountするディレクトリの事前作成が必要 rootDirectory(例: /data)が存在しないとタスク起動時に失敗 対象VPC内にあるEC2、または一時的なECSタスクで操作する シングルAZはAZ障害時は完全にアクセス不能になる 高可用性が求められる本番環境ではECS/EFS共にマルチAZ構成にする サブネットの自動選択に注意 Airflow 等外部から起動する場合は意図しないAZでタスクが動く場合があるため、確認する

Slide 9

Slide 9 text

Thank You! ご清聴ありがとうございました