デバッグの時などに何かエラー起きてないかな?とCloudWatchのログを検索したい時ないですか?
ロググループ名は分かってるけど、ログストリームが大量に生成されるし、複数リージョンにまたがっていて
一つ一つ見ていくのはキツイ...
という時に私は以下のようなコマンドで調べています。
$ log_group_name=<your log group name>
$ pattern=<keyword you want to find>
$ aws ec2 describe-regions | jq '.Regions[].RegionName' | xargs -n 1 -J % aws logs filter-log-events --log-group-name $log_group_name --start-time `date -v-1d +%s` --filter-pattern $pattern --region % | jq '.events'
例えばpattern=START
にした場合の出力はこんな感じです。
何もなかったリージョンは[]だけがでます。
[]
[
{
"logStreamName": "2019/04/05/[$LATEST]4167bbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"timestamp": 1554444422379,
"message": "START RequestId: 2340bbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb Version: $LATEST\n",
"ingestionTime": 1554444422398,
"eventId": "3466526898875119217066662794167bbbbbbbbbbbbbbbbbbbbbbbbbbbb"
},
{
"logStreamName": "2019/04/05/[$LATEST]4167e179faaaaaaaaaaaaaaaaaaaaaa",
"timestamp": 1554444427564,
--start-time
date -v-1d +%s
これは現在時刻の1日前からのログを対象にするという意味です。
私はMacを使っているので、こんな感じのdateコマンドのオプションになります。
他については以下のqiita記事で触れられていました。
https://qiita.com/hid_tgc/items/a82e00112a3683ede528
以上、ちょいネタでした。