【发布时间】:2023-01-14 01:29:43
【问题描述】:
我正在尝试让我的 API Gateway api 执行以下操作:
- 运行授权器
- 将授权上下文传递给 Step Function 执行
- 使用 Step Function 输出响应客户端
我已经完成了#1 和#3,但事实证明,将附加的授权方 lambda 的响应传递给 step 函数是不可能的。
我发现 this page 和 this page 以及关于您可以将哪些插值值用于参数映射的参考表(创建集成 -> 步进函数:StartSyncExecution -> 高级设置 -> 输入)但是任何时候我尝试使用与
$context和$context.authorizer.email一样,API 网关只响应 HTTP 400 并给我这个 CloudWatch 输出:"Unable to resolve property Input from source {\"lambdaName\": \"arn:aws:lambda:us-east-1:xxxxxxx\", \"reqBody\": $request.body.Input, \"authContext\": $context.apiId }. Please make sure that the request to API Gateway contains all the necessary fields specified in request parameters."这些是我尝试用于输入文本框的 JSON 对象,所有这些对象要么在尝试保存时给我一个错误,要么在我访问路由时抛出 HTTP 400 并记录上述错误:
{"lambdaName": "xxx", "reqBody": $request.body.Input, "authContext": $context.authorizer.email }{"lambdaName": "xxx", "reqBody": $request.body.Input, "authContext": "$context.authorizer.email" }{"lambdaName": "xxx", "reqBody": $request.body.Input, "authContext": $context.apiId }{"lambdaName": "xxx", "reqBody": $request.body.Input, "authContext": $context }-
{"lambdaName": "xxx", "reqBody": $request.body.Input, "authContext": $event.requestContext.authorizer.email }
似乎让授权代码使用步骤函数的唯一方法是将我的 API 网关调用的步骤函数包装在其他授权请求然后调用端点步骤函数的步骤函数。我已经研究了几个小时,但我一无所获。任何帮助都表示赞赏。
【问题讨论】:
标签: amazon-web-services aws-lambda aws-api-gateway aws-step-functions