4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

APIGW & NLB & ECS fargate構築してみた発見メモ(コンソール版)

Posted at

Steps

  1. NLBの構築
  2. ECSのサービスの構築
  3. API Gatewayの構築
  4. API Gateway → NLBのつなぎこみ
  5. 動作確認

0. 下ごしらえ

プライベートサブネットとセキュリティグループはあらかじめ準備しておきます。
(私自身がVPCに疎いので、ここで 1. NATをIGWがルーティングされていないSubnetに配置 2. ECSのセキュリティグループのInboundのソースをセキュリテイグループに指定 というミスをしました)

1. NLBの構築

ポイント: 気が抜けてるとデフォルトのVPCでLB作成してしまいがち。VPC間違えるとECSとつなぎこむ時に作り直しで時間ロスします。

発見。ターゲットグループを構築するときは、IPアドレスをとBeRegisteredにしておける。

2. ECSのサービスの構築

こういうちょっとしたテストの時に便利なnginx。
注意点として、デプロイ先のSubnetがOutboundの通信を許可している(Dockerイメージを引っ張れる)必要がある。
(私はここでNat Gatewayをprivate subnetに置いていることに気がつくこともしばしば...)

ポイント:

  • 実はサブネットの指定は1つでもOK
  • NLB/ALBを採用する場合はサービスディスカバリはONにしなくてOK

ポイント: TaskがいつまでたってもPENDINGに見えるときは、Stoppedのタスクを開いて原因調査すべし。

  • よく目にするエラー: CannotPullContainerError: API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection"

ポイント: この時点でTargetGroupのヘルスチェック結果を確認すること。
よく目にするエラー: None of these Availability Zones contains a healthy target. Requests are being routed to all targets.
対応:

  • まずリクエストが到達しているか?(ECSのサービス起動時に指定したセキュリティグループを確認)
  • ECS側はサービスが起動しているか?(CloudWatchのログを確認する)
  • TargetGroupのヘルスチェックで指定されているポートはコンテナにマッピングされているか?サービスの利用しているポートはあっているか?

3. API Gatewayの構築

ポイント: VPCリンクを作成する。ログインしているユーザーに複数の権限が必要(VPCエンドポイントの作成更新削除・アクセス許可の変更)
体感で5分以上かかります。

ポイント:APIメソッドには統合タイプと接続タイプの2種類の概念がある。
しかし、コンソールだと本当に分かりづらい....

デプロイをすれば完成です!

参考資料

API Gateway のプライベート統合のNetwork Load Balancerを設定する

API Gateway プライベート統合で API をビルドする

4
5
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
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?