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

Serverless Framework下如何在Step Function的Lambda中获取执行ARN

如何在Step Function触发的Lambda函数中获取当前执行ARN

是可以获取的,但Step Function默认不会自动把执行ARN传递给调用的Lambda函数,需要你手动在状态机的任务定义中配置传入内置的上下文参数,具体操作方法如下:

  • 首先明确Step Functions的内置上下文变量$$.Execution.Id就是你需要的当前执行ARN,这个变量是所有状态机执行过程中默认自带的,不需要额外配置生成。
  • 你需要在调用Lambda的Task状态中,通过Parameters字段把这个上下文值注入到Lambda的入参event里,注意需要给参数名加后缀.$标识这是一个动态解析的路径值,否则会被当做普通静态字符串处理。

以下是Serverless Framework下使用serverless-step-functions插件的配置示例片段:

# serverless.yml 中状态机定义的示例片段
stepFunctions:
  stateMachines:
    MyStateMachine:
      definition:
        StartAt: InvokeDemoLambda
        States:
          InvokeDemoLambda:
            Type: Task
            Resource: arn:aws:states:::lambda:invoke
            Parameters:
              FunctionName: ${self:functions.demoLambda.name}
              Payload:
                # 将执行ARN传入Lambda的event参数
                sfn_execution_arn.$: $$.Execution.Id
                # 其他你需要传递的自定义参数
                custom_param: "test value"
            End: true

Lambda侧的获取方法非常简单,直接从入参event中读取即可,以下是两种常用运行时的示例:

  • Python运行时
def lambda_handler(event, context):
    sfn_execution_arn = event.get("sfn_execution_arn")
    # 后续业务逻辑
  • Node.js运行时
exports.handler = async (event) => {
    const sfnExecutionArn = event.sfn_execution_arn;
    // 后续业务逻辑
};

注意:如果你的Lambda同时对接了其他触发源(比如API网关、SQS),建议对该参数做非空判断,避免其他触发场景下取值报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:06:03