🤖
AWS CLIを使用してログストリームを取得する
初めに
AWS API CloudWatchのログストリームをAWS CLIで参照する方法を調べましたのでまとめました。
コマンド
基本
実行
aws logs filter-log-events --profile {プロファイル} --log-group-name "{ロググループ名}" --log-stream-names "{ログストリーム名}"
実行結果
{
"events": [
{
"logStreamName": "logStreamName",
"timestamp": 1737597288549,
"message": "message",
"ingestionTime": 1737597318148,
"eventId": "eventId1"
},
{
"logStreamName": "logStreamName",
"timestamp": 1737597298074,
"message": "message",
"ingestionTime": 1737597318148,
"eventId": "eventId2"
}
],
"searchedLogStreams": []
}
取得するログのタイムスタンプを指定する
指定した時間以降のログ取得
オプションで--start-time {タイムスタンプのエポックミリ秒}
を指定すると、timestampが指定した時間以降のログを取得します。
aws logs filter-log-events --profile {プロファイル} --log-group-name "{ロググループ名}" --log-stream-names "{ログストリーム名}" --start-time 1737597288550
{
"events": [
{
"logStreamName": "logStreamName",
"timestamp": 1737597298074,
"message": "message",
"ingestionTime": 1737597318148,
"eventId": "eventId"
}
],
"searchedLogStreams": []
}
指定した時間以前のログ取得
オプションで--end-time {タイムスタンプのエポックミリ秒}
を指定すると、timestampが指定した時間以下のログを取得します。
aws logs filter-log-events --profile {プロファイル} --log-group-name "{ロググループ名}" --log-stream-names "{ログストリーム名}" --end-time 1737597298073
{
"events": [
{
"logStreamName": "logStreamName",
"timestamp": 1737597288549,
"message": "message",
"ingestionTime": 1737597318148,
"eventId": "eventId"
}
],
"searchedLogStreams": []
}
範囲指定
--start-time
および--end-time
の両方を指定することで、範囲内のログデータを取得できます。
aws logs filter-log-events --profile {プロファイル} --log-group-name "{ロググループ名}" --log-stream-names "{ログストリーム名}" --start-time {from タイムスタンプのエポックミリ秒} --end-time {to タイムスタンプのエポックミリ秒}
参考資料
AWS CLI Command Reference - filter-log-events
最後に
いかがでしたでしょうか。
他にもログの出力形式を変更する--output
等があります。
ログの量が多い場合などは>
で一旦ファイルに出力してから見てみるのも良いかもしれません。
Discussion