1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】APIコールで疎通できていてもECSタスクが自動起動されない理由

Posted at

概要

EC2 on ECSで構築したアプリについて、APIコール(エンドポイントへのコール)はできていたのに、デプロイ時や再起動時のECSタスク起動では失敗する、というケースがありました。

こちらの原因と解決方法を紹介します。

前提

・EC2 on ECSを利用。EC2はプライベートサブネットに配置
・サブネットはap-northeast-1aap-northeast-1cの二つのAZに配置
・AutoscalingGroupでは、上記どちらのサブネットも選択している状態
ap-northeast-1aではNAT Gatewayを介してインターネット接続ができる状態

原因

前提を見ると原因は察しがつきやすいと思いますが、今回の原因は、

・EC2インスタンスがap-northeast-1cで起動してしまうことがあったため

でした。

最初これに気づかず、ap-northeast-1aで起動したECSタスクでは疎通確認ができていたので、問題なしと勘違いしてしまいました。

ただし、デプロイ作業などでECSタスクを一度落とした際に、ap-northeast-1cにEC2が起動してしまうと、ap-northeast-1cではインターネット接続がされていないので、ECSエージェントが通信できない状態となっていたのです。これにより、ECSタスクが自動起動されなくなっていました。

「ECSタスクの自動起動にはECSエージェントがAWS ECSサービスと通信するためのインターネットアクセスが必要」という点が大事です。当然といえば当然なのですが、アプリがLB側から疎通していたので勘違いが起きていました。

解決方法

プライベートサブネットのap-northeast-1cのEC2インスタンスにもNATゲートウェイを介してインターネットに接続できる状態にしてあげればOKです。
(もしくは、AutoscalingGroupの対象をインターネット接続ができるap-northeast-1aのみにすること)

これにより、ECSタスクの自動起動が可能になりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?