Android - 从零开始的AWS Lambda
文章目录
和传统的应用程序不同,用Lambda函数,结合其他微服务框架一起使用,可以把一个原本很复杂、冗余的应用分解成一个个小的部分。每个框架之间只需要专注于做自己的事情,相互之间是松耦合的。这增加了开发程序的可能性、灵活性。
但是,要从头自己开始学习还是有点点困难的。所以这次记录了一下从头开始学习Lambda函+Cognito与Android配合使用的过程。
“AWS Lambda 是一项计算服务,可使您无需预配置或管理服务器即可运行代码。”
所以,我们只需要关注于代码本身,由AWS Lambda 管理提供内存、CPU、网络和其他资源均衡的计算机群。
实现了啥
创建一个简单的 Android 移动应用程序,通过在本地应用程序中输入字符串并提交,从 Amazon Cognito 身份池检索 AWS 凭证,并使用包含请求数据的事件,调用 Lambda 函数处理请求,记录Cloud Watch日志并向前端返回响应,返回字符串。
如果这些字连在一起就看不懂了:其实就是输入两个字符串,提交之后触发了Lambda函数;触发成功,返回toast,由Lambda函数记录调用的日志。
STEP - 1 创建AWS IAM用户并授予管理员权限
AWS建议 不要使用 AWS 账户根用户执行任务,而是应为需要管理员访问权限的每个人创建新的 IAM 用户。
所以,拥有IAM用户是访问AWS服务的先决条件。
想要通过控制台创建用户,可以下载AWS CLI。
1. 进入[AWS IAM console - 用户 - 添加用户]
2. 添加用户
a. 用户名即之后用于访问服务的用户名
b. 因为之后要通过CLI访问,所以务必要选择编程访问。选择AWS控制台访问的话,之后可以通过 IAM 控制台控制面板中找到账户的登录 URL进行登录。
https://
account-ID-or-alias
.signin.aws.amazon.com/console
3. 创建组
筛选策略中,选择AdministratorAccess
,即赋予组用户管理员权限。
4. (可选)输入可跟踪用户信息的键值对
本次实验暂时用不到。接下来的步骤确认信息无误后,拥有管理员权限的IAM用户即可生成。
5. 返回[AWS IAM console - 用户]
查看创建好的用户,记录用户ARN,用于之后身份验证服务。arn是AWS资源的唯一标识。
6. 选择[安全证书 - 创建访问密钥]
把密钥下载下来,之后登录AWS CLI需要用。
STEP - 2 创建AWS IAM执行角色
要让AWS Lambda对我们的资源进行访问、操作,以实现具体功能,就要授予其相对应的权限。
IAM 角色就是信任的实体授予权限的安全方法。实体可以是其他账户的IAM用户、AWS的服务、EC2上的程序代码等。
1. 打开[AWS IAM console - 用户 - 角色]
选择创建角色,使用案例选择Lambda。
2. 确保当前角色拥有CloudWatch Logs日志写入的权限
这里选择AWSLambdaBasicExecutionRole
。
3. 角色名称键入lambda-android-role
这样,拥有basic权限的角色就配置好了。
STEP - 3 创建函数
接下来的操作会用到shell,编写一个简单的触发器,在本地打包创建成lambda函数并提交。
-
PS😋也可以选择在AWS Lambda的网页端中,通过现成的模板或创作设置想要的函数。 也支持在本地写完Lambda函数,打包之后上传。
在这里,我选择用WSL 2(Windows Subsystem for Linux 2) 进行脚本编写创建,如果使用Linux/MacOS直接调用默认shell就可以了。
其实后来我看开发指南,Windows自带的Power Shell也是可以的,被我弄复杂了;但是Power Shell长得丑,算了不亏。
方法有很多,只要是shell能编写程序就OK。
1. 创建index.js文件
Lambda支持很多语言,如:javascript, java, python, c# … 这里按照官方给的教程,我用的是node.js,很简洁。
- 函数第一个参数event是来自调用程序(即我们的APP上的操作)信息对象。
- 第二个参数contexts是包含有关调用、函数和执行环境的对象,这里将会获取日志流的名称,然后将其返回到调用方。
- 第三个参数callback 是一个回调函数,可以用它对调用程序(APP)进行响应(response)。
这里我们简单定义了,调用程序中的函数,在console中记录事件并返回给客户端一个字符串的操作。
exports.handler = function(event, context, callback) {
console.log("Received event: ", event);
var data = {
"greetings": "Hello, " + event.firstName + " " + event.lastName + "."
};
callback(null, data);
}
2. 打包文件
把文件打包成压缩包,并下载aws命令行。
zip function.zip index.js
sudo apt install awscli
如果是第一次使用AWS CLI,那么就要设置用户。
aws config
</