API GatewayからVPCリンクを使用してNLBに接続する
API GatewayのVPCリンクとNLBを使用して、API Gateway経由でプライベートなリソース(EC2とか)にアクセスすることが可能になります。
EC2のマネージドコンソールからNLBを作成します。
「mynlb」のスキームは「内部」とします。
作成したら、API GatewayのVPCリンクを設定します。ターゲットNLBにmynlbを設定します。
「作成」を押して、VPCリンクを作成します。VPCIDは適当に自動生成されて振られます。
※20分ほど作成に時間がかかります
「統合リクエスト」をクリックします。
統合タイプにはVPCリンクを指定します。
VPCリンクにはVPCIDを指定します。
エンドポイントURLはネットワークロードバランサー(NLB)のDNS名を指定します。
これでデプロイすればAPI Gateway経由でプライベートサブネットに配置されているEC2にアクセスすることが可能になります。
EC2のTomcatに転送する
API GatewayからNLB経由でEC2のtomcatアプリに連携する場合は、エンドポイントURLにNLBのDNSを指定します。EC2のターゲットグループでリスナー80にして、転送先をEC2のIPアドレスにして、ポートを8080にします。
これで、API GatewayからNLB経由でEC2のtomcatアプリにアクセスすることが可能になります。
API GatewayからVPCリンク経由でTomcatのAPIを指定するには、エンドポイントURLにNLBのDNS+URIを設定する必要があります。
デプロイするファイル | NLBのDNS |
---|---|
aaa.war | xxx-yyy.elb.ap-northeast-1.amazonaws.com |
以下がエンドポイントURLの例になります。
http://xxx-yyy.elb.ap-northeast-1.amazonaws.com:8080/aaa/hogehoge/{parameter1}/fugafuga/{parameter2}
http://NLBのDNS/
と指定した場合は、バックエンドのTomcatアプリのwebapps/ROOT/index.jsp
が返却されるという事になります。
また、パスパラメータを{hoge}というように渡す場合は、「プロキシ統合の使用」にチェックを入れないと、パスパラメータが渡せないです。500エラーになります。
Private APIの場合VPCリンクが必要か
API GatewayでPrivate APIを作成した場合、エンドポイントがVPC内にある場合は、プライベートであってもVPCリンクから接続する必要があるようです。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント