type
status
date
slug
summary
tags
category
icon
password
理論
AWS LambdaとVPC内のインターネットアクセスに関する基本知識
AWS Lambda関数がVPC内で外部リソースにアクセスするには、特定のネットワーク構成が必要です。この構成に関連する重要な知識を以下にまとめます。
1. VPCとサブネットの基本
- VPC(Virtual Private Cloud): AWS上で仮想的に隔離されたネットワーク環境を提供。
- サブネット:
- パブリックサブネット: インターネットゲートウェイを介して直接インターネットにアクセス可能。
- プライベートサブネット: NATゲートウェイを経由してインターネットにアクセス。
2. AWS LambdaとVPC
- Lambda関数がVPC内にデプロイされる場合、特定のサブネットとセキュリティグループに関連付けられる。
- プライベートサブネットに配置されたLambda関数が外部インターネットリソースにアクセスするには、出口トラフィック用の設定が必要。
3. NATゲートウェイの役割
- NATゲートウェイ: プライベートサブネット内のリソースがインターネットにアクセスするためのサービス。
- Elastic IP: NATゲートウェイに割り当てる固定パブリックIPアドレス。
- ルートテーブル設定:
- プライベートサブネットのルートテーブルでデフォルトルート(0.0.0.0/0)をNATゲートウェイに向ける必要がある。
4. Elastic IPの利用
- Elastic IPは固定のパブリックIPアドレスを提供し、外部リソースに対して一貫したIPアドレスを使用する場合に便利。
- 許可リスト(allow list)を使用する外部サービスとの連携に適している。
5. セキュリティの考慮
- Lambda関数が外部リソースにアクセスする際、セキュリティグループを正しく設定して通信を制限。
- NATゲートウェイを使用することで、インバウンドトラフィックを防ぎつつ、アウトバウンドトラフィックのみを許可。
6. IPv6の特別なケース
- Egress-onlyインターネットゲートウェイは、IPv6トラフィックの出口専用。
- IPv4トラフィックには使用不可。
まとめ
AWS LambdaがVPC内で外部リソースと通信するには、プライベートサブネットにNATゲートウェイを設定し、Elastic IPを使用して固定パブリックIPアドレスを提供することが必要です。これにより、外部サービスとのセキュアかつ安定した通信が可能になります。
実践
目的
- VPC 内にある Lambda 関数にインターネットアクセスを提供する。
- 完成構成では、プライベートサブネットに配置した Lambda 関数が NAT ゲートウェイを経由してインターネットに接続します。
構築手順
- VPC 作成
- サブネット作成
- プライベートサブネット:
10.0.2.0/24
- インターネットゲートウェイ作成 & アタッチ
- NAT ゲートウェイ作成
- パブリックサブネットに配置
- Elastic IP 割り当て
- ルートテーブル設定
- パブリック:
0.0.0.0/0
→ インターネットゲートウェイ - プライベート:
0.0.0.0/0
→ NAT ゲートウェイ
6. IAM ロールの作成
- 必要なポリシー:
- AWS 管理ポリシー
AWSLambdaVPCAccessExecutionRole
- ロール名:
- 任意の名前 (例:
lambda_vpc_basic_execution
)
7. Lambda 関数の作成
- VPC に配置する際に、作成した IAM ロールを設定。
- 動作確認には、
https://checkip.amazonaws.com/
を使用するコードを記述。
コードの全体像
以下のコードは、外部API(
https://checkip.amazonaws.com/
)にアクセスし、レスポンスを取得するLambda関数の例です。動作確認
- 作成した Lambda 関数をテスト実行し、インターネットに接続できることを確認。
考慮点
- 冗長化: 本番環境では、高可用性を確保するため NAT ゲートウェイやサブネットの冗長化を検討。
- コスト: NAT ゲートウェイや Elastic IP はコストが発生するため、利用状況に応じた設計が必要。
この記事を基に設定を進めれば、VPC Lambda のインターネットアクセスを安全に確保できます。
一問道場
質問 #47
ある会社が、VPCに接続されたAWS Lambda関数上で実行されるサーバーレスアプリケーションを構築しています。この会社は、新しい外部プロバイダーのサービスとアプリケーションを統合する必要があります。外部プロバイダーは、許可リストに載っているパブリックIPv4アドレスからのリクエストのみをサポートしています。
アプリケーションが新しいサービスを使用できるようにするために、会社は外部プロバイダーに対して単一のパブリックIPアドレスを提供する必要があります。
どのソリューションがアプリケーションに新しいサービスへのアクセスを提供しますか?
A.
NATゲートウェイをデプロイし、Elastic IPアドレスをNATゲートウェイに関連付け、VPCをNATゲートウェイを使用するように設定します。
B.
egress-onlyインターネットゲートウェイをデプロイし、Elastic IPアドレスをそのインターネットゲートウェイに関連付け、Lambda関数のElasticネットワークインターフェイスをeferess-onlyインターネットゲートウェイを使用するように設定します。
C.
インターネットゲートウェイをデプロイし、Elastic IPアドレスをそのインターネットゲートウェイに関連付け、Lambda関数をインターネットゲートウェイを使用するように設定します。
D.
インターネットゲートウェイをデプロイし、Elastic IPアドレスをそのインターネットゲートウェイに関連付け、パブリックVPCのルートテーブルのデフォルトルートをインターネットゲートウェイを使用するように設定します。
解説
この問題では、AWS Lambda関数がVPC内でインターネットにアクセスする方法を尋ねています。外部サービスは、許可リストに登録されたパブリックIPアドレスからのリクエストのみを受け入れるため、Lambda関数が使用するIPアドレスを提供する必要があります。
- A. NATゲートウェイを使用する: 正解です。NATゲートウェイを使ってLambda関数がインターネットにアクセスし、Elastic IPを提供することで、外部サービスに必要な単一のIPアドレスを提供できます。
- B. Egress-onlyインターネットゲートウェイ: 不正解。IPv6専用で、IPv4には適用できません。
- C. インターネットゲートウェイを使用する: 不正解。Lambdaがプライベートサブネットにある場合、インターネットゲートウェイは直接使用できません。
- D. インターネットゲートウェイとVPCルートテーブルの設定: 不正解。Lambda関数がプライベートサブネットにある場合、NATゲートウェイを使用する必要があります。
結論として、A. NATゲートウェイを使用するが正しい解答です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/168d7ae8-88e2-807b-bca4-d7539dbc2d26
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章