【发布时间】:2020-07-21 10:03:05
【问题描述】:
我在创建具有 JWT 令牌验证主要功能的 Java Lambda 函数时遇到了一个奇怪的问题。我现在正在使用 terraform 创建 lambda 并将我的 Jar 文件上传到 s3。下面是令牌验证块
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);
我已将 Exception 和 Error 放在 catch 块中,但它没有打印任何消息。但是这条线无法执行。我尝试使用相同的 Jar 文件在 AWS 控制台中手动创建函数,并且相同的代码运行良好。
知道这种行为吗?或者任何调试策略?在云监视日志上,它只是打印了执行不成功,并且没有其他特定的错误消息。
以下消息将写入 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 秒
【问题讨论】:
-
请解释一下实际发生了什么?您在哪里看到错误?你怎么知道它不起作用?另外,请考虑这是否真的与 Terraform 有关。这个问题可以更笼统吗?
-
我在 Lambda 控制台中看到了日志。它没有在我上面提到的那一行之后执行。没有具体的错误,但它只是打印执行不成功。无论如何,我找到了原因并修复了它。它与terraform无关。解释在下面作为答案给出
-
从您的回答看来,您似乎在 Cloudwatch 日志中获得了一些信息(内存和时间)。请提供这个
-
REPORT RequestId:####### 持续时间:1835.00 毫秒计费持续时间:1900 毫秒内存大小:512 MB 使用的最大内存:93 MB 初始化持续时间:349.72 毫秒超时设置为 3 秒跨度>
标签: java aws-lambda