Help us understand the problem. What is going on with this article?

AWS BatchのジョブがRUNNABLEのまま進まない

More than 1 year has passed since last update.

こんにちはsekitakaです。
AWS BatchでLambdaで実行しきれない大きめのタスクを任せようと検討中です。

試しに簡単なジョブを作成してみたのですが、ステータスがRUNNABLEのまま進まなくてハマったので、調査方法と解決策を共有します。

調査

コンテナインスタンスのログを確認

エラーも何もでないのでコンテナインスタンスに接続して、何かヒントが無いか探りました。
コンテナインスタンスはVPC内に作成されるので、踏み台インスタンスを経由してSSH接続しました。

/var/log/ecs/ecs-agent.log*を確認すると以下のようなログが出力されていた。

2017-07-04T03:14:27Z [INFO] Starting Agent: Amazon ECS Agent - v1.14.1 (467c3d7)
2017-07-04T03:14:27Z [INFO] Loading configuration
2017-07-04T03:14:27Z [INFO] Checkpointing is enabled. Attempting to load state
2017-07-04T03:14:27Z [INFO] Loading state! module="statemanager"
2017-07-04T03:14:27Z [INFO] Event stream ContainerChange start listening...
2017-07-04T03:14:27Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20 1.21 1.22 1.23]
2017-07-04T03:14:27Z [INFO] Registering Instance with ECS
2017-07-04T03:14:47Z [ERROR] Could not register: RequestError: send request failed
caused by: Post https://ecs.us-east-1.amazonaws.com/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2017-07-04T03:14:47Z [ERROR] Error registering: RequestError: send request failed
caused by: Post https://ecs.us-east-1.amazonaws.com/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

どうやらhttps://ecs.us-east-1.amazonaws.comに接続できない模様。
試しにこのインスタンスでcurl https://ecs.us-east-1.amazonaws.comを実行すると、予想どおり接続できない。
というかECSを使ってAWS Batchが動いていたのですね。

VPC内の他のインスタンスと比較

VPC内の同じサブネットの他のインスタンスでどうなるか試してみました。
作成していた踏み台インスタンスでは curl https://ecs.us-east-1.amazonaws.com は成功します。

違いはElasticIPを設定しているか/いないかなので、試しにコンテナインスタンスにElasticIPを付与してみるとジョブが動いた!!

疑問

インターネットゲートウェイをアタッチされたVPC内のEC2インスタンスはインターネット接続できると思ってたけど間違い?
ここを読むと間違いっぽい。
サブネットのインスタンスもグローバルに一意なIPを持たないとインターネット接続できない。

グローバルに一意なIPを持つインスタンスを自動生成するには?

VPC -> サブネット -> Batchを所属させるサブネットを選択する -> サブネットのアクション -> パブリックIPの自動割当を有効にする

最終確認

パブリックIPの自動割当を有効にしたサブネットを選択しComputing Environmentを作成し、ジョブを登録したところスムーズにジョブがSUCCESSすることを確認

まとめ

AWS BatchというよりVPCの知識不足によってハマっていたようです。
フォーラムでも疑問が出ていたので、同じハマりする人多いような気がするので誰かの役に立てればいいな。

2017/07/12 追記

VPCのDNS解決も有効にしていないとインターネット接続できなかった。

runners
スポーツで世界を良くしたいエンジニアチーム。応援navi、.finisher、run&といった製品開発をしています!
https://www.wantedly.com/projects/167082
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした