java - Lambda 函数退出失败

标签 java aws-lambda

我在创建一个 Java Lambda 函数时遇到了一个奇怪的问题,该函数的主要功能是 JWT token 验证。我现在正在使用 terraform 创建 lambda 并将我的 Jar 文件上传到 s3。下面是 token 验证 block

public boolean validate(String token) throws Exception {

    try {

        Jws<Claims> claims = Jwts.parser().setSigningKey("mysigningkey").parseClaimsJws(token);

        if (claims.getBody().getExpiration().before(new Date())) {

            throw new Exception("Token expired");
        }

        return true;

    } catch (JwtException | IllegalArgumentException e) {

        throw new InvalidJwtAuthenticationException("Some exception");
    }
}

该行导致了问题

Jws<Claims> claims = Jwts.parser().setSigningKey("mysigningkey").parseClaimsJws(token);

我已将异常错误放入catch block 中,但它没有打印任何消息。但是这一行执行失败。我尝试使用相同的 Jar 文件在 AWS 控制台中手动创建该函数,并且相同的代码运行良好。

对这种行为有什么想法吗?或者有什么调试策略吗?云 watch 日志上只是打印了执行不成功,没有其他具体的错误信息。

以下消息将写入 Cloudwatch 日志:

REPORT RequestId: ####### Duration: 1835.00 ms Billed Duration: 1900 ms Memory Size: 512 MB Max Memory Used: 93 MB Init Duration: 349.72 ms 

超时设置为 3 秒

最佳答案

这是由于超时问题造成的。创建时 Lambda 上的默认超时为 3 秒,因为 token 验证需要更多时间 Lambda 退出达到时间限制。将超时时间增加到 15 秒,效果很好。但我没有在日志中看到任何错误消息,这暗示我这是因为超时

关于java - Lambda 函数退出失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61110074/

相关文章:

aws-lambda - Cognito - 如何让用户同时使用电子邮件和电话号码登录

python - 请求返回 "Endpoint request timed out"

java - 使用 JSF 时等效的 Spring 自定义 Collection 属性编辑器

java - 将视频文件保存在 Assets 文件夹中?

java - C3po 创建过多连接

java - 单击设备 Activity 上的按钮时如何在可穿戴设备上显示自定义 Activity ?

linux - Docker:压缩文件但排除某些文件夹

java - 转义 SPARQL 查询中的特殊字符

node.js - AWS API Gateway "Unsupported method\"未定义\""作为响应

python - AWS Lambda 函数在 S3 上传时触发 SNS 主题