/// <summary> /// 指定されたログファイルをRDSからダウンロードし、指定されたタイムスタンプでファイルを作成します。 /// </summary> /// <param name="download_log_file_name">RDSからダウンロードするファイル名</param> /// <param name="save_log_file_name">保存するログファイル名</param> /// <param name="dt_timestamp">ログファイルにセットするタイムスタンプ</param> private void get_log_data(string download_log_file_name, string save_log_file_name, DateTime dt_timestamp) { bool additional_data_pending = true; //続きのデータがあるかのフラグ string marker = "0:0"; //取得するデータの区切り文字 int number_of_lines = 0; //取得する先頭ブロック指定 //ファイルに保存 using (StreamWriter sw = new StreamWriter(save_log_file_name, true)) { while (additional_data_pending) { DownloadDBLogFilePortionRequest request = new DownloadDBLogFilePortionRequest(); DownloadDBLogFilePortionResponse ret; request.DBInstanceIdentifier = db_instance_identifier; request.LogFileName = download_log_file_name; request.Marker = marker; request.NumberOfLines = number_of_lines; ret = rds_client.DownloadDBLogFilePortion(request); //ファイル書き込み if (ret.LogFileData != null) { sw.Write(ret.LogFileData); } additional_data_pending = ret.AdditionalDataPending; //続きのデータがあるかのフラグ marker = ret.Marker; //続きのデータを区切るマーカーセット } } //タイムスタンプ更新 File.SetCreationTime(save_log_file_name, dt_timestamp); File.SetLastWriteTime(save_log_file_name, dt_timestamp); }
public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonRDSConfig config = new AmazonRDSConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonRDSClient client = new AmazonRDSClient(creds, config); DownloadDBLogFilePortionResponse resp = new DownloadDBLogFilePortionResponse(); do { DownloadDBLogFilePortionRequest req = new DownloadDBLogFilePortionRequest { Marker = resp.Marker , NumberOfLines = maxItems }; resp = client.DownloadDBLogFilePortion(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.LogFileData) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.Marker)); }