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
相关产品推荐
相关产品推荐

