使用 CloudWatch Logs 記錄 Step Functions 中的執行歷史記錄 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 CloudWatch Logs 記錄 Step Functions 中的執行歷史記錄

標準工作流程會在 中記錄執行歷史記錄 AWS Step Functions,但您可以選擇設定記錄至 Amazon CloudWatch Logs。

快速工作流程與標準工作流程不同,它不會在 AWS Step Functions中記錄執行歷史記錄。若要查看快速工作流程的執行歷史記錄和結果,您必須設定記錄至 Amazon CloudWatch Logs。發佈日誌不會阻擋執行或降低執行速度。

注意

當您設定記錄時,CloudWatch Logs 會收取費用,而且會按照結束的日誌費率向您收費。如需詳細資訊,請參閱 CloudWatch 定價頁面上日誌索引標籤下的已修改日誌

設定 記錄

當您使用 Step Functions 主控台建立標準工作流程時,該狀態機器將不會設定為將日誌傳送至 CloudWatch Logs。當您使用 Step Functions 主控台建立快速工作流程時,預設會將該狀態機器設定為將日誌傳送至 CloudWatch Logs。

對於 Express 工作流程,Step Functions 可以使用 CloudWatch Logs 的必要 AWS Identity and Access Management (IAM) 政策來建立角色。如果您使用 API、CLI 或 建立標準工作流程或快速工作流程 AWS CloudFormation,Step Functions 預設不會啟用記錄,而且您需要確保您的角色具有必要的許可。

對於從主控台啟動的每個執行,Step Functions 會提供 CloudWatch Logs 的連結,以正確的篩選條件設定來擷取該執行特定的日誌事件。

您可以選擇性地設定客戶受管 AWS KMS 金鑰來加密您的日誌。如需詳細資訊和許可設定靜態資料加密,請參閱 。

若要設定記錄,您可以在使用 CreateStateMachineUpdateStateMachine 時傳遞 LoggingConfiguration 參數。您可以使用 CloudWatch Logs Insights 進一步分析 CloudWatch Logs 中的資料。如需詳細資訊,請參閱搭配 CloudWatch Logs Insights 分析日誌資料

CloudWatch Logs 承載

執行歷史記錄事件在其定義中可能包含輸入或輸出屬性。如果傳送至 CloudWatch Logs 的逸出輸入或逸出輸出超過 248 KiB,則會因為 CloudWatch Logs 配額而截斷。

用於記錄至 CloudWatch Logs 的 IAM 政策

您也需要設定狀態機器的執行 IAM 角色,以擁有記錄至 CloudWatch Logs 的適當許可,如下列範例所示。

IAM 政策範例

下列是您可用來設定許可的範例政策。如下列範例所示,您需要在 欄位中指定 *Resource。CloudWatch API 動作,例如 CreateLogDelivery 和 DescribeLogGroups,不支援 定義的資源類型Amazon CloudWatch Logs。如需詳細資訊,請參閱 定義的動作Amazon CloudWatch Logs

  • 如需 CloudWatch 資源的相關資訊,請參閱《Amazon CloudWatch 使用者指南》中的CloudWatch Logs資源和操作

  • 如需設定傳送日誌至 CloudWatch Logs 所需許可的相關資訊,請參閱 區段中的使用者許可,標題為傳送至 的日誌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 Logs 的狀態機器記錄進行故障診斷

如果您的狀態機器無法將日誌傳送至 CloudWatch Logs,請嘗試下列步驟:

  1. 確認狀態機器的執行角色具有記錄到 CloudWatch Logs 的許可。

    當您呼叫 CreateStateMachineUpdateStateMachine API 端點時,請確定 roleArn 參數中指定的 IAM 角色提供必要的許可,如上述 IAM 政策範例所示。

  2. 驗證 CloudWatch Logs 資源政策不超過 5,120 個字元限制。

    如果政策超過字元限制,請將您的日誌群組名稱加上 字首/aws/vendedlogs/states,以將許可授予狀態機器並避免限制。當您在 Step Functions 主控台中建立日誌群組時,建議的日誌群組名稱已加上 的字首/aws/vendedlogs/states。如需記錄最佳實務的詳細資訊,請參閱 CloudWatch Logs 資源政策大小限制

Step Functions 執行事件的日誌層級

日誌層級範圍從 ALLERRORFATALOFF。會記錄 的所有事件類型ALL,設定為 時不會記錄任何事件類型OFF。針對 ERRORFATAL,請參閱下表。

如需根據這些日誌層級顯示快速工作流程執行之執行資料的詳細資訊,請參閱標準和快速主控台體驗差異

事件類型 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 已記錄 未記錄 未記錄 未記錄