在 Step Functions 中使用 CloudWatch 日志记录执行历史记录 - AWS Step Functions

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Step Functions 中使用 CloudWatch 日志记录执行历史记录

标准工作流程在中记录执行历史记录 AWS Step Functions,但您可以选择配置对 Amazon 日志的 CloudWatch 日志记录。

与标准工作流程不同,Express Workflows 不记录执行历史记录 AWS Step Functions。 要查看 Express 工作流程的执行历史和结果,您必须配置对 Amazon Logs 的 CloudWatch 日志记录。发布日志不会阻止或减慢执行速度。

注意

配置日志记录时,将收取CloudWatch 日志费用,并按已售日志费率计费。有关更多信息,请参阅 “ CloudWatch 定价” 页面上 “” 选项卡下的 Ven ded Logs。

配置日志记录

使用 Step Functions 控制台创建标准工作流程时,该状态机不会配置为向日志发送 CloudWatch 日志。使用 Step Functions 控制台创建 Express Workflow 时,该状态机将默认配置为向日志发送 CloudWatch 日志。

对于 Express 工作流程,Step Functions 可以创建具有必要功能的角色 AWS Identity and Access Management (IAM) CloudWatch 日志策略。如果您使用、或创建了标准工作流程或快速工作流程 API CLI AWS CloudFormation,Step Functions 默认不启用日志记录,您需要确保自己的角色具有必要的权限。

对于从控制台启动的每次执行,Step Functions 都会提供一个指向 CloudWatch 日志的链接,该链接配置了正确的过滤器,用于获取特定于该执行的日志事件。

您可以选择配置客户托管 AWS KMS 加密日志的密钥。静态数据加密有关详细信息和权限设置,请参阅。

要配置日志记录,可以在使用CreateStateMachine或时传递LoggingConfiguration参数UpdateStateMachine。您可以使用 Logs Insights 进一步分析 CloudWatch CloudWatch 日志中的数据。有关更多信息,请参阅使用 Log CloudWatchs Insights 分析日志数据

CloudWatch 记录有效负载

执行历史事件的定义中可能包含输入或输出属性。如果发送到 CloudWatch 日志的转义输入或转义输出超过 248KB,则会由于日志配额而被截断。 CloudWatch

IAM登录 CloudWatch 日志的策略

您还需要将状态机的执行IAM角色配置为具有登录日志的适当权限, CloudWatch 如以下示例所示。

IAM策略示例

以下是可用于配置权限的示例策略。如以下示例所示,您需要在Resource字段中指定 *。 CloudWatch API诸如 CreateLogDelivery 和 DescribeLogGroups之类的操作不支持由定义的资源类型 Amazon CloudWatch Logs。 有关更多信息,请参阅由定义的操作 Amazon CloudWatch Logs.

  • 有关信息 CloudWatch 资源,请参阅 CloudWatch Logs Amazon CloudWatch 用户指南中的资源和操作。

  • 有关设置向日志发送日志所需的权限的信息,请参阅标题为 “发送到 CloudWatch 的日志” 部分中的用户权限 CloudWatch Logs.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:CreateLogStream", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutLogEvents", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
对状态机登录 CloudWatch 日志进行故障排除

如果您的状态机无法将日志发送到 CloudWatch 日志,请尝试以下步骤:

  1. 验证您的状态机的执行角色是否有权登录到 CloudWatch 日志。

    当您调用CreateStateMachineUpdateStateMachineAPI终端节点时,请确保roleArn参数中指定的IAM角色提供必要的权限,如前面的IAM策略示例所示。

  2. 验证 CloudWatch 日志资源策略不超过 5,120 个字符的限制。

    如果策略超过字符限制,请在日志组名称前加上前缀/aws/vendedlogs/states,以向状态机授予权限并避免该限制。在 Step Functions 控制台中创建日志组时,建议的日志组名称已经带有/aws/vendedlogs/states前缀。有关日志记录最佳做法的更多信息,请参阅CloudWatch 日志资源策略大小限制

Step Functions 执行事件的日志级别

日志级别的范围从ALLERRORFATALOFF。将记录所有事件类型ALL,设置为时不记录任何事件类型OFF。对于 ERRORFATAL,请参阅下表。

有关根据这些日志级别为快速工作流执行显示的执行数据的更多信息,请参阅标准版和 Express 主机体验差异

事件类型 ALL ERROR FATAL OFF

ChoiceStateEntered

已记录 未登录 未登录 未登录

ChoiceStateExited

已记录 未登录 未登录 未登录

ExecutionAborted

已记录 已记录 已记录 未登录

ExecutionFailed

已记录 已记录 已记录 未登录

ExecutionStarted

已记录 未登录 未登录 未登录

ExecutionSucceeded

已记录 未登录 未登录 未登录

ExecutionTimedOut

已记录 已记录 已记录 未登录

FailStateEntered

已记录 已记录 未登录 未登录

LambdaFunctionFailed

已记录 已记录 未登录 未登录
LambdaFunctionScheduled 已记录 未登录 未登录 未登录

LambdaFunctionScheduleFailed

已记录 已记录 未登录 未登录

LambdaFunctionStarted

已记录 未登录 未登录 未登录

LambdaFunctionStartFailed

已记录 已记录 未登录 未登录

LambdaFunctionSucceeded

已记录 未登录 未登录 未登录

LambdaFunctionTimedOut

已记录 已记录 未登录 未登录

MapIterationAborted

已记录 已记录 未登录 未登录

MapIterationFailed

已记录 已记录 未登录 未登录

MapIterationStarted

已记录 未登录 未登录 未登录

MapIterationSucceeded

已记录 未登录 未登录 未登录

MapRunAborted

已记录 已记录 未登录 未登录

MapRunFailed

已记录 已记录 未登录 未登录

MapStateAborted

已记录 已记录 未登录 未登录

MapStateEntered

已记录 未登录 未登录 未登录

MapStateExited

已记录 未登录 未登录 未登录

MapStateFailed

已记录 已记录 未登录 未登录

MapStateStarted

已记录 未登录 未登录 未登录

MapStateSucceeded

已记录 未登录 未登录 未登录

ParallelStateAborted

已记录 已记录 未登录 未登录

ParallelStateEntered

已记录 未登录 未登录 未登录

ParallelStateExited

已记录 未登录 未登录 未登录
ParallelStateFailed 已记录 已记录 未登录 未登录

ParallelStateStarted

已记录 未登录 未登录 未登录

ParallelStateSucceeded

已记录 未登录 未登录 未登录

PassStateEntered

已记录 未登录 未登录 未登录

PassStateExited

已记录 未登录 未登录 未登录

SucceedStateEntered

已记录 未登录 未登录 未登录

SucceedStateExited

已记录 未登录 未登录 未登录

TaskFailed

已记录 已记录 未登录 未登录

TaskScheduled

已记录 未登录 未登录 未登录
TaskStarted 已记录 未登录 未登录 未登录

TaskStartFailed

已记录 已记录 未登录 未登录

TaskStateAborted

已记录 已记录 未登录 未登录

TaskStateEntered

已记录 未登录 未登录 未登录
TaskStateExited 已记录 未登录 未登录 未登录
TaskSubmitFailed 已记录 已记录 未登录 未登录
TaskSubmitted 已记录 未登录 未登录 未登录
TaskSucceeded 已记录 未登录 未登录 未登录
TaskTimedOut 已记录 已记录 未登录 未登录
WaitStateAborted 已记录 已记录 未登录 未登录
WaitStateEntered 已记录 未登录 未登录 未登录
WaitStateExited 已记录 未登录 未登录 未登录