LoginSignup
9
4

More than 3 years have passed since last update.

Amazon CloudWatch Logsにおける任意のログストリームページのURLを動的に生成する

Last updated at Posted at 2020-10-27

はじめに

CloudWatch Logsと言えば、AWSを使っている人は必ずと言っていいほどお世話になるログ管理のサービスです。
サービス自体はシンプルでとても便利なんですが、なぜかURLがちょっと特殊な作りになっていて、僕自身、任意のログストリームページのURLを動的に生成しようとしたとき「ん?これどうなってんの・・・?」とはじめは戸惑いました。

ちょっとしたTips程度ですが、同様のことで悩んでいる人がいるかもなので記事にしておきます。

CloudWatch LogsのURL構造はどうなっているか

URLは以下のようになっています。
ちなみにhoge-lambdaというLambdaを実行したときのログストリームのものです。

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logsV2:log-groups/log-group/$252Faws$252Flambda$252Fhoge-lambda/log-events/2020$252F10$252F27$252F$255B$2524LATEST$255D542bf48a98944249b069342e12861b99

分かりやすくするために、以下のようにURLを分解してみます。
こうすると定型部分 + ロググループ名 + 定型部分 + ログストリーム名の構造になっていることが分かります。

1. 定型部分
https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logsV2:log-groups/log-group/

2. ロググループ名
$252Faws$252Flambda$252Fhoge-lambda

3. 定型部分
/log-events/

4. ログストリーム名
2020$252F10$252F27$252F$255B$2524LATEST$255D542bf48a98944249b069342e12861b99

ロググループ名・ログストリーム名はURLエンコードされている

次に、ロググループ名とログストリーム名に注目します。
コンソール画面から正しいロググループ名とログストリーム名を引っ張ってきてそれぞれを比較してみます。

正しいロググループ名
/aws/lambda/hoge-lambda

URLに含まれているロググループ名
$252Faws$252Flambda$252Fhoge-lambda
正しいログストリーム名
2020/10/27/[$LATEST]542bf48a98944249b069342e12861b99

URLに含まれているログストリーム名
2020$252F10$252F27$252F$255B$2524LATEST$255D542bf48a98944249b069342e12861b99

上記を見比べると、それぞれ以下のように変換されていることが分かりました。
しかし、この変換をするようなエンコード方式ってどんなだろう・・・となります。

/ -> $252F
[ -> $255B
$ -> $2524
] -> $255D

これ、実はURLエンコードを2回実施されているんです。
途中経過も含めると以下のように変換されています。

   1発目    2発目
/ -> %2F -> $252F
[ -> %5B -> $255B
$ -> %24 -> $2524
] -> %5D -> $255D

つまり、CloudWatch Logsで使われているURLは以下のように作られていることが分かります。

定型部分 + URLエンコードを2回実施したロググループ名 + 定型部分 + URLエンコードを2回実施したログストリーム名

まとめ

重要なのは、ロググループ名とログストリーム名の部分のみをURLエンコード×2回実施すればいいという点だけです。
ここさえ抑えておけば、あとは定型部分と結合するだけで動的にURLが生成できるので簡単ですね。

CloudWatch LogsのSubscription Filterなどを使ってログ監視を実装するのはよくあるユースケースかと思いますが、アラート通知する内容に生成したログストリームページのURLを埋め込んであげると、エラー発生時のログ確認が素早くできるようになるので個人的にオススメです。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4