android - 如何从 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,我的印象是我可以使用具有特定策略的用户的密钥和秘密直接调用函数..
解决方案
一种不同的方法,但您可以使用 API 网关或应用程序负载均衡器并从 android 应用程序调用配置的端点。受益于此,您无需将应用程序配置为设置客户端 ID 和客户端密码,即使重新启动,也将是简单的 api 网关调用。
Lambda 可以与 API Gateway 和 Application Load Balancer 一起使用,并且非常容易配置。有关使用 Lambda 的 ALB 的详细信息,请参阅此页面。
推荐阅读
- access-token - 如何从 Google Assistant 撤消访问令牌?
- python-3.x - Pygame 键只运行一次
- python - 为什么 Keras/tensorflow 的 sigmoid 和交叉熵精度低?
- qt - qml 应用程序未显示主窗口
- c++ - 为什么单击编辑文本后不显示qml虚拟键盘,而我在.pro和main.cpp中调用插件
- java - Spring security - 休息服务的自定义过滤器和入口点
- python - 如何在 kivy 中使用“从 Crypto.Cipher 导入 AES”
- java - 最大幂:对于给定的数字 n,找到具有最大可能 y 的 x 和 y,其中 x^y = n
- java - 无法将 JTextField 输入转换为整数以获取输出中的总和
- sequelize.js - 使用附加联结表属性查询多对多关系