使用Apex在Go中运行lambda
最近我正在学习Go语言,所以我想试试能不能用Go语言来运行Lambda函数。
准备的物品
去
安装 Apex
AWS账户
awscli
APEX 是什麼?
这是怎么做到的呢?看起来是通过Node.js执行Go的二进制文件。
安装
如果是Mac或Linux的情况下,您可以运行以下命令来安装:
% curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh
而对于Windows操作系统,您可以直接安装二进制文件。
安装完成后,请执行Apex升级。
在AWS中设置API密钥。
使用aws configure设置API密钥。
% aws configure
AWS Access Key ID [None]: アクセスキーID
AWS Secret Access Key [None]: アクセスキー
Default region name [None]: ap-northeast-1 //東京リージョン
Default output format [None]:ENTER
此次创建的用于账号的IAM策略
由於這是測試用的,我們應用了Apex專用的規則。這樣最基本的功能就可以運作了。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:Create*",
"iam:Attach*",
"lambda:*"
],
"Resource": "*"
}
]
}
创建项目
在合适的目录下创建项目文件夹。
% mkdir apex-sample-go
% cd apex-sample-go
开始
我将制作项目的模板。
% apex init
_ ____ _______ __
/ \ | _ \| ____\ \/ /
/ _ \ | |_) | _| \ /
/ ___ \| __/| |___ / \
/_/ \_\_| |_____/_/\_\
Enter the name of your project. It should be machine-friendly, as this
is used to prefix your functions in Lambda.
Project name: apex-sample-golang //プロジェクト名の入力
Enter an optional description of your project.
Project description: apex-samle-golang is Hello world App by Golang //プロジェクトの説明
[+] creating IAM apex-sample-golang_lambda_function role
[+] creating IAM apex-sample-golang_lambda_logs policy
[+] attaching policy to lambda_function role.
[+] creating ./project.json
[+] creating ./functions
Setup complete, deploy those functions!
$ apex deploy
创建lambda函数
由于Go的示例中有一个公式,所以将其抄写下来。将其保存在functions/hello/main.go中,并删除已自动生成的functions/hello/index.js文件(即node.js的hello world)。文件结构将如以下所示。
apex-sample-go/
├── event.json (サンプルから)
├── functions/
│ └── hello/
│ └── main.go (サンプルから)
└── project.json
如果可以的话,我会部署Apex。
% apex deploy
• creating function function=hello
• created alias current function=hello version=1
• function created function=hello name=apex-samle-golang_hello version=1
即使失败,也会出现错误信息,所以非常放心。
% apex deploy
⨯ Error: function hello: build hook: can't load package: package main:
main.go:1:1: expected 'package', found 'EOF'
执行lambda函数
使用”apex invoke”命令以函数名执行Lambda函数。
% apex invoke hello < event.json
{“hello”:”world”}
如果返回结果如上所示,则表示执行成功。
请在管理控制台上确认。
当你在AWS的管理控制台中打开Lambda时,尝试一下。
我确认了它被认真制作。
顺便提一下,代码大小是875.4KB。
也许是因为我在使用apex-go包,所以比其他语言要大。
最后
虽然只是对样本进行了尝试,但使用Go轻松创建了lambda功能。除此之外,apex-go还支持以下功能:
* CloudWatch日志
* Cognito
* Kinesis
* Dynamo
* S3
* SNS
* SES
看起来它支持各种应用程序的开发。
但我希望最好是官方提供支持。
请参考
Apex的官方文件