LoginSignup
12
13

More than 1 year has passed since last update.

VPC内・VPC外のLambdaが 他のリソースに対して、アクセス可能・不可能のパターン集

Last updated at Posted at 2022-06-22

はじめに

Lambdaを使う上で、VPC内のpublic subnetprivate subnetにあるLambdaが他のリソースにアクセスするパターンや、他のサービスからLambdaを呼ぶパターンなど、様々なパターンで実現可能かどうかまとめました。

vpc内外のLambdaからvpc内外のLambdaを呼ぶパターンの記事は下記に記載しています。

非 VPC の Lambda がリソースに対して、アクセスする

スクリーンショット 2022-06-21 22.39.54.png

Lambda → リソース アクセス
Lambda → リージョンサービス
Lambda → public内 リソース
Lambda → private内 リソース

リージョンサービスのリソースに対して、Lambdaを実行することはできます。

Lambdaは、VPC内のサービスのうち、publicにあるサービスに対しては実行でき、privateにあるサービスに対しては実行できません。

他のリソースが 非 VPC の Lambda を呼ぶ

NAT Gatewayがないパターン

スクリーンショット 2022-06-21 22.43.40.png

リソース → Lambda アクセス
リージョンサービス → Lambda
public内 リソース → Lambda
private内 リソース → Lambda
private内 リソース → Lambda ○ (vpcエンドポイント有り)

private内からは、vpcエンドポイントを使用すると、Lambdaを呼ぶことはできます。
実際の構築方法は以下の記事が参考になります。

NAT Gatewayがあるパターン

スクリーンショット 2022-06-21 22.55.15.png

リソース → Lambda アクセス
リージョンサービス → Lambda
public内 リソース → Lambda
private内 リソース → Lambda
private内 リソース → Lambda ○ (vpcエンドポイント有り)

NATGatewayを設置すると、private内のリソースからインターネット経由でLambdaを呼ぶことができます。

VPCのpublic内にある Lambda がリソースにアクセスする

スクリーンショット 2022-06-21 23.07.53.png

Lambda → リソース アクセス
Lambda → リージョンサービス
Lambda → public内 リソース
Lambda → private内 リソース
Lambda → private内 Lambda

LambdaにはElastic IPが割り当てられないので、public内のLambdaは、インターネットアクセスをすることができません。

publicにあるLambdaは、インターネットに繋がらないと覚えておきましょう。

また、LambdaがLambdaを呼ぶときは、必ずインターネット経由になるため、
public内のLambdaは、privateにあるLambdaを呼ぶことはできません。

他のリソースが VPCのpublic内にある Lambda を呼ぶ

スクリーンショット 2022-11-15 23.30.07.png

リソース → Lambda アクセス
リージョンサービス → Lambda
public内 リソース → Lambda
private内 リソース → Lambda
private内 リソース → Lambda ○ (vpcエンドポイント有り)

public内のLambdaは、どこからでも呼ぶことができます。

VPCのprivate内にある Lambda がリソースにアクセスする

NAT Gatewayがないパターン

スクリーンショット 2022-06-21 23.28.31.png

Lambda → リソース アクセス
Lambda → private内 リソース
Lambda → public内 リソース
Lambda → リージョンサービス ✗ (vpcエンドポイントサポート外)
Lambda → リージョンサービス ○ (vpcエンドポイント有り)

VPCエンドポイントサポート外のリージョンサービスのPinpointなどは、Lambdaからアクセスできません。

NAT Gatewayがあるパターン

スクリーンショット 2022-06-21 23.34.03.png

NATGateway周りの流れ詳細↓

スクリーンショット 2022-06-21 23.35.10.png

Lambda → リソース アクセス
Lambda → private内 リソース
Lambda → public内 リソース
Lambda → リージョンサービス ○ (vpcエンドポイントサポート有り)
Lambda → リージョンサービス ○ (vpcエンドポイント有り)

VPC内でLambdaが様々なリソースにアクセスするためには、privateに設置し、かつ、NATGatewayが必要ということですね。

他のリソースが VPCのprivate内にある Lambda を呼ぶ

スクリーンショット 2022-06-21 23.46.37.png

リソース → Lambda アクセス
リージョンサービス(SQS除く) → Lambda
SQS → Lambda
Event Bridge → Lambda
public内 リソース → Lambda
private内 リソース → Lambda

SQS をイベントソースにした private上のLambdaは、実行しないと思っておりましたが、実行するようです。
下記の記事が分かりやすかったです。

AWS Lambda から SQS をポーリングしており、メッセージがエンキューされたことをトリガーにAWS Lambda が VPC上のLambda 関数をコールする

Event Bridgeも同様の理由でLambdaに値を渡して起動することが可能です。

参考

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13