Lambda関数内からサードパーティサービスへのアウトバウンドAPIリクエストを作成しようとしていますが、関数は常にエラーなしでタイムアウトします。
これは以前、別の関数内(まだ同じVPC /サブネット内)でs3.putObject
操作を実行しようとしたときに発生しました。サービス名com.amazonaws.us-east-1.s3
のエンドポイントを追加して接続することでうまく対処できましたこのLambda関数が存在するVPCに関連付けられているルートテーブルに追加します。
Lambdaダッシュボード内の[ネットワーク]ボックス-> [セキュリティグループ]セクションに、次の警告が表示されます。
VPCを有効にすると、Lambda関数はデフォルトのインターネットアクセスを失います。関数に外部インターネットアクセスが必要な場合は、セキュリティグループが送信接続を許可し、VPCにNATゲートウェイがあることを確認してください。
このセキュリティグループは、直下のアウトバウンドルールテーブルに基づいて、アウトバウンド接続を許可すると思います。
その2番目の要件について、このVPCにNATゲートウェイがあることを確認できます。VPCダッシュボードのNATゲートウェイタブ内にあるため、関連付けられたVCP、およびそのVPCはLambda関数をホストしているものと同じです。
ガイドに従って フローログ を作成し、VPCに出入りするトラフィックを監視して、これらの送信要求が実際に拒否されていることを確認しました。ただし、そのようにしてCloudWatchログを検査すると、すべてのレコードがACCEPT OK
またはNODATA
で終わります。
VPC Lambda関数へのインターネットアクセスを許可するにはどうすればよいですか? は、私がもともと従おうとしたガイドですが、To create a public or private subnet
のステップ4で行き詰まりました。
[変更先:]ドロップダウンメニューから適切なルートテーブルを選択します。プライベートサブネットの場合、デフォルトルートはNATゲートウェイまたはNATインスタンス:
宛先:0.0.0.0/0ターゲット:nat-…(またはeni-…)パブリックサブネットの場合、デフォルトルートはインターネットゲートウェイを指す必要があります。
宛先:0.0.0.0/0ターゲット:igw-…
このVPC内の4つのサブネットすべてについて、Change to:
の右側にあるドロップダウンをクリックすると、1つのオプション(すでに選択されているrtb-xxxxxxxx
)のみが表示されました。そのルートテーブルへのリンクをクリックし、[概要]の横にある[ルート]タブをクリックすると、次のようになります。
Lambda関数のインターネットへのアクセスをブロックしているのはなぜでしょうか。
LambdaがVPC経由でインターネットにアクセスできるようにするには、Private Subnet
とNAT Gateway
添付。
スクリーンショットのとおり、サブネットに接続されているルートテーブルにはigw-xxxxxxx
アタッチされ、現在のサブネットがpublic subnet
。
これを機能させるには、次のようにします:
NAT Gateway
の代わりに igw-xxxxxx
現在のルートテーブルのsubnet
[〜#〜]または[〜#〜]
Elastic IP
インターネットにアクセスしたい場合。[〜#〜]または[〜#〜]
@John Rotensteinによると、LambdaがVPCリソースを必要としない場合は、LambdaをVPCから移動できます
こんにちは私はそれについて明確なスクリーンショットでステップバイステップのチュートリアルを開発しました:
パートI
パートII
VPC
モードでのAWS Lambdaインターネットアクセスの設定は、AWS側で適切なAWSドキュメントが提供されていないのでトリッキーです。私はこれを何度も読みました https://aws.Amazon.com/premiumsupport/ knowledge-center/internet-access-lambda-function / ですが、YouTube動画を目覚めさせませんでした。研究開発の多くの後、以下の手順が必要であるように要約できますVPCモードでAWS Lambdaをセットアップする
- Route Tables two router
- One for EC2 - EC2_ROUTER
- Another for AWS Lambda - AWS_Lambda_ROUTER
- Create an Internet Gateway
- Add 0.0.0.0/0 rule in EC2_ROUTER for target igw-xxxxx
- This will create public subnet and give INTERNET access for EC2
- Create a NATGateway with public subnet which has igw-xxxxx as target
- Create a private subnet which and attach to AWS_Lambda_ROUTER, with target 0.0.0.0/0 as nat-xxxxxxx
- Select VPC for AWS Lambda
- Select a/all private subnet which is private having NAT Gateway for all traffic 0.0.0.0/0
all done, go ahead and enjoy
注
AWS Lambdaでのインターネットアクセス-> NATGatewayを使用したプライベートサブネット-> NATGatewayは、AWS Lambdaにアクセスするインターネットゲートウェイを使用したパブリックサブネットにあります。
[〜#〜] ps [〜#〜]
AWS LambdaがInternetGateway経由でインターネットにアクセスできないのはなぜか、NATGatewayが必要な理由がわかりません