LambdaからRDSへの接続設定が簡単になったのでやってみる
前提
言語(バージョン):Python3.8
RDS:PostgreSQL
※RDSは作成済みとする
ライブラリ:psycopg2
全体の流れ
・ Lambda関数の作成
・ コードの作成
・ 環境変数の設定
・ レイヤーの追加
・ RDS接続設定
関数作成
・ 一から作成を選択
・ 任意の関数名を入力
・ ランタイムはpython3.8を選択
※理由は後述
・ アーキテクチャはx86_64を選択
関数の作成を押下
コードを作成しDeploy
import psycopg2
import os
# 環境変数から接続情報を取得
db_endpoint = os.environ['DB_ENDPOINT']
db_username = os.environ['DB_USERNAME']
db_password = os.environ['DB_PASSWORD']
db_name = os.environ['DB_NAME']
def lambda_handler(event, context):
# データベースに接続
conn = psycopg2.connect(
dbname=db_name,
user=db_username,
password=db_password,
host=db_endpoint
)
# カーソルの作成
cur = conn.cursor()
# SQL の実行
cur.execute('SELECT * FROM テーブル名;')
records = cur.fetchall()
# カーソルと接続のクローズ
cur.close()
conn.close()
# 結果の返却
return {
'statusCode': 200,
'body': records
}
環境変数の設定
設定 → 環境変数より以下を設定する
・ DB_ENDPOINT
RDSのエンドポイントを指定する
・ DB_USERNAME
接続用のユーザ名を指定する
・ DB_PASSWORD
接続用のパスワードを指定する
・ DB_NAME
接続先のDB名を指定する
レイヤーを追加する
・ レイヤーソース:「ARNを指定」を選択
・ 下記サイトからARNをコピーして入力
・ 検証を押下後、追加を押下
※ psycopg2-lambda-layer
https://github.com/jetbridge/psycopg2-lambda-layer
※東京リージョンのPython3.8の場合は↓
arn:aws:lambda:ap-northeast-1:898466741470:layer:psycopg2-py38:1
※ pythonのバージョンを3.8にしている理由はここです。
2023年12月時点で3.8が最新バージョン
RDS接続設定
・ 設定 → RDSデータベース
・ RDSデータベースに接続 を押下
・ 事前に作成したデータベースを選択する
・ プロキシは使用しないを選択
(今回はテストのためプロキシは使用しない)
・ 作成を押下
完成
Testを押下して実行してみよう
※ イベントは適当(デフォルトのまま)で作成でOKです。
以上です。