AWSが提供しているライブラリには直接MySQLデータベースと接続する機能は含まれていないため、LambdaでRDSのMySQLに接続する場合、PyMySQLなどの外部ライブラリを使う必要がある。
レイヤー追加
レイヤーソース:ARNを指定
パブリック公開されているレイヤーのARNを指定する
arn:aws:lambda:ap-northeast-1:770693421928:layer:Klayers-p311-pymysql:1
ランタイムとレイヤーのPythonバージョンは合わせる
※バージョンが異なると、ライブラリのバイナリや依存関係が異なるため、互換性の問題が生じる可能性がある
参考サイト:https://qiita.com/kyuu2197/items/46ef484db8e54bc74069
lambdaコード
import pymysql
import os
def lambda_handler(event, context):
# RDSの接続情報を環境変数から取得する
rds_host = os.environ['RDS_HOST']
rds_user = os.environ['RDS_USER']
rds_password = os.environ['RDS_PASSWORD']
rds_db = os.environ['RDS_DB']
# データベース接続
connection = pymysql.connect(
host=rds_host,
user=rds_user,
password=rds_password,
database=rds_db
)
try:
with connection.cursor() as cursor:
# SQLクエリを実行
cursor.execute("SELECT VERSION()")
result = cursor.fetchone()
print(f"Database version: {result[0]}")
finally:
connection.close()
return {
'statusCode': 200,
'body': 'Success'
}