1. ホーム
  2. amazon-web-services

[解決済み] タスク実行時にAWS ECSエラーが発生しました。クラスタにコンテナインスタンスが見つかりませんでした。

2022-02-18 22:52:13

質問内容

をデプロイしようとしています。 docker コンテナイメージを AWS を使って ECS が、EC2インスタンスが作成されない。なぜ、次のようなエラーが発生するのか、インターネットを検索してみました。

RunTask操作の呼び出し時にクライアントエラー(InvalidParameterException)が発生しました。クラスタにコンテナインスタンスが見つかりませんでした。

以下は私の手順です。

1. UbuntuからAmazon ECSのリポジトリにDockerイメージをPushしました。

2. ECS Task Definitionを登録。

aws ecs register-task-definition --cli-input-json file://path/to/my-task.json 

3. タスクを実行した。

aws ecs run-task --task-definition my-task

それでも、失敗する。

これが私のタスクです。

{
  "family": "my-task",
  "containerDefinitions": [
    {
        "environment": [],
        "name": "my-container",
        "image": "my-namespace/my-image",
        "cpu": 10,
        "memory": 500,
        "portMappings": [
            {
                "containerPort": 8080,
                "hostPort": 80
            }
        ],
        "entryPoint": [
            "java",
            "-jar",
            "my-jar.jar"
        ],
        "essential": true
    }
  ]
}

また、マネージメントコンソールでクラスタとサービスを設定しようとしましたが、同じエラーが表示されます。 また、どのようなコンテナインスタンスを使用する必要があるのでしょうか? そもそもこの作業ってEC2インスタンスを作ることじゃなかったっけ!?

解決方法は?

さらに数時間調査してわかりました。Amazonさん、もし聞いていたら、クラスタを作成するとき、あるいはクラスタにインスタンスを追加するときに、マネジメントコンソールのどこかにこのことを記述しておいてください。

ECSインスタンスをクラスターに追加する前に、まずEC2マネジメントコンソールで ecs-optimized を持つIAMロールを持つインスタンスです。 AmazonEC2ContainerServiceforEC2Role ポリシーが添付されています。

以下、リグマールです。

1. あなたの EC2ダッシュボード をクリックします。 Launch Instance ボタンをクリックします。

2. 下 Community AMIs を検索してください。 ecs-optimized を選択し、プロジェクトのニーズに最も適したものを選択してください。どれでもかまいません。次へ」をクリックします。

3. インスタンスの詳細の設定]が表示されたら、その中の create new IAM role link という新しいロールを作成します。 ecsInstanceRole .

4. を貼り付けます。 AmazonEC2ContainerServiceforEC2Role ポリシーをそのロールに適用します。

5. そして、ECSインスタンスの設定を完了します。
注意事項 Webサーバーを作成する場合は、80番ポートへのアクセスを許可するsecurityGroupを作成することをお勧めします。

数分後、インスタンスが初期化されて実行されると、インスタンスを追加しようとしているECSインスタンスタブをリフレッシュすることができます。