Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用Java SDK在对AWS Lambda的调用请求中包含头和查询参数_Java_Amazon Web Services_Aws Lambda_Mule_Mulesoft - Fatal编程技术网

是否可以使用Java SDK在对AWS Lambda的调用请求中包含头和查询参数

是否可以使用Java SDK在对AWS Lambda的调用请求中包含头和查询参数,java,amazon-web-services,aws-lambda,mule,mulesoft,Java,Amazon Web Services,Aws Lambda,Mule,Mulesoft,我正在替换Lambda前面的awsapi网关,方法是使用 有没有一种方法可以在请求的同时传递头或查询参数?我尝试了上面的代码,但只能发送有效负载。快速回答:只能用于将请求头添加到发送到AWS Lambda服务的HTTP请求中。它们不会被转发到AWS Lambda函数 详细回答:我认为您在这里混淆了两种不同的东西,对术语有误解。如果调用AWS Lambda函数,将向AWS Lambda服务发送HTTP请求,该服务随后将执行Lambda函数的实际调用(并将有效负载数据转发给该函数)。例如,AWS L

我正在替换Lambda前面的awsapi网关,方法是使用


有没有一种方法可以在请求的同时传递头或查询参数?我尝试了上面的代码,但只能发送有效负载。

快速回答:只能用于将请求头添加到发送到AWS Lambda服务的HTTP请求中。它们不会被转发到AWS Lambda函数

详细回答:我认为您在这里混淆了两种不同的东西,对术语有误解。如果调用AWS Lambda函数,将向AWS Lambda服务发送HTTP请求,该服务随后将执行Lambda函数的实际调用(并将有效负载数据转发给该函数)。例如,AWS Lambda服务查看是否存在空闲函数并使用它,否则它将启动函数的新实例并使用它

a)直接调用AWS Lambda

如果要使用AWS SDK,可以从代码中执行此操作,例如Java程序:

Java Program --> Invoke AWS Lambda Function
这意味着,您的代码直接调用Lambda函数。在这种情况下,您只能向函数提供有效负载。如果要添加任何“附加”数据,则只能扩展有效负载数据

b)间接调用AWS Lambda

还有一种方法可以“间接”调用Lambda函数,例如位于API网关后面的函数。此类Lambda函数可以接收HTTP头和查询参数,因为API网关正在接收HTTP请求并将HTTP事件转发给AWS Lambda函数:

Java Program --> Send HTTP request --> API Gateway receives HTTP --> API Gateway invokes AWS Lambda Function with HTTP event data
在API网关调用AWS Lambda函数的最后一步中,API网关还将“仅”调用Lambda函数。但是它提供了所有HTTP数据(它以前收到的)作为Lambda函数的有效负载数据。这就是为什么在这个场景中您可以访问HTTP头和查询参数

问题的解决方案


如果确实需要提供HTTP头或查询参数,那么在函数前面放置一个API网关。但是,如果您只想从代码中调用函数,则只需扩展正在发送的有效负载数据并添加您想要提供的数据。

快速回答:只能用于将请求头添加到发送到AWS Lambda服务的HTTP请求中。它们不会被转发到AWS Lambda函数

详细回答:我认为您在这里混淆了两种不同的东西,对术语有误解。如果调用AWS Lambda函数,将向AWS Lambda服务发送HTTP请求,该服务随后将执行Lambda函数的实际调用(并将有效负载数据转发给该函数)。例如,AWS Lambda服务查看是否存在空闲函数并使用它,否则它将启动函数的新实例并使用它

a)直接调用AWS Lambda

如果要使用AWS SDK,可以从代码中执行此操作,例如Java程序:

Java Program --> Invoke AWS Lambda Function
这意味着,您的代码直接调用Lambda函数。在这种情况下,您只能向函数提供有效负载。如果要添加任何“附加”数据,则只能扩展有效负载数据

b)间接调用AWS Lambda

还有一种方法可以“间接”调用Lambda函数,例如位于API网关后面的函数。此类Lambda函数可以接收HTTP头和查询参数,因为API网关正在接收HTTP请求并将HTTP事件转发给AWS Lambda函数:

Java Program --> Send HTTP request --> API Gateway receives HTTP --> API Gateway invokes AWS Lambda Function with HTTP event data
在API网关调用AWS Lambda函数的最后一步中,API网关还将“仅”调用Lambda函数。但是它提供了所有HTTP数据(它以前收到的)作为Lambda函数的有效负载数据。这就是为什么在这个场景中您可以访问HTTP头和查询参数

问题的解决方案


如果确实需要提供HTTP头或查询参数,那么在函数前面放置一个API网关。但是,如果您只想从代码中调用函数,那么只需扩展您正在发送的有效负载数据并添加您想要提供的数据。

您是否尝试过调用请求?是的,我尝试了两种方法,但都没有成功。负载是请求中唯一要传递的内容。查询参数意味着带有URL参数的HTTP。您希望查询参数显示在目标Lambda中的何处?请参阅本文中的函数代码。我的Lambda还提取代码中的queryStringParameters,但AWS Java SDK似乎不允许您将查询参数或头传递到请求中。您是否尝试过调用请求?是的,我尝试了这两种方法,但都没有成功。负载是请求中唯一要传递的内容。查询参数意味着带有URL参数的HTTP。您希望查询参数显示在目标Lambda中的何处?请参阅本文中的函数代码。My Lambda还提取代码中的queryStringParameters,但是AWS Java SDK似乎不允许您将查询参数或头传递到请求中。感谢您提供详细的答案。这也是我得出的结论。当我从AWSAPI网关迁移Lambda函数时,我试图使转换更容易。我的一些API正在使用Lambda代理集成,这就是我提出问题的原因。感谢您的详细回答。这也是我得出的结论。当我从AWSAPI网关迁移Lambda函数时,我试图使转换更容易。我的一些API使用Lambda代理集成,这是