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

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


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 をビルドする

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)