概要
CDKでdeployしたLambdaをローカルPCからAWS CLI(version 2)でコマンドラインから実行して結果ログを確認することがあり、これまでは
- AWS CLIでLambdaをInvoke
- AWS CLIでCloudWatch Logsの直近実行ログを出力
をおこなっていた。
この方法だとログ出力までに若干タイムラグがあるのと、CloudWatchのログはLambda名で検索するため実行したLambdaの結果ログが一意に定まらないのが若干気になっていた。
単純に知らなかっただけではあるのだが、ドキュメントを見たらコマンドラインから実行してそのまま結果ログを標準出力することが可能だったので、やり方とコマンドをまとめておく。
やり方
-
--log-type Tail
を指定 - 中身の
LogResult
をデコードして出力
参考:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-awscli.html
コマンド
実行してログを標準出力
aws lambda invoke --region ap-northeast-1 --function-name ${Lambda名} out --log-type Tail --query 'LogResult' --output text | base64 -d
実行してログを標準出力(AWSプロファイル指定)
aws lambda invoke --profile ${AWSプロファイル名} --function-name ${Lambda名} out --log-type Tail --query 'LogResult' --output text | base64 -d
実行してログを標準出力(AWSプロファイル指定、Lambdaに渡すパラメータあり)
aws lambda invoke --profile ${AWSプロファイル名} --function-name ${Lambda名} --payload `echo -n '{"param1": "hoge", "param2": "huga"}' | base64` out --log-type Tail --query 'LogResult' --output text | base64 -d
プロファイルは AWS_PROFILE=${プロファイル名}
の環境変数渡しも可能