【发布时间】:2019-06-30 23:29:10
【问题描述】:
我正在尝试学习 Lambda,但我正在努力使用一个简单的函数,该函数将字符串作为输入参数并将其大写:
它是用 C# 编写的。
public class Function
{
public string FunctionHandler(string input, ILambdaContext context)
{
return input?.ToUpper();
}
}
然后,我使用 get 请求设置 API 网关。它在集成请求上有一个映射模板,如下所示:
{
"input":$input.params("text")
}
我正在尝试通过 url 调用它:
https://xxxxxxx.execute-api.xxxxxxx.amazonaws.com/Prod?test=hello
但我得到一个错误返回:
{ “消息”:“无法将请求正文解析为 json:意外字符(\'}\'(代码 125)):应在 [Source: (byte[])\"{\n\n \"输入\":\n\n}\";行:5,列:2]"}
【问题讨论】:
-
输入类型很可能是复杂对象。尝试反序列化它或定义类型。看看这个stackoverflow.com/questions/42115779/…
-
@joaofs 我认为这个例子是一个 POST 请求而不是一个只接受 url 参数的 GET。
-
正确,但将是一个复杂的对象,里面有参数。最好的检查方法是将输入记录为字符串。您使用的是什么类型的集成? API 网关?
-
您可以使用上下文记录输入消息:
context.Logger.LogLine( string.Format("{0}:{1} - {2}", context.AwsRequestId, context.FunctionName, input)); -
@joaofs 感谢您回复我。是的,API 网关是 AWS 的一部分,它允许您为所有微服务创建 1 个标准网关。
标签: amazon-web-services aws-lambda aws-api-gateway