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

通用域名格式。亚马逊。服务。拉姆达。援引LambdaSerializationException:没有方法hashCode的LambdaFunction注释

朱睿
2023-03-14

我在从spring boot项目调用aws lambda函数时遇到此错误。但当我运行测试时,它会正确响应。当做

完整跟踪:

呼叫代码:

@ContextConfiguration(classes = {
 LambdaTestConfig.class
})
@RunWith(SpringJUnit4ClassRunner.class)
public class TestMail {

 @Autowired 
 LambaServices service;

 @Test 
 public void testLogin() {
  UserLoginInput login = new UserLoginInput();
  login.setUserName("usuarioPDM");
  login.setPasswordHash(org.apache.commons.codec.digest.DigestUtils.sha256Hex("usrPDM0017#"));
  System.out.println(service.login(login).getOpenIdToken());
 }
}

共有1个答案

殳自怡
2023-03-14

目前,lambda函数是使用aws sdk中的注释创建的,如下所示:

interface LambdaService {
    @LambdaFunction(functionName = "some-lambda-function")
    fun execute(input: Request): Response
}

只捕获toString()方法的调用,而不捕获hashCode()方法的调用。

Spring将bean存储在映射中,映射积极使用hashCode()

作为一个变通办法,我建议使用混凝土支架为Lambda服务创建与aws sdk:

class LambdaServiceHolder(val lambdaService: LambdaService)

然后您只需创建持有者bean而不是服务bean

@Configuration
open class LambdaConfiguration {
    @Bean
    open fun lambdaService(): LambdaServiceHolder {
        val awsLambda = AWSLambdaClientBuilder.defaultClient()
        val service = LambdaInvokerFactory.builder().lambdaClient(awsLambda).build(LambdaService::class.java)
        return LambdaServiceHolder(service);
    }
} 
 类似资料:
  • 亚马逊网络服务(AWS)是亚马逊的云网络托管平台,提供灵活,可靠,可扩展,易于使用且经济高效的解决方案。

  • 我刚刚开始使用AWS EC2。我明白EC2就像一台远程计算机,在那里我可以做几乎所有我想做的事情。然后我发现了ECS的事。我知道它使用Docker,但我对这两者之间的关系感到困惑。 ECS只是EC2中的Docker安装吗?如果我已经有一个EC2并且我启动了一个ECS,这是否意味着我有两个实例?

  • 我正在尝试开发这个AWS请求的后续程序:https://docs.AWS.amazon.com/general/latest/gr/sigv4-signed-request-examples.html 当您“按原样”执行时,它可以工作,但我正试图从该脚本发送一个SMS,并且不断得到“签名不匹配”响应(HTTP 403): 现在,我在(默认)Python脚本中更改的只是这一部分(当然,没有公开我的电

  • 我在使用aws ses时遇到SignatureDesNotMatch错误。我使用GMT日期和HMAC SHA256的安全密钥创建签名密钥,然后将其转换为Base64。 签名=base64(HMAC SHA256(日期,安全密钥)); 网址:https://email.us-west-2.amazonaws.com?Action=SendEmail 输入标题为x-amz-date: Thu,30 J

  • 我目前在AWS上的ELB后面有3台服务器。 这些EC2实例中每一个都位于3个独立的可用性区域中。 我将弹性负载均衡用于 > SSL终止 分配负载 我已经配置了一个VPN来访问EC2实例以进行SSH访问,但是当我从EC2容器中删除公共地址时,我无法使ELB工作。。。 我假设我可以让他们只允许来自ELB sec group的80端口(443终止于ELB)的流量,这意味着我不需要Ext IPs,因为EL

  • 亚马逊云 图 1.20.2.1 - AWS AWS,即 Amazon Web Services,是亚马逊(Amazon)公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务,使用户几乎能够在云中运行一切应用程序:从企业应用程序和大数据项目,到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT