スキップしてコンテンツを表示

EFS ファイルシステムの DNS 名に問題があり、ECS タスクを開始できない場合のトラブルシューティング方法を教えてください。

所要時間2分
0

Amazon Elastic Container Service (Amazon ECS) タスクが起動しないため、トラブルシューティングしたいです。Amazon Elastic File System (Amazon EFS) ファイルシステム の DNS 名に問題があり、タスクを開始できません。

簡単な説明

ECS タスク定義で EFS ファイルシステムとコンテナマウントポイントを参照する際、ECS はコンテナにファイルシステムをマウントします。EFS ボリュームのマウントで ECS タスク定義を使用して ECS タスクを実行すると、タスクは失敗し、次のエラーが発生します。

"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve "fs-<id>.efs.<region>.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. See https://docs.aws.amazon.com/console/efs/mount-dns-name for more detail. Attempting to lookup mount target ip address using botocore. Failed to import necessary dependency botocore, please install botocore first."

このエラーは、次の原因で発生します。

  • AmazonProvidedDNS ではなく、仮想プライベートクラウド (VPC) のカスタムドメイン名とサーバーを使用している場合。
  • VPC DNS のホスト名が無効の場合。
  • EFS にマウントターゲットがないか、ターゲットが ECS タスクと同じアベイラビリティーゾーンに配置されていない場合。

DNS 名で EFS ファイルシステムが解決されない場合、ECS は efs-util を使用して botocore をインストールし、マウントターゲットの IP アドレスを取得します。botocore は ECS 最適化 AMI にデフォルトではインストールされていないため、タスクは失敗します。

解決策

VPC にカスタムドメイン名とサーバーがある場合

Amazon EC2 で実行するタスク

注: これらの手順は、Amazon EC2 インスタンスにのみ適用されます。

1.SSH を使用してコンテナインスタンスに接続します。botocore をインストールするには、次のコマンドを実行します。

 sudo pip3 install botocore --upgrade

インスタンスの起動時に、コンテナインスタンスの Auto Scaling グループで構成する UserData に botocore を含め、インストールします。

2.コンテナインスタンスの AWS Identity and Access Management (IAM) ロールに次の権限を追加します。

 elasticfilesystem:DescribeMountTargets
 ec2:DescribeAvailabilityZones

Fargate で実行するタスク

カスタムドメインネームサーバーが AWS リソースを解決できるようにするには、条件付き DNS 転送を構成します。

注: AWS Fargate インスタンスでは、botocore をインストールするためにインスタンスにアクセスすることはできません。DNS 名を解決する必要があります。

VPC DNS でホスト名解決が無効の場合

DNS 属性を確認するには、「DNS 属性」の手順を実行します。DNS でホスト名解決が無効の場合は有効化し、ECS タスクが実行されているかどうかを確認します。

EFS にマウントターゲットがないか、ターゲットが ECS タスクと同じアベイラビリティーゾーンに配置されていない場合

EFS ファイルシステムにはマウントターゲットが存在し、ターゲットは ECS タスクと同じアベイラビリティーゾーンに配置する必要があります。詳細については、「マウントターゲットとセキュリティグループの作成と管理」を参照してください。

関連情報

DNS 名を解決できない場合に、botocore を使用してマウントターゲットの IP アドレスを取得する (GitHub のウェブサイト)

AWS公式更新しました 3年前