使用Apex在Go中运行lambda

最近我正在学习Go语言,所以我想试试能不能用Go语言来运行Lambda函数。

准备的物品


安装 Apex
AWS账户
awscli

APEX 是什麼?

undefined

这是怎么做到的呢?看起来是通过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时,尝试一下。

Apex01.JPG

我确认了它被认真制作。

顺便提一下,代码大小是875.4KB。
也许是因为我在使用apex-go包,所以比其他语言要大。

最后

虽然只是对样本进行了尝试,但使用Go轻松创建了lambda功能。除此之外,apex-go还支持以下功能:
* CloudWatch日志
* Cognito
* Kinesis
* Dynamo
* S3
* SNS
* SES

看起来它支持各种应用程序的开发。
但我希望最好是官方提供支持。

请参考

Apex的官方文件

广告
将在 10 秒后关闭
bannerAds