AWSでAPI Gatewayとロードバランサーを組み合わせて使う
[アクセス元]---[API Gateway]---[ロードバランサー]---[EC2のインスタンス]
を想定して接続したい。
試した方法はEC2のインスタンスにセキュリティグループを負わせる。
以下、ロードバランサーをLBと記す。
- EC2のインスタンス
- 普通に作成する。
-
- セキュリティグループ
- LBからアクセスできるものを割り当てる。
- ターゲットグループ
- クラシックなLBはWebサーバーなどを直接的なターゲットとするが、AWSの流儀はEC2のインスタンスを束ねるターゲットグループを設けて、LBのリスナーの転送先としてターゲットグループを指定する。
- 想定は
[LB]---[EC2のインスタンス]
だが、この流儀だと[LB]---[ターゲットグループ]---[EC2のインスタンス]
という感じで連携する。
-
- ターゲットの種類
インスタンス
を選択する。
- インスタンスの登録
- "入れ物"となるターゲットグループをとにかく作り、その後にメニューからインスタンスを登録・解除する設定へ進む。
- LB
- 後に出る
VPCリンク
のためにNetwork Load Balancer
を作成する。
-
- LBの設定
-
- スキーム
-
- ターゲットへルーティングする方法を指定する
-
ルーティングする方法であり、LBのアクセス元でないことに気をつける。
- インターネット向け
- インターネットを経由する。
- 内部
- プライベートIPアドレスを使う。
- アベイラビリティーゾーン
- 仕様で2つ以上アベイラビリティーゾーンを選択する必要がある。
- ターゲットが1つだけでもその1つともう1つを適当に選択すればよい。
- API Gateway
-
- VPCリンク
- AWSの説明に
VPC内HTTP(S)リソースへのアクセスを一般のインターネットに直接露出しないように提供します。
とあり、この設定が必要になる。
-
- ターゲットNLB
- 作成したLBを選択する。
- API
-
- エンドポイントタイプ
リージョン
を選択する。
- リソース > [メソッド] > 統合リクエスト
-
- 統合タイプ
VPCリンク
を選択する。
- VPCリンク
- 設定したVPCリンクを選択する。
- エンドポイントURL
- 設定したLBのDNS名とリスナーのポートをURLにしたものを指定する。
- 例: http://xxxxx.elb.region.amazonaws.com:8080/
2019/08/15 21:25