RDSのログをダウンロードするには、REST APIで取得しますが、一日経過したログはローテーションされて削除されます。
長期保存するには、定期的にS3にダウンロードする仕組みが必要。
そのまま使えるLambda functionが下記に公開されていました。
AWS Lambda function to export Amazon RDS MySQL Query Logs to S3
上記は差分更新に対応していない、圧縮対応とか改良してくれるスクリプトが公開されていました。(python 3対応)
https://github.com/om732/rdslogs2s3
Cloudwatch Eventsのスケジュールで定期起動するには、複数RDSのログを環境変数より変数のほうが都合がいいので両者を組み合わせてスクリプトを作成しました。
https://github.com/webse/rdslog_s3
また、ansibleからLambda functionsもデプロイすることができます。
- hosts: localhost
tasks:
- name: looped creation
lambda:
name: '{{ item.name }}'
state: present
zip_file: '{{ item.zip_file }}'
runtime: 'python3.6'
role: 'arn:aws:iam::xxxxxxxxxxxx:role/role-test-dv-rdslog'
handler: 'rdslog2s3.lambda_handler'
region: ap-northeast-1
with_items:
- name: rdslog2s3-test
zip_file: rdslog2s3.zip