はじめに
Aurora PostgreSQL DB クラスター からデータをクエリし、Amazon S3 バケットに保存されているファイルに直接エクスポートできます。そのために、Aurora PostgreSQL によって提供される aws_s3 PostgreSQL 拡張機能を使用します。
参考
ソースコードのみの紹介となりますが、実行するためには以下の設定が必要です
・postgresにアクセスするためにLambdaをpostgresと同じサブネットに配置するか、通信できるサブネット(SG、ACLの設定)には配置が必要
・VPC内でLambdaを実行するためのロール設定
・postgresからS3へアップロードするためのIAMポリシーの設定
コード
import psycopg2
def lambda_handler(event.context):
URL = (host='',DB='',username='',password='')
query = 'select * from remindtable'
s3_uri = SELECT aws_commons.create_s3_uri('sample-bucket','sample-filepath','ap-northeast-1')
query = SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', s3_uri, options :='format text');
with psycopg2.connect(URL) as conn:
with conn.cursor() as cur:
cur.execute(query)
cur.fetchall()
(参考)
psycopg2をLambdaで使用する方法は、こちら
postgresにログインして投げるクエリをLambdaから実行しているだけです。
また、s3_uriでアップロード先のバケットとフォルダ、ファイル名を指定しています。
(既存のものは上書かれ、ない場合は新規に作成されます)
#最後に
aws_s3 PostgreSQL 拡張機能をLambdaから実行する方法をまとめてみました。
かなり省略してまとめましたが、ご不明あればご指摘ください。
どなたかのご参考になれば幸いです。