RDS / Aurora のログファイルを分割せず一括で取得する方法を教えてください
困っている内容
RDS / Aurora のログファイルを DownloadDBLogFilePortion API で取得しているが、1 回の呼び出しで最大 1MB しか取得できないため、大容量のログ取得に苦労している。
ログファイルを分割せず一括で取得する方法はないか知りたい。
どう対応すればいいの?
REST エンドポイント downloadCompleteLogFile を利用することで、ログファイルを分割せず一括でストリーム取得できます。
※本ブログ執筆時点では、各 AWS SDK には対応するメソッドが実装されていないものの、正式な機能のため利用上問題ありません。
downloadCompleteLogFile を利用するには、SigV4 署名付きの HTTPS GET リクエストを実装する必要があります。
試してみた
Kiro で Python(boto3)で実行するためのコードを生成し、実行してみました。
【コード例】
import boto3
from botocore.auth import SigV4Auth
from botocore.awsrequest import AWSRequest
import requests
region = "ap-northeast-1"
db_instance = "your-db-instance"
log_file = "error/postgresql.log.2026-07-31-08"
session = boto3.Session(region_name=region)
credentials = session.get_credentials().get_frozen_credentials()
url = f"https://rds.{region}.amazonaws.com/v13/downloadCompleteLogFile/{db_instance}/{log_file}"
request = AWSRequest(method="GET", url=url)
SigV4Auth(credentials, "rds", region).add_auth(request)
response = requests.get(url, headers=dict(request.headers))
print(response.text)
【実行結果】
Status: 200
2026-07-31 08:47:02 UTC::@:[1334]:LOG: starting PostgreSQL 18.3 on aarch64-unknown-linux-gnu, compiled by aarch64-unknown-linux-gnu-gcc (GCC) 12.4.0, 64-bit
2026-07-31 08:47:02 UTC::@:[1334]:LOG: listening on IPv4 address "0.0.0.0", port 5432
2026-07-31 08:47:02 UTC::@:[1334]:LOG: listening on IPv6 address "::", port 5432
2026-07-31 08:47:03 UTC::@:[1338]:LOG: database system was shut down at 2026-02-23 21:13:44 UTC
2026-07-31 08:47:03 UTC::@:[1334]:LOG: database system is ready to accept connections
...
量が多いため全ては本ブログに記載できませんが、正しくログ内容を一括で取得できることを確認しました。
参考資料







