この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Step Functionsにアップデートがあり、標準ワークフローでCloudWatch Logsの出力がサポートされました!
Expressワークフローでは、CloudWatch Logsがサポートされていましたが、今回のアップデートで標準ワークフローでもサポートされた感じです。
早速試してみたいと思います!なお、CloudWatch Logsへの出力確認を目的にしたエントリとなりますので、ステートマシンの作成等については割愛しています。
前提
- CloudWatch Logsへの出力は、ステートマシンのIAMロールにログ出力権限が必要になります
やってみた
標準ワークフローの設定を確認すると「ログ記録の設定」が追加されています。
ログレベルのプルダウンを展開すると、複数のログレベルがリストされます。
ログレベルはALL
、ERROR
、FATAL
がありレベルに応じ出力内容が変化します。ログレベルに応じ、ステートマシンで発生するイベントのどれが出力されるかは以下ドキュメントに記載があります。
今回は、ログレベルALL
とERROR
で動作を確認してみたいと思います。
ログレベル:ALL
実行データを含める
先ずはログレベルはALL
で、実行データを含めるように設定しました。
ステートマシンを実行します。
% aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloWorld \
--name test1 \
--input "{\"Comment\" : \"test1\"}"
{
"executionArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:execution:HelloWorld:test1",
"startDate": 1582713308.723
}
正常終了しました。
CloudWatch Logsにログが出力されました。
ログレベルがALL
なので、全てのイベントタイプが記録され、実行履歴と同じステップが記録されました。
ログについてはStep Functionsのコンソールからも確認することができました。
実行データを含めない
ログレベルALL
のまま、実行データを含めない形で設定してログの出力を確認したいと思います。
ステートマシンを実行します。
% aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloWorld \
--name test2 \
--input "{\"Comment\" : \"test2\"}"
{
"executionArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:execution:HelloWorld:test2",
"startDate": 1582714000.41
}
正常終了しました。
先程のログでは実行時に指定したインプットデータがロギングされていましたが、今回出力されたログには実行データが含まれていないことが確認できました。
ログレベル:ERROR
続いてはログレベルをERROR
に変えて確認してみたいと思います。
ステートマシンから呼び出しされるLambda FunctionでExceptionを仕込み、ステートマシンを実行しました。
% aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloWorld \
--name test3 \
--input "{\"Comment\" : \"test3\"}"
{
"executionArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:execution:HelloWorld:test3",
"startDate": 1582714919.929
}
異常終了しました。下記、赤枠がERROR
レベルのロギング対象イベントです。
想定どおりLambdaFunctionFailed
と、ExecutionFailed
イベントのみロギングされました。
さいごに
ステートマシンの実行履歴の最大保持期間は90日でしたが、今回のアップデートにより長期保持が可能になったと思います。 また、CloudWatch Logsに出力することで、他サービスと組み合わせたログの分析等が実施しやすくなるのではないでしょうか。