こんにちは、屋根裏エンジニアの折戸です
ついに屋根裏にエアコンを取り付けました🎉
この夏は快適に仕事ができそうです〜
はじめに
ブログタイトル通りですが、今回は Amazon API Gateway(以下、API Gateway)のプライベート統合でREST APIから internal(内部向け)なNetwork Load Balancer(以下、NLB)へ接続する設定方法をご紹介します。
Amazon API Gateway プライベート統合とは
API Gateway のプライベートな統合により、VPC 内にある HTTP/HTTPS リソースを VPC 外のクライアントがアクセスできるように簡単に公開できます。プライベート VPC リソースへのアクセスを VPC 境界を超えて拡張するために、プライベート統合で API を作成できます。
ざっくり噛み砕いて説明すると、API Gatewayのインターフェースを介してプライベートサブネット配置のリソースへアクセスできる機能、といったところでしょうか。
API GatewayのAPIタイプと、ELBへ接続する方法は多岐に及びますが、今回はREST APIタイプでinternalなNLBへの接続構成の手順です。
図のとおり、 internet-facingではなくinternalなNLBとすることで、インターネットからNLBへの直接アクセスを防ぐことができ、セキュアな構成が実現できます。
前提
今回は接続の設定手順にフォーカスするため、internalなNLBとその配下のEC2は構築済みとします。
また、EC2は「http://ドメイン/」へアクセスすると、「test」のテキストをレスポンスする単純なAPサーバーの構成でご説明します。
VPCリンク 作成
API Gateway -> VPC リンク Create クリック
REST API の VPC リンク 選択
名前: 任意
ターゲット NLB: internalなNLB 選択
作成 クリック
作成中画面が表示され、数分後にステータスが Pending から Available へ変わります
公式ドキュメントには2〜4分後にステータスが変わると記載されていました チュートリアル: API Gateway のプライベート統合を使用して REST API をビルドする - Amazon API Gateway
完了するまでに約 2~4 分かかるためです
ちなみにVPC リンクを作成すると、
VPC -> エンドポイントのサービス が作成されます
API Gateway REST API 作成
API Gateway -> API API を作成 クリック
REST API 構築 クリック
REST 選択
新しい API 選択
API 名:任意
エンドポイントタイプ:リージョン、もしくはCloudFront経由の場合はエッジ最適化 選択
API の作成 クリック
リソース 作成
今回は接続確認を容易にするため、シンプルにGETメソッドを作成します
API -> リソース アクション -> メソッドの作成 クリック
GET 選択
✓ クリック
統合タイプ:VPC リンク
プロキシ統合の使用:✓
メソッド:GET
VPC リンク:作成したVPC リンク
エンドポイント URL:http://[NLBのDNS名]
保存 クリック
統合リクエスト の タイプ:VPC_PROXY が作成されました
テスト 実行
コンソールから、基本的なリクエストの検証をテストを実施できます
テスト クリック
⚡テスト クリック
右側に
- レスポンス本文
- レスポンスヘッダー
- ログ
が出力されます
想定どおりの結果であれば、API のデプロイ準備は完了です🎉
API デプロイ
APIをデプロイし、インターネットからアクセスできるようにします
アクション -> API のデプロイ クリック
デプロイされるステージ:[新しいステージ]
ステージ名:任意
デプロイ クリック
ステージ ページへ遷移され、ステージ情報などが確認できます
URL の呼び出し をクリックし ブラウザからアクセスします
想定通りのレスポンスが表示されれば成功です🎉
最後に
普段、VPCやEC2などのコンソール操作に慣れている自分にとって、API GatewayのコンソールはUIや操作手順などが分かりづらいと感じました。
少しでもどなたかのご参考になれば幸いです。
でわ。