[アップデート]  REST APIのAPI Gatewayのプライベート統合でALBを直接指定できるようになりました

[アップデート] REST APIのAPI Gatewayのプライベート統合でALBを直接指定できるようになりました

VPCリンクV2が裏側で支えてくれています
2025.11.30

REST APIのプライベート統合でALBを直接関連付けたい

こんにちは、のんピ(@non____97)です。

皆さんはREST APIのプライベート統合でALBを直接関連付けたいなと思ったことはありますか? 私はあります。

従来、REST APIのプライベート統合でALBはサポートされておらず、必ずNLBを用意する必要がありました。

AWS WAFとの関連付けやプライベートAPIエンドポイントとして動作させたい場合、APIキーを使用したい場合はREST APIを選択する必要があります。この時、本来であればALBに直接関連付けられれば十分なのであれば、NLBを追加で用意しなければならないのは避けたいところではあります。API GatewayにおけるREST APIとHTTP APIの機能の違いは以下で紹介されています。

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/http-api-vs-rest.html

今回、Amazon API Gateway REST APIがALBとのプライベート統合をサポートするようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/11/api-gateway-rest-apis-integration-load-balancer/

AWS Blogsにも投稿されていますね。

https://aws.amazon.com/jp/blogs/compute/build-scalable-rest-apis-using-amazon-api-gateway-private-integration-with-application-load-balancer/

これによりREST APIのプライベート統合の際にNLBが不要になりました。

以降紹介します。

ドキュメントから仕様を確認

まずは以下ドキュメントから仕様を確認しましょう。

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-vpc-links-v2.html

REST APIのプライベート統合がALBをサポートする裏側でVPCリンクV2なるものが登場しています。

以下記事で紹介されているとおり、従来はREST APIとHTTP APIとで同じ「VPCリンク」という表現を使っていましたが、REST APIではPrivateLink、HTTP APIではENIと裏側の仕組みが異なっていました。

https://dev.classmethod.jp/articles/difference_between_rest_api_and_http_api_each_vpc_link/

今回のVPCリンクV2になったことで、REST APIとHTTP APIとで同じ仕組みになりました。

具体的には従来のHTTP APIのVPCリンクと同様に指定したサブネットにENIが生えてくる仕組みになりました。

VPC links enable you to create private integrations that connect your API routes to private resources in a VPC, such as Application Load Balancers or Amazon ECS container-based applications. A private integration uses a VPC link V2 to encapsulate connections between API Gateway and targeted VPC resources. You can reuse VPC links across different resources and APIs.

When you create a VPC link, API Gateway creates and manages elastic network interfaces for the VPC link V2 in your account. This process can take a few minutes. When a VPC link V2 is ready to use, its state transitions from PENDING to AVAILABLE.

Set up VPC links V2 in API Gateway - Amazon API Gateway

また、AWS公式ドキュメントHTTP APIのプライベート統合のページを確認すると、「VPCリンクV2はREST APIとHTTP APIとでサポートされている」と記載されており、REST APIのVPCリンクV2のリンクが張られていました。

Note

To create a private integration, you must first create a VPC link. VPC links V2 are now supported for both HTTP and REST APIs. To learn more about VPC links V2, see Set up VPC links V2 in API Gateway.

After you’ve created a VPC link V2, you can set up private integrations that connect to an Application Load Balancer, Network Load Balancer, or resources registered with an AWS Cloud Map service.

Create private integrations for HTTP APIs in API Gateway - Amazon API Gateway

このVPCリンクV2となった影響で以下のような影響があります。

  • NLBが不要となった
    • NLBを挟むことによって発生していたコストやレイテンシーからの解放
    • NLBの設計/管理/運用コストからの解放
  • REST APIのVPCリンクの場合であっても60日間トラフィックが発生しない場合は自動でENIが削除されるようになった

なお、VPCリンクV2を使用できるリージョン、AZは制限があります。VPCリンクV2への移動を考えている場合はサポート状況を確認しましょう。

Region name Region Supported Availability Zones
US East (Ohio) us-east-2 use2-az1, use2-az2, use2-az3
US East (N. Virginia) us-east-1 use1-az1, use1-az2, use1-az4, use1-az5, use1-az6
US West (N. California) us-west-1 usw1-az1, usw1-az3
US West (Oregon) us-west-2 usw2-az1, usw2-az2, usw2-az3, usw2-az4
Asia Pacific (Hong Kong) ap-east-1 ape1-az2, ape1-az3
Asia Pacific (Mumbai) ap-south-1 aps1-az1, aps1-az2, aps1-az3
Asia Pacific (Seoul) ap-northeast-2 apne2-az1, apne2-az2, apne2-az3
Asia Pacific (Singapore) ap-southeast-1 apse1-az1, apse1-az2, apse1-az3
Asia Pacific (Sydney) ap-southeast-2 apse2-az1, apse2-az2, apse2-az3
Asia Pacific (Tokyo) ap-northeast-1 apne1-az1, apne1-az2, apne1-az4
Canada (Central) ca-central-1 cac1-az1, cac1-az2
Europe (Frankfurt) eu-central-1 euc1-az1, euc1-az2, euc1-az3
Europe (Ireland) eu-west-1 euw1-az1, euw1-az2, euw1-az3
Europe (London) eu-west-2 euw2-az1, euw2-az2, euw2-az3
Europe (Paris) eu-west-3 euw3-az1, euw3-az3
Europe (Spain) eu-south-2 eus2-az1, eus2-az2, eus2-az3
Europe (Stockholm) eu-north-1 eun1-az1, eun1-az2, eun1-az3
Middle East (Bahrain) me-south-1 mes1-az1, mes1-az2, mes1-az3
South America (São Paulo) sa-east-1 sae1-az1, sae1-az2, sae1-az3
AWS GovCloud (US-West) us-gov-west-1 usgw1-az1, usgw1-az2, usgw1-az3

やってみた

検証環境

実際に試してみます。

検証環境は以下のとおりです。

検証環境.png

InternalのALBは以下のようにコアラかわいいと固定レスポンスを返すものを用意しています。

16.ALB.png

セキュリティグループでは、VPC CIDR10.0.0.0/16からのHTTPを許可しています。

7.セキュリティグループのルール.png

API Gatewayの作成

API Gatewayを作成します。

2.REST APIの作成.png

Security policyEndpoint access modeと見慣れないプロパティが追加されていますが、こちらは2025年11月に追加された機能です。

セキュリティポリシーではALBやCloudFrontと同じように使用可能な暗号スイートを指定できるようになっています。エンドポイントアクセスモードではカスタムドメインを使用している場合にSNI名を検証するようになっています。詳細は以下AWS公式ドキュメントをご覧ください。

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-security-policies.html

作成が完了すると以下のようになります。

17.API の設定.png

VPCリンクの作成

VPCリンクを作成します。

3.VPC のリンク.png

VPCリンクVPCリンクV2がありますね。VPCリンクV2の説明にREST APIとHTTP APIの両方をサポートしていると記載があります。従来のHTTP APIのVPCリンクは選択できなくなっているので、HTTP APIのVPCリンクをベースに作成されたのでしょう。VPCやサブネット、セキュリティグループを指定して作成します。

4.VPC リンクの作成.png

作成が完了すると以下のようになります。API typeがREST と HTTPとなっていますね。

5.VPC のリンクの詳細.png

従来のHTTP APIのVPCリンクと同じですね。

メソッドの作成

メソッドの作成をします。

先ほど作成したVPCリンクとALBを指定します。エンドポイントURLにはhttp://<ALBのDNS名>/と指定しています。

6.2.メソッドの作成.png

作成が完了しました。

9.作成済み.png

VPCエンドポイントサービスを確認すると、従来のREST APIのVPCリンクでは作成されていたVPCエンドポイントサービスは作成されていませんでした。

8.エンドポイントサービスは作成されていない.png

一方、指定したサブネットにENIが生えてきていました。

15.ENI.png

デプロイ

デプロイです。

デプロイ前にテストをします。

10.テスト.png

ALBに設定した固定レスポンスが返ってきていますね。

それではデプロイをします。

11.APIをデプロイ.png

prodステージにデプロイします。

12.Deploy API.png

デプロイが完了しました。

13.デプロイ完了.png

動作確認をしてみましょう。

手元の端末からアクセスします。

> curl https://2fj08o5wrj.execute-api.us-east-1.amazonaws.com/prod -v
* Host 2fj08o5wrj.execute-api.us-east-1.amazonaws.com:443 was resolved.
* IPv6: (none)
* IPv4: 98.95.56.78
*   Trying 98.95.56.78:443...
* Connected to 2fj08o5wrj.execute-api.us-east-1.amazonaws.com (98.95.56.78) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=*.execute-api.us-east-1.amazonaws.com
*  start date: Nov 19 00:00:00 2025 GMT
*  expire date: Dec  3 23:59:59 2026 GMT
*  subjectAltName: host "2fj08o5wrj.execute-api.us-east-1.amazonaws.com" matched cert's "*.execute-api.us-east-1.amazonaws.com"
*  issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M01
*  SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://2fj08o5wrj.execute-api.us-east-1.amazonaws.com/prod
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: 2fj08o5wrj.execute-api.us-east-1.amazonaws.com]
* [HTTP/2] [1] [:path: /prod]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [accept: */*]
> GET /prod HTTP/2
> Host: 2fj08o5wrj.execute-api.us-east-1.amazonaws.com
> User-Agent: curl/8.7.1
> Accept: */*
>
* Request completely sent off
< HTTP/2 200
< x-amzn-requestid: 3ab55243-3ca7-4abd-a85e-6cdc1b4c4fb0
< x-amz-apigw-id: U04kyE-CoAMEkEw=
< x-amzn-trace-id: Root=1-692b6e1e-498fca051e2ed66f201d8388
< content-type: application/json
< content-length: 21
< date: Sat, 29 Nov 2025 22:05:17 GMT
<
* Connection #0 to host 2fj08o5wrj.execute-api.us-east-1.amazonaws.com left intact
コアラかわいい%

正常にコアラかわいいと返ってきました。

VPCリンクV2が裏側で支えてくれています

REST APIのAPI Gatewayのプライベート統合でALBを直接指定できるようになったアップデートを紹介しました。

新たにVPCリンクV2が追加され、裏側で支えてくれています。60日間未リクエストの場合にENIが削除されることは注意が必要ですが、基本的にはVPCリンクV2を使っていく形で良いかと思います。

この記事が誰かの助けになれば幸いです。

以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!

この記事をシェアする

FacebookHatena blogX

関連記事