AWS Lambda で Amazon Redshift から S3 に UNLOAD してみたメモ。
セットアップ手順
- Redshift クラスターを作成する。
- S3バケットを作成する。
- s3://redshift-unload-by-lambda
- GitHub - jkehler/awslambda-psycopg2 をダウンロードする。
- lambda_function.py
import psycopg2 def lambda_handler(event, context): conn = psycopg2.connect( host="redshift-dc2l-1node.************.ap-northeast-1.redshift.amazonaws.com", dbname="dev", port="5439", user="awsuser", password="********" ) unload_template = "UNLOAD ('{query}') TO 's3://redshift-unload-by-lambda/' iam_role 'arn:aws:iam::123456789012:role/redshift-role' delimiter ',' allowoverwrite;" query = unload_template.format(query="select relname,reltype,relowner from pg_class") print query cur = conn.cursor() cur.execute(query) cur.close() conn.close()
- Lambda 関数と psycopg2 を圧縮する。
- GitHub - jkehler/awslambda-psycopg2 以下の psycopg2
$ ls -1 lambda_function.py psycopg2 $ zip -r lambda_function.zip ./*