Amazon Elastic File System (Amazon EFS) ボリュームを AWS Fargate タスクにマウントすると、エラーが発生します。
簡単な説明
Amazon EFS は、さまざまなタスク間でファイルやデータを共有するための Fargate タスク用の永続ストレージソリューションを提供します。
以下の問題により、Amazon EFS ボリュームを Fargate タスクにマウントできない場合があります。
- Amazon EFS ファイルシステムが正しく設定されていません。
- Amazon Elastic Container Service (Amazon ECS) タスクの AWS Identity and Access Management (IAM) ロールには、必要な権限がありません。
- ネットワークと Amazon Virtual Private Cloud (Amazon VPC) の設定に関連する問題があります。
起動に失敗した Amazon Elastic Container Service (Amazon ECS) タスクのエラーをトラブルシューティングするには、AWSSupport-TroubleshootECSTaskFailedToStart ランブックを使用してください。次に、問題に関連するトラブルシューティングの手順を参照してください。
解決策
開始に失敗したタスクを検索する
重要:
- ECS クラスターリソースが配置されているのと同じ AWS リージョンで、AWSSupport-TroubleshootECSTaskFailedToStart ランブックを使用してください。
- ランブックを使用する際は、最後に失敗したタスク ID を使用する必要があります。失敗したタスクが Amazon ECS サービスの一部である場合は、サービス内で最後に失敗したタスクを使用してください。失敗したタスクは、オートメーションの実行中に ECS:DescribeTasks に表示される必要があります。デフォルトでは、停止した ECS タスクは、停止状態になってから 1 時間表示されます。最後に失敗したタスク ID を使用すると、オートメーション中にタスク状態のクリーンアップにより分析が中断するのを防ぐことができます。
ランブックを開始する方法については、「AWSSupport-TroubleshootECSTaskFailedToStart」を参照してください。オートメーションの出力に基づいて、次の手動のトラブルシューティング手順のいずれかを実行してください。
エラーメッセージに基づいてタスクをトラブルシューティングします
EFS ボリュームを Fargate タスクにマウントしようとすると、次のエラーのいずれかが表示されることがあります。
「ResourceInitializationError: EFS ボリュームをセットアップするための EFS ユーティリティコマンドの呼び出しに失敗しました:stderr: b'mount.nfs4: 接続がタイムアウトしました : unsuccessful EFS utils command execution; code: 32」
これらのエラーは、接続タイミングが原因で Fargate タスクが EFS ファイルシステムに接続できない場合に発生します。このエラーを解決するには、次のトラブルシューティング手順を試してください。
- Amazon EFS コンソールを開きます。
- ナビゲーションペインで、[File systems] (ファイルシステム) を選択します。
- 名前またはファイルシステム ID を選択して、確認するファイルシステムを選択します。
- [Network] (ネットワーク) を選択すると、既存のマウントターゲットのリストが表示されます。
- [Manage] (管理) を選択します。
マウントターゲットのセキュリティグループとセキュリティグループのインバウンドルールを表示できます。
セキュリティグループのインバウンドルールで、ポート 2049 で Fargate タスクセキュリティグループからのトラフィックが許可されていることを確認してください。ネットワークトラフィックがサブネットレベルで許可されていることを確認します。そのためには、ネットワークアクセス制御リストがファイルシステムとタスク間のトラフィックを許可していることを確認します。トラフィックが許可されていない場合は、それに応じてルールを変更してください。詳細については、「Amazon Virtual Private Cloud のセキュリティ」を参照してください。
「ResourceInitializationError: EFS ボリュームをセットアップするための EFS ユーティリティコマンドの呼び出しに失敗しました:stderr: mount.nfs4: ピアによる接続リセット : unsuccessful EFS utils command execution; code: 32」
このエラーは、次のいずれかの理由により発生します。
- EFS ファイルシステムをファイルシステムを作成した直後にマウントした。
- マウントターゲットのセキュリティグループは、ポート 2049 の Fargate タスクからのインバウンドトラフィックを許可しません。
- AWS App Mesh を使用していますが、プロキシルールによりポート 2049 へのアウトバウンドがブロックされています。
このエラーをトラブルシューティングするには、次の手順に従ってください。
- マウントターゲットを作成してから DNS レコードが AWS リージョンに完全に伝播するまでに最大 90 秒かかる場合があります。AWS CloudFormation テンプレートなどを使用してプログラムでファイルシステムを作成およびマウントする場合は、待機条件を実装してください。
- EFS ファイルシステムのマウントターゲットにアタッチされているインバウンドセキュリティグループルールが、Fargate タスクからのポート 2049 のトラフィックを許可していることを確認します。
- App Mesh を使用している場合は、TaskDefinition で指定されているプロキシ構成に EgressIgnoredPorts として 2049 が含まれていることを確認してください。
「ResourceInitializationError: EFS ボリュームをセットアップするための EFS ユーティリティコマンドの呼び出しに失敗しました:stderr: 「fs-xxxxxx.efs.us-west-1.amazonaws.com」を解決できませんでした。ファイルシステム ID が正しいことを確認してください。」
このエラーは、次のいずれかの理由により発生します。
- EFS ファイルシステムのマウントターゲットは、Fargate タスクが起動されるアベイラビリティーゾーンでは作成されていないか、使用できません。
- VPC にはカスタム DNS サーバーを使用しています。
- VPC DNS ホスト名はオフになっています。DNS ホスト名はデフォルトでオフになっています。
このエラーを解決するには、以下を試してください。
「ResourceInitializationError: EFS ボリュームをセットアップするための EFS ユーティリティコマンドの呼び出しに失敗しました: stderr: b'mount.nfs4:127.0.0.1:/' のマウント中にサーバーによってアクセスが拒否されました : EFS utils コマンドの実行に失敗しました。コード: 32」
このエラーは、次のポリシーと権限によってファイルシステムへのアクセスが拒否された場合に表示されます。
- ファイルシステムポリシー
- タスクロールポリシー
- POSIX ファイルシステムレベルの権限
EFS ファイルシステムへのアクセスは、次のリソースで定義されている権限によって制御される場合があります。
- ネットワークアクセスコントロールリスト
- セキュリティグループ
- EFS ファイルシステムポリシー
- ECS タスクロール IAM ポリシー
- POSIX ファイル
詳細については、「Amazon ECS および AWS Fargate で Amazon EFS を使用するための開発者ガイド — パート 2」を参照してください。
このエラーをトラブルシューティングするには、ファイルシステムポリシーまたは ECS タスクロールの IAM ポリシーがファイルシステムへのアクセスを拒否していないかどうかを確認します。これらのポリシーによって権限が拒否される場合は、ファイルシステムにアクセスする権限を付与するようにポリシーを変更してください。ファイルシステムポリシーが存在しない場合、作成時にファイルシステムへのアクセスがデフォルトですべてのプリンシパルに許可されます。
関連情報
Amazon EFS ファイルシステムの作成
マウントターゲットとセキュリティグループの作成と管理
Fargate で実行されている Amazon ECS コンテナまたはタスクに Amazon EFS ファイルシステムをマウントする方法を教えてください。
ファイルシステムの作成直後にファイルシステムのマウントが失敗する