2016-04-09 50 views
39

dockerコンテナイメージをAWSに展開しようとしましたが、EC2インスタンスが作成されていません。私は、次のエラー受けてる理由として説明を探してインターネット洗い上げています。ここタスク実行時のAWS ECSエラー:クラスタにコンテナインスタンスが見つかりません

"A client error (InvalidParameterException) occurred when calling the RunTask operation: No Container Instances were found in your cluster."

を私の手順は次のとおりです。

1. UbuntuのFROM私のアマゾンECSにドッキングウィンドウの画像をプッシュレポECSタスク定義登録

2:

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インスタンスを持つようにクラスタを設定するにはどのような種類のコンテナインスタンスを使用する必要がありますか? 私は、このプロセス全体がEC2インスタンスを作成することだと思いました!!

答えて

65

私は数時間の調査の後にこれを理解しました。アマゾン、あなたが聞いている場合は、クラスタの作成またはクラスタにインスタンスを追加するとき、あなたは、管理コンソールでこのどこかを明記してください:

1.あなたへ:ここ

"Before you can add ECS instances to a cluster you must first go to the EC2 Management Console and create ecs-optimized instances with an IAM role that has the AmazonEC2ContainerServiceforEC2Role policy attached"

はrigmaroleですEC2 Dashboardと入力し、Launch Instanceボタンをクリックします。

2. Community AMIsの下にあるecs-optimizedを検索し、プロジェクトのニーズに最も適したものを選択します。いずれもうまくいく。次へをクリックします。

3.インスタンスの詳細を設定するには、create new IAM role linkをクリックし、ecsInstanceRoleという新しい役割を作成します。

4. AmazonEC2ContainerServiceforEC2Roleポリシーをその役割に割り当てます。

5.次に、ECSインスタンスの設定を完了します。
注: Webサーバーを作成するあなたは、インスタンスが初期化されるときに、数分後にポート80

へのアクセスを許可するsecurityGroupを作成することになるでしょうし、あなたはECSのインスタンス]タブをリフレッシュすることができます実行している場合インスタンスを追加しようとしています。所定の領域に指定された提案されたAMIを選択

+4

指定された地域に指定されている推奨されたamiを選択すると、私の問題が解決しました。 amiを確認するには、このURLをチェックしてください。http://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html – user3716835

+1

AmazonEC2ContainerServiceforEC2Roleが表示されない場合は、最後の投稿以降に変更がありますか? – BlueDolphin

+0

@BlueDolphin私はIAMで新しい役割を作成したときにそのポリシーを見つけることができました。 – cyrf

10

その他の提案を確認

1)

は私の問題を解決しました。 は、AMIを見つけるために - defaaultすべてのEC2インスタンスがクラスタをデフォルトに追加されたことにより、このURL http://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html

2) を確認してください。だからクラスターの名前も重要です。

を参照してくださいここでのポイント10 https://forums.aws.amazon.com/thread.jspa?threadID=189513

15

現在、このスレッドで http://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html

詳しい情報入手でき、それが登録しますので、自動的に正しいAMIと正しい名前でインスタンスを作成することができますアマゾンAWSのWebインターフェイス正しいクラスタに移動します。

すべてのインスタンスがAmazonによって正しい設定で作成されていても、インスタンスは登録されません。 Amazon AWS forums私は手がかりを見つけました。クラスタにインターネットアクセスが必要であり、プライベートVPCにインターネットゲートウェイがない場合、クラスタは接続できません。

VPCダッシュボードで修正

新しいインターネットゲートウェイを作成する必要がありますし、クラスタで使用されるVPCに接続します。一度あなたが更新(または作成する)必要があります添付 VPCのルートテーブルとIGW-24b16740はあなたのたて作成し、インターネットゲートウェイの名前です

0.0.0.0/0 igw-24b16740 

として最後の行を追加します。

+0

あなたの答えは "あなたのクラスタではコンテナインスタンスが見つかりませんでした"という問題を解決しました。どうもありがとうございました! –

+0

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html * [EC2-VPC]サブネットのルートテーブルを確認します。 VPC外のすべてのトラフィックをVPCのインターネットゲートウェイに送信するルートが必要です。* –

+0

手がかりありがとう!ロードバランサへのトラフィック以外のすべての送信トラフィックをブロックしたインスタンスにセキュリティグループを割り当てました。私はすべてのアウトバウンドトラフィックを許可するようにこれを切り替えましたが、ロードバランサからの着信トラフィックのみを制限して、そのインスタンスがEC2クラスタに現れました。 – Mikepote

関連する問題