0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lambdaってどこにあるの?VPCアタッチの有無でわかるサーバーレスの基本

0
Posted at

はじめに

どーも!shihopowerです!

SAP対策の模擬問題を解いていると、こんな問題に出会いました。

「VPCにアタッチされたLambda関数が外部APIにアクセスできるようにするには?」
選択肢:インターネットゲートウェイ / NATゲートウェイ / Egress-onlyゲートウェイ…

選択肢を見たとき、ふと疑問が浮かびました。

「あれ、Lambdaってパブリックサブネットにあるのかプライベートサブネットにあるのか、問題文に書いていないけど…どうやって絞るの?」

そもそもLambdaはデフォルトでどこに配置されるのか、VPCにアタッチするとどう変わるのか——そこを整理しないと選択肢の意味すら判断できないと気づきました。本記事ではその疑問を掘り下げてみます。


目次

  1. Lambdaのデフォルトの配置場所
  2. VPCにアタッチするとどうなるか
  3. VPCアタッチが必要なケース・不要なケース
  4. まとめ

1. Lambdaのデフォルトの配置場所

まず大前提として、LambdaはVPCにアタッチしなくても動きます

デフォルトでは、LambdaはAWSが管理する共有ネットワーク環境上で実行されます。この環境はユーザーが作成したVPCとは別の場所にあり、いわば「VPCの外」にいるイメージです。

Lambda(AWS管理の共有環境)
    ↓
インターネット      ← 直接アクセスできる ✅
    ↓
S3 / DynamoDB など ← 直接アクセスできる ✅
    ↓
RDS(VPCのプライベートサブネット内) ← アクセスできない ❌

デフォルト構成のポイント

接続先 アクセス可否
インターネット(外部API等) ✅ 可能
S3、DynamoDB(パブリックエンドポイント) ✅ 可能
RDS、ElastiCache(プライベートサブネット内) ❌ 不可

ただし、送信元IPはAWSのIPプールから動的に割り当てられるため、固定することができません。これが後述の問題で重要になってきます。


2. VPCにアタッチするとどうなるか

LambdaをVPCにアタッチすると、Lambda関数はVPC内のプライベートサブネット上に配置されたENI(Elastic Network Interface)経由でトラフィックを送受信するようになります。

Lambda(プライベートサブネット内・ENI経由)
    ↓
RDS / ElastiCache など ← アクセスできる ✅
    ↓
インターネット          ← 直接アクセスできない ❌
                         (NATゲートウェイが必要)

VPCアタッチ後のポイント

VPCにアタッチすると、LambdaはVPC内のプライベートリソースにアクセスできるようになります。一方で、インターネットへの直接の出口がなくなります

インターネットや外部APIに接続するには、パブリックサブネットにNATゲートウェイを配置し、プライベートサブネットからのトラフィックをNATゲートウェイ経由で外に出す構成が必要です。

Lambda(プライベートサブネット)
    ↓
NATゲートウェイ(パブリックサブネット)← Elastic IPを付与
    ↓
インターネットゲートウェイ
    ↓
外部API / インターネット ✅

このとき外部から見た送信元IPは、NATゲートウェイに付与したElastic IP(固定) になります。


3. VPCアタッチが必要なケース・不要なケース

ここまでの内容を整理すると、VPCアタッチが必要かどうかの判断基準は明確です。

VPCアタッチが必要なとき

  • RDS、ElastiCache、プライベートサブネット上のEC2など、VPC内のプライベートリソースにアクセスしたいとき
  • セキュリティグループやネットワークACLによるネットワークレベルのアクセス制御が必要なとき

VPCアタッチが不要なとき(デフォルトのままでよいとき)

  • S3やDynamoDBなど、パブリックエンドポイントのAWSサービスだけを使うとき
  • 外部APIに接続するだけでよく、VPC内のリソースを使わないとき

VPCアタッチは便利ですが、設定が増えます。VPC内のプライベートリソースを使わないなら、シンプルなデフォルト構成のほうが管理が楽です。


4. まとめ

今回の学びをまとめます。

状態 配置場所 インターネット VPC内リソース 送信元IP
VPCなし(デフォルト) AWS共有環境 ✅ 直接接続可 ❌ 不可 動的(固定不可)
VPCあり(NATなし) プライベートサブネット ❌ 不可 ✅ 可
VPCあり+NATゲートウェイ プライベートサブネット ✅ 可 ✅ 可 固定(Elastic IP)

SAP対策でネットワーク系の問題を解くときのコツとして、「LambdaがVPCにアタッチされている=プライベートサブネット配置」 という前提を押さえておくと、選択肢をスッと絞れるようになります。

また、「固定IPが必要」「外部サービスへのアクセスが必要」という条件が重なったときは、NAT Gateway+Elastic IP の組み合わせを思い浮かべてください。

最後まで読んでいただきありがとうございました!


参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?