首页 > 解决方案 > 如何从 Android 应用程序直接调用 AWS Lambda 函数?

问题描述

我正在尝试从我的 Android 应用程序中调用一个 AWS Lambda 函数。如果我理解正确,我必须从这样的事情开始:

BasicAWSCredentials creds = new BasicAWSCredentials(keyId, secret);
AWSLambdaClientBuilder builder = AWSLambdaClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(creds))
            .withRegion(regionName);

AWSLambda lambdaClient = builder.build();

然后是 InvokeRequest 等的其余代码。

问题出在上面的代码中,应用程序崩溃后。我找不到正确的库集来使其在 Android 中工作。如果我使用

implementation 'com.amazonaws:aws-java-sdk-lambda:1.11.782'

然后它编译得很好并执行到“builder.build()”然后崩溃,如果我使用

implementation 'com.amazonaws:aws-android-sdk-lambda:2.16.12'

(应该是用于Android的???)然后“import com.amazonaws.services.lambda.AWSLambdaClientBuilder;” 是红色的,因为库中没有这样的东西..

我知道 AWSLambdaClient 已被弃用,应该使用 AWSLambda,那么 AWSLambdaClientBuilder 呢?我应该使用什么?

基本上,如果上面的一切都是错误的,我如何从 Android 应用程序调用 AWS Lambda 函数(顺便说一下,这是不使用 API Gateway)?哪些库(带有版本)适用于它?

我尝试按照https://docs.aws.amazon.com/lambda/latest/dg/with-android-example.html教程进行操作,但他们也有弃用的东西,而且它想涉及 Cognito,我的印象是我可以使用具有特定策略的用户的密钥和秘密直接调用函数..

标签: androidamazon-web-servicesaws-lambda

解决方案


一种不同的方法,但您可以使用 API 网关或应用程序负载均衡器并从 android 应用程序调用配置的端点。受益于此,您无需将应用程序配置为设置客户端 ID 和客户端密码,即使重新启动,也将是简单的 api 网关调用。

Lambda 可以与 API Gateway 和 Application Load Balancer 一起使用,并且非常容易配置。有关使用 Lambda 的 ALB 的详细信息,请参阅此页面


推荐阅读