cloudpack磯辺です。

Amazon RDSは、ログを直接参照できないので、APIを使ってログをダウンロードすることができる。AWS Management Consoleでdownloadボタンをポチポチ押してダウンロードすることもできるが、大量にあるログを一気に取得したかったので、スクリプトを作った。

githubで公開してます。https://github.com/muramasa64/rds-log-downloader

いくつかハマるポイントがあった。

download_db_log_file_portionを実行するときのmarkerの初期値は0を指定する

ログファイルのサイズが大きい場合は、一度のAPI呼び出しで全て取得できない。続きがある場合は、レスポンスにmarkerという値が返ってくるので、次の呼び出し時に渡してあげると、続きを取得することができる。

当初は特に値を渡さずに実行していたのだが、その場合は最初からではなくて途中から最後までが取得できるようで、最初が取得できなかった。最初から取得したい場合は、markerを0にすればよい。

describe_db_log_filesのfile_last_writtenには、ミリ秒単で指定する

ファイル一覧を取得する際に、フィルタの条件で、最後に更新された日時を指定するfile_last_writtenオプションがあるのだが、この値の単位はミリ秒である。Rubyで、Time.to_iを実行すると取得できる値は秒単位であるため、1000倍した値を渡すようにしている。

元記事は、こちら