You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Step Functions直接调用CloudWatch?在fallback状态上报指标

如何从Step Function直接调用CloudWatch发送指标?

你有一个用于捕获Glue任务故障的Step Function,当Glue任务失败时会触发fallback状态,当前状态机定义如下:

{"Comment": "A Hello World example demonstrating various state types of the Amazon States Language","StartAt": "Parallel State","States": {"Parallel State": {"Comment": "A Parallel state can be used to create parallel branches of execution in your state machine.","Type": "Parallel","Branches": [{"StartAt": "Wait","States": {"Wait": {"Type": "Wait","Seconds": 500,"Next": "Glue StartJobRun SUCCESS"},"Glue StartJobRun SUCCESS": {"Type": "Task","Resource": "arn:aws:states:::glue:startJobRun.sync","Parameters": {"JobName": "job_success"},"End": true,"Credentials": {"RoleArn": "arn:aws:iam::094815468753:role/glue_test"}}}},{"StartAt": "Glue StartJobRun FAIL","States": {"Glue StartJobRun FAIL": {"Type": "Task","Resource": "arn:aws:states:::glue:startJobRun.sync","Catch": [{"ErrorEquals": ["States.TaskFailed"],"Next": "fallback"}],"Parameters": {"JobName": "job_fail"},"End": true,"Credentials": {"RoleArn": "arn:aws:iam::094815468753:role/glue_test"}},"fallback": {"Type": "Pass","Result": "ERROR HERE","End": true}}}]},"Pass": {"Type": "Pass","End": true}}}

要在fallback状态触发时向CloudWatch发送指标数据,可按以下步骤操作:

1. 为Step Function使用的IAM角色添加CloudWatch权限

修改角色arn:aws:iam::094815468753:role/glue_test的权限策略,添加允许调用cloudwatch:PutMetricData的语句,示例策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*"
        }
    ]
}

2. 将fallback状态改为Task类型,调用CloudWatch API

把原来的Pass类型替换为Task类型,使用Step Function集成的AWS SDK资源直接调用CloudWatch的PutMetricData接口,对应的资源ARN为arn:aws:states:::aws-sdk:cloudwatch:putMetricData。修改后的fallback状态定义如下:

"fallback": {
    "Type": "Task",
    "Resource": "arn:aws:states:::aws-sdk:cloudwatch:putMetricData",
    "Parameters": {
        "Namespace": "GlueJobFailures",
        "MetricData": [
            {
                "MetricName": "JobFailureCount",
                "Value": 1,
                "Unit": "Count",
                "Dimensions": [
                    {
                        "Name": "JobName",
                        "Value": "job_fail"
                    }
                ]
            }
        ]
    },
    "End": true,
    "Credentials": {
        "RoleArn": "arn:aws:iam::094815468753:role/glue_test"
    }
}

3. 完整的状态机定义

整合修改后的fallback状态,完整的状态机JSON如下:

{"Comment": "A Hello World example demonstrating various state types of the Amazon States Language","StartAt": "Parallel State","States": {"Parallel State": {"Comment": "A Parallel state can be used to create parallel branches of execution in your state machine.","Type": "Parallel","Branches": [{"StartAt": "Wait","States": {"Wait": {"Type": "Wait","Seconds": 500,"Next": "Glue StartJobRun SUCCESS"},"Glue StartJobRun SUCCESS": {"Type": "Task","Resource": "arn:aws:states:::glue:startJobRun.sync","Parameters": {"JobName": "job_success"},"End": true,"Credentials": {"RoleArn": "arn:aws:iam::094815468753:role/glue_test"}}}},{"StartAt": "Glue StartJobRun FAIL","States": {"Glue StartJobRun FAIL": {"Type": "Task","Resource": "arn:aws:states:::glue:startJobRun.sync","Catch": [{"ErrorEquals": ["States.TaskFailed"],"Next": "fallback"}],"Parameters": {"JobName": "job_fail"},"End": true,"Credentials": {"RoleArn": "arn:aws:iam::094815468753:role/glue_test"}},"fallback": {"Type": "Task","Resource": "arn:aws:states:::aws-sdk:cloudwatch:putMetricData","Parameters": {"Namespace": "GlueJobFailures","MetricData": [{"MetricName": "JobFailureCount","Value": 1,"Unit": "Count","Dimensions": [{"Name": "JobName","Value": "job_fail"}]}]},"End": true,"Credentials": {"RoleArn": "arn:aws:iam::094815468753:role/glue_test"}}}}]},"Pass": {"Type": "Pass","End": true}}}

关键说明

  • 无需额外创建Lambda函数,直接通过Step Function的AWS SDK集成资源调用CloudWatch接口
  • 可根据需求调整Namespace、MetricName、Dimensions等参数,比如添加任务ID、错误类型等维度信息
  • 确保IAM角色权限配置正确,否则会触发States.TaskFailed错误

内容的提问来源于stack exchange,提问作者Randomize

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:05:17