当前位置: 首页 > 知识库问答 >
问题:

Lambda未看到主体的AWS API网关

万修为
2023-03-14

我有一个Lambda函数,它在直接执行时工作得非常好。由于目前只是为了测试,它只读取请求正文,并返回其中一个子项的值作为响应:

exports.handler = async (event) => {

    const response = {
        "isBase64Encoded": false,
        "headers": {
            "Content-Type": "application/json"
        },
        "statusCode": 200,
        "body": event.body.maxNumber
    };
    return response;
};

然而,当我使用AWSAPI网关从中创建Api时,出现了一种奇怪的行为。如果Lambda函数包含上述代码,则响应主体为空。但是,如果我更改响应以返回整个请求正文,而不是一个子请求(在本例中为maxNumber),它将返回整个请求正文。无论如何,尽管lambda函数在隔离状态下工作良好,但在API网关后面,它似乎看不到请求主体的子级。

我已经创建了HTTP和REST apis,无论是否启用了代理,都没有运气。也找不到任何留档专门采样像我的情况(请求体)。任何帮助将不胜感激。

共有1个答案

季小云
2023-03-14

对于api网关代理响应,正文应该是字符串

首先,您需要解析请求主体以获取json对象,在响应内部,您需要严格定义响应主体,如下所述:

const body = JSON.parse(event.body);

const response = {
        "isBase64Encoded": false,
        "headers": {
            "Content-Type": "application/json"
        },
        "statusCode": 200,
        "body": JSON.stringify(body.maxNumber)
    };
    return response;

 类似资料:
  • 我们正在尝试从C#Windows服务调用AWS API网关来执行后台作业。哪个应该触发API网关定期初始化请求? 我们使用RestSharp调用APIendpoint,该类称为AwsAuthenticator,它继承自RestSharp.Authenticators.IAAuthenticator。但当我们调用API Gateway时,收到的错误是“我们计算的请求签名与您提供的签名不匹配。请检查您

  • 我按照此处找到的说明使用graalvm构建了一个Micronaut应用程序。我配置了一个自定义错误处理程序,当在控制器上遇到请求正文的验证错误时,它会返回HttpRequest。 在邮递员上测试时,错误显示正常 但是当在lambda上使用测试它时,错误主体不显示 如何在aws lambda函数上显示错误体?

  • 所以我试图在API网关中设置一个自定义授权程序。 我可以让它将带有有效令牌的请求转发给API方法中指定的lambda函数。我不知道如何访问授权人传递的principalId。 在执行请求时,我在Cloud watch日志中获得以下内容: 那么,我如何访问我的lambda函数中的主体呢?这个物体到底传给Lambda了吗?如果不是,我怎么至少让校长通过?

  • 我正在尝试实现一个quarkus-extension用于授权/认证。我使用现有的< code > quar kus-small rye-jwt-abx -扩展作为例子。一切似乎都很好,除了我不能注入< code>Principal: 我得到了 对 java.security.主体和限定符类型未满足的依赖关系 [@Default] 注入

  • 我正在使用Spring实现一个RESTful web服务。其中一个endpoint接收JSON字符串作为请求体,我希望将其映射到POJO。然而,现在看来传入的JSON字符串并没有映射到POJO的属性。 这里是@RestController界面 数据模型 最后是我的发帖请求: 与内容类型指定为应用程序/json 但是,当我打印出对象值时,打印出的是默认值(“first”和“last”),而不是我传入

  • 我有一个现有的Spring Boot应用程序,它通过第三方身份验证服务对web应用程序进行身份验证。与SiteMinder一样,第三方服务向HTTP请求注入一个报头,例如user_header。我的任务是配置现有的应用程序来提取这个HTTP头,并通过Spring Security注释使生成的Auth对象可供MVC层的控制器使用。 注意,这个应用程序只是Java配置。不允许使用XML(我的领导授权)