【新機能】API Gateway VPC integrationを使ってみた #reinvent

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

re:Invent2017 キーノート2日目で発表されたアップデートになります!!

API Gateway VPC integrationとは?

API GatewayのバックエンドとしてLambdaやHTTP、AWSサービスを指定することができました。また、HTTPのバックエンドはインターネット経由でのアクセスのみでしたが、今回VPC integrationによりVPC内のリソースをバックエンドに指定することができるようになりました。

やってみた

API GatewayからバックエンドにVPCを指定するためには、NLB + VPC Linksが必要になります。

ネットワークロードバランサ(NLB)の作成

今回はinternalなNLBを作成します。(externalでも可)

NLBのターゲットグループにはNginxをインストールしたEC2をアタッチしました。

VPCLinkの作成

API Gatewayのインベントリから「VPCリンク」という項目から作成します。作成したNLBを指定します。(NLBがInternalではなくインターネットのNLBを指定すると「!」でVPCリンクが不要かも?という注意事項が表示されました)

ステータスが有効になってることを確認しましょう。

API Gatewayの統合リクエストの設定

統合リクセストにて統合タイプを「VPCリンク」を選択します。VPCリンクの設定項目は、[ステージ変数の使用]を選択し、${stageVariables.vpcLinkId}を入力するとステージに合わせてVPCのリンク先を変更できます。が今回は、テストなのでそのままVPCリンクIDを入力しました。 エンドポイントURLには、バックエンドに接続できるURLを選択します。Route53で設定したドメインまたはNLBのドメイン名を指定します。今回はNLBのドメイン名を指定しました。

設定はこれでokです。

試す

テストリクエストを流して、レスポンスを確認します。

ちゃんとNginxのレスポンスが帰ってきました!

最後に

API GatewayのバックエンドにVPCのリソースを指定できるようになりました。re:Inventにてリージョン間ピアリングとかPrivateLinkエンドポイントなど、ネットワークの進化が複数発表されてます! それではまた!

参考

http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-private-integration.html