如何在AWS Step Functions中传递自定义Header至Lambda函数
解决Step Functions传递自定义headers到Lambda的问题
首先明确:AWS Step Functions的start_execution接口不支持headers参数,你当前代码里传入的headers={'mode': 'normal'}不会被Step Functions接收,自然无法传递到Lambda。要实现需求,得把自定义参数放到执行的input里,再通过状态机配置传递给Lambda。
步骤1:修改boto3调用代码,将headers内容并入input
把mode参数放到input字典中,Step Functions会将整个input作为执行上下文保存并传递:
import boto3 import json client = boto3.client('stepfunctions') response = client.start_execution( stateMachineArn=stateMachineArn, name=name, input=json.dumps({ 'id': 'my-id', 'headers': {'mode': 'normal'} }) )
注:
input参数需要传入JSON格式字符串,使用json.dumps()显式序列化可以避免潜在的格式问题。
步骤2:修改Step Functions任务配置,传递mode到Lambda
在触发Lambda的Task步骤中,新增mode参数的映射,从执行上下文中提取headers.mode:
"trigger-lambda": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:...:function:my-lambda", "Parameters": { "id.$": "$.id", "mode.$": "$.headers.mode" } }
步骤3:在Lambda中获取mode参数
此时Lambda的事件参数中会包含mode字段,直接读取即可:
def lambda_handler(event, context): current_id = event['id'] current_mode = event['mode'] # 业务逻辑处理 return { 'statusCode': 200, 'body': f"ID: {current_id}, Mode: {current_mode}" }
内容的提问来源于stack exchange,提问作者user1187968
相关产品推荐
相关产品推荐

