kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS Chatbot で AWS Lambda 関数の集約したロググループからログを取得する

AWS Lambda 関数の Errors メトリクスなどを Amazon CloudWatch Alarm でモニタリングして,エラー発生時に Amazon SNS と AWS Chatbot を組み合わせて Slack に通知すると Show error logs ボタンと Show logs ボタンが表示される✅ そして AWS Chatbot に権限を与えておくと,Amazon CloudWatch Logs から関連したログを Slack 上で取得できる.エラー発生時に迅速にエラー詳細を把握できるのは便利だと思う👌

Amazon CloudWatch Logs ロググループに注意する

便利な Show error logs ボタンと Show logs ボタンは AWS Lambda 関数のデフォルトの Amazon CloudWatch Logs ロググループ /aws/lambda/xxx を前提に作られている点は注意しておくと良いと思う.ドキュメントには直接明記されていなかった(見つけられなかった)けど,挙動からそう判断した.

具体的には,2023年11月にリリースされた AWS Lambda 関数の「高度なログ制御機能」を活用して,任意の Amazon CloudWatch Logs ロググループに集約している AWS Lambda 関数でボタンを押すと I can't get the logs for the CloudWatch Alarm sandbox-errors-alarm for you because I cannot find the log group /aws/lambda/sandbox for sandbox. というエラーが出て使えなかった(sandbox-errors-alarm は Amazon CloudWatch Alarm 名 / sandbox は AWS Lambda 関数名).

aws.amazon.com

@aws コマンドを使う

ボタンを押すよりも面倒ではあるけど,ワークアラウンドとして Slack 上で直接 @aws logs filter-log-events コマンドを実行すれば,簡易的に AWS Lambda 関数のエラー詳細を把握できる.AWS Chatbot から You can also run the query directly using the following command としてコマンド例を出してくれていたため,参考にしながら作ってみた.

ポイントを箇条書きで載せておく📝

  • --log-group-name に Amazon CloudWatch Logs ロググループを指定する
  • --log-stream-name-prefix に Amazon CloudWatch Logs ログストリームを指定する
  • --start-time--end-time に Unix Timestamp (Milliseconds) を指定する
@aws logs filter-log-events --region ap-northeast-1 --log-group-name aggregated-function-logs --log-stream-name-prefix 2024/04/12/sandbox[$LATEST] --start-time 1712883000000 --end-time 1712883300000

その他のオプションも活用する場合は CLI ドキュメントを参考で👌

awscli.amazonaws.com

そして @aws コマンドを使って AWS Chatbot 経由でログを取得できた.

まとめ

AWS Lambda 関数で任意の Amazon CloudWatch Logs ロググループに集約してる場合は Slack 上で AWS Chatbot の Show error logs ボタンと Show logs ボタンが使えず,今回は @aws コマンドを使ってワークアラウンドを試してみた.とは言え,正直エラー発生時に @aws コマンドを作るのは面倒ではあるため,本格的に実現するなら「カスタム Lambda アクション (Custom Lambda Action)」を実装する必要がありそう.あと @aws コマンドの引数が多くなければ「カスタム CLI アクション (Custom CLI Action)」を使う案もありそう.

docs.aws.amazon.com

docs.aws.amazon.com

関連記事

kakakakakku.hatenablog.com