macOS の環境
> sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.6
BuildVersion: 16G29
macOS 環境下のpythonのバージョン
> python -V
Python 2.7.10
作成開始
- lambda をコンパイするためのディレクトリの作成
> mkdir lambda_app
- mysql を接続するための情報を記述するファイルの作成
> vi rds_config.py
#config file credentials for rds mysql instance
db_username = "接続したいDBユーザ名"
db_password = "接続したいDBパスワード"
db_name = "接続したいDB名"
- mysql を接続するアプリケーションの作成
> vi app.py
import sys
import logging
import rds_config
import pymysql
#rds settings
rds_host = "xx.rds.amazonaws.com"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name
logger = logging.getLogger()
logger.setLevel(logging.INFO)
try:
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
except:
logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
sys.exit()
logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def handler(event, context):
"""
This function fetches content from mysql RDS instance
"""
item_count = 0
with conn.cursor() as cur:
cur.execute("select * from 接続したいDB名")
for row in cur:
item_count += 1
logger.info(row)
return "Added %d items from RDS MySQL table" %(item_count)
- lambda で接続するために pymysql をインストールする
pip install PyMySQL -t /任意のフォルダ/lambda_app
>ls
- pymysql
- PyMySQL-0.7.11.dist-info
この時、 app.py と同じ階層にファイルが無いとだめ
- lambda 用に zip で固める
>zip -r ../app.zip *
これで完了。
設定など
作成した zip ファイルを AWS Lambda にアップロードをする.
python2.7 を選択する必要がある。
ハンドラは、上記の例だと app.handler となる。
正しくは、実行ファイル名+'.'+実行関数名である。
この時、 ロールには Basic with VPC を設定する必要がある。
詳細設定で、VPC の設定をする。
接続する RDB 側と Lambda のセキュリティグループに from-vpc を設定する。←結構ここで詰んだ