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

Step Functions调用Lambda时X-Ray追踪信息缺失的配置咨询

问题描述

我有一个调用多个Lambda函数的Step Functions状态机,且已在两个服务中启用了X-Ray追踪。直接调用Lambda时可看到追踪信息,调用Step Functions(其内部调用Lambda)时,Step的追踪可见,但由Step Functions触发的Lambda的追踪信息完全不显示。请问是否需要进行显式配置,才能让Step Functions调用Lambda时触发其追踪?

状态机代码如下:

{
  "Comment": "My State Machine",
  "StartAt": "MapCalculcationObjectToFile",
  "States": {
    "MapCalculcationObjectToFile": {
      "Type": "Map",
      "ItemProcessor": {
        "ProcessorConfig": {
          "Mode": "DISTRIBUTED",
          "ExecutionType": "STANDARD"
        },
        "StartAt": "File Processing",
        "States": {
          "File Processing": {
            "Type": "Task",
            "Resource": "arn:aws:states:::lambda:invoke",
            "OutputPath": "$.Payload",
            "Parameters": {
              "Payload.$": "$",
              "FunctionName": "arn-for-my-lambda"
            },
            "Retry": [
              {
                "ErrorEquals": [
                  "Lambda.ServiceException",
                  "Lambda.AWSLambdaException",
                  "Lambda.SdkClientException",
                  "Lambda.TooManyRequestsException"
                ],
                "IntervalSeconds": 2,
                "MaxAttempts": 1,
                "BackoffRate": 2
              }
            ],
            "ResultPath": "$",
            "End": true
          }
        }
      },
      "Next": "Success",
      "InputPath": "$.items",
      "Label": "MapCalculcationObjectToFiles"
    },
    "Success": {
      "Type": "Pass",
      "Result": "Success Run",
      "End": true
    }
  }
}
解决方案

是的,需要额外的显式配置才能让Step Functions触发的Lambda生成完整的X-Ray追踪链路,具体操作如下:

1. 配置Step Functions执行角色的X-Ray权限

为Step Functions的执行角色添加xray:PutTraceSegments和xray:PutTelemetryRecords权限,确保它能传递追踪上下文给Lambda。示例IAM政策片段:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": "*"
        }
    ]
}

2. 在Lambda调用任务中添加追踪配置

修改状态机中"File Processing"节点的参数,添加TracingConfig并设置为Active,强制Step Functions传递X-Ray追踪上下文:

"File Processing": {
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke",
  "OutputPath": "$.Payload",
  "Parameters": {
    "Payload.$": "$",
    "FunctionName": "arn-for-my-lambda",
    "TracingConfig": {
      "Mode": "Active"
    }
  },
  "Retry": [
    {
      "ErrorEquals": [
        "Lambda.ServiceException",
        "Lambda.AWSLambdaException",
        "Lambda.SdkClientException",
        "Lambda.TooManyRequestsException"
      ],
      "IntervalSeconds": 2,
      "MaxAttempts": 1,
      "BackoffRate": 2
    }
  ],
  "ResultPath": "$",
  "End": true
}

3. 确认Lambda的追踪配置有效性

  • 确保Lambda执行角色拥有xray:PutTraceSegments和xray:PutTelemetryRecords权限
  • 确认Lambda的X-Ray追踪模式设置为Active(而非PassThrough),保证它能主动上报追踪数据

4. 分布式Map模式的额外配置

由于你的状态机使用了DISTRIBUTED模式的Map状态,每个子执行会独立运行,需确保:

  • 子执行的角色同样具备X-Ray相关权限
  • 子状态机的Lambda调用任务中也添加了上述TracingConfig配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:42:51