【问题标题】:How to pass to header block of request from API Gateway to Step functions / lambda?如何将请求的标头块从 API Gateway 传递到 Step 函数/lambda?
【发布时间】:2020-07-17 17:50:39
【问题描述】:

我们在 AWS Api Gateway 中有一个要求,如果我们收到带有标头(授权)密钥的请求,它应该调用一个 API,并且如果标头块中不存在授权密钥(仅与 keyValue 无关的密钥)应该调用另一个 API。

我设想的流程是 - Apigateway -> (stepfunction/lambda) -> lambda

  • 为此,我想过使用阶跃函数,但我不确定如何传递总计 标头块作为输入以及从 API 网关到步骤函数的请求?
  • 处理这种情况的任何最佳解决方案。 (评估键是否存在于标题块中)
  • 如果步进函数不起作用,我相信同样的问题也适用于 lambda 的使用,即如何将总标头块作为输入传递给 lambda。

非常感谢任何建议。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway aws-step-functions


    【解决方案1】:

    以下正文映射模板循环遍历所有标头,如果有用于授权的标头,它将向下传递给 Lambda/Step Function。您可以对其进行更新以传递您需要的任何内容。

    {
        "headers": {
            #foreach($param in $input.params().header.keySet())
                #if( $param == 'Authorization' )
                     "$param": "$util.escapeJavaScript($input.params().header.get($param))"
                #end
            #if($foreach.hasNext),#end
            #end
        }
    }
    

    然后,您应该能够在 Step Function 中将其作为变量选取,并通过 Choice 确定下一步(请参阅 https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-choice-state.html#amazon-states-language-choice-state-rules)。

    NB - 我没有使用 Step Functions 对此进行测试,但从我阅读的文档来看,它应该可以工作。

    【讨论】:

      【解决方案2】:

      如果我理解你的问题是正确的。您想将信息从 API 网关传递给 step 函数。那么你可以做这样的事情

      {
         "input": "{ \"id\": \"$input.params('id')\", \"user_id\": \"$input.path('$').user_id\" }",
         "stateMachineArn": "arn-of-your-state-machine"
      }
      

      【讨论】:

        猜你喜欢
        • 2020-01-22
        • 2021-11-11
        • 2015-11-10
        • 1970-01-01
        • 2015-10-01
        • 2017-11-30
        • 2015-10-17
        • 1970-01-01
        相关资源
        最近更新 更多