LoginSignup
4
2

More than 5 years have passed since last update.

【AWS Lambda】python で VPC mysql に接続する【mac】

Last updated at Posted at 2017-09-15

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 を設定する。←結構ここで詰んだ

4
2
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
4
2