首页 > 解决方案 > 适用于 Java 的 AWS 开发工具包 v2 - 如何更改 lambda 并发?

问题描述

我正在为在 AWS 中使用 SQS 和 Lambdas 构建的项目编写自动测试。当事件消息从队列传递到队列时,Lambda 会连续转换它,我希望看到每个步骤的转换都是正确的。我的想法是在我正在测试的那个之后停止下一个 lambda,这样我就可以从队列中获取消息并检查它。

为了停止 lambda,我尝试使用 AWS SDK v2 中列出的 LambdaClient.putFunctionConcurrency(PutFunctionConcurrencyRequest x) 函数。但是该功能似乎不存在... IDE说“找不到方法调用的候选者”,在运行时我得到“没有方法签名:software.amazon.awssdk.services.lambda.DefaultLambdaClient.putFunctionConcurrency()适用”。

我可以在 LambdaClient 接口上调用非常有限的函数子集,比AWS docs中列出的要少得多。例如,listFunctions() 被 IDE 识别并且在运行时运行良好。知道我在做什么错吗?

这是我的 pom.xml 提取:

<dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>lambda</artifactId>
            <version>2.16.79</version>
</dependency>

这是相关代码:

import software.amazon.awssdk.services.lambda.LambdaClient
import software.amazon.awssdk.services.lambda.model.LambdaException
import software.amazon.awssdk.services.lambda.model.PutFunctionConcurrencyRequest
import software.amazon.awssdk.regions.Region

class AWSHelper {

    Region region = Region.AP_SOUTHEAST_2
    final LambdaClient awsLambda = LambdaClient.builder()
        .region(region)
        .build()

    public void stopLambda(String name) {
        PutFunctionConcurrencyRequest config = PutFunctionConcurrencyRequest.builder()
            .functionName(name)
            .reservedConcurrentExecutions(0)
            .build()
        awsLambda.putFunctionConcurrency(config)
    }
}

我尝试过:使缓存无效并重新启动 Intellij IDEA,重新加载 maven 项目。Groovy 3.0.8,JDK 16

标签: aws-lambdaaws-sdk-java-2.0

解决方案


推荐阅读