LoginSignup
1
0

More than 3 years have passed since last update.

VPC内のLambdaからboto3を使用する際に気を付けること

Last updated at Posted at 2021-01-31

はじめに

この記事は、社会人2年目 AWS、python初心者が勉強したことをまとめたものです。
間違っている点、改善点等ございましたご指摘いただけると大変ありがたいです。

この記事について

VPC内のLambdaからboto3を使用してパラメータストアからDB接続情報を取得しようとしたところはまりました。
自身のための備忘録として、また初心者が同じところで嵌らないようにはまった内容について記載しておきます。

結論

VPC内のプライベートサブネットに配置されたLambdaからインターネット経由でboto3を使用するためには以下のいずれかを実行する必要がある。

  • publicサブネットのNATゲートウェイを経由する。
  • private linkを使用する。

■参考
https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-vpc-parameter-store/

やりたいこと

パラメータストアからDB接続情報を取得し、LambdaからDBに対してSELECT、INSERTを行うこと。

前提

  • Lambdaにパラメータストアからパラメータを取得するためのIAMポリシー(ssm:GetParameters、sts:AssumeRole)は付与済み
  • LambdaとDBは同じプライベートサブネットに配置

エラー内容

2021-01-30T14:29:59.355Z 410cd8d5-7a8f-4c2a-a247-eff916e351f7 Task timed out after 3.00 seconds

原因

デフォルトでは、Lambda は追加設定を行わなくても、インターネットと Systems Manager および パラメータストアへアクセスできます。
ただし、Amazon VPC の Lambda 関数は、デフォルトではインターネットとパラメータストアへの値にアクセスできません。

勝手にAWS内のリソースへのアクセスはいい感じにルーティングしてくれると思っていました。。。

■参考
https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-vpc-parameter-store/

解決策

パブリックサブネットをにNATゲートウェイを配置し、Lambdaが配置されているプライベートサブネットに以下のルートを追加してあげたら、
無事パラメータストアからDB接続情報を取得できました!

0.0.0.0/0 NATゲートウェイ

image.png

最後に

private linkは使用したことがないので追々試してみたいと思います。

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