【AWS】lambrollを使用して簡単lambdaデプロイ!
どもども、GAFAがGAMAになるでひとしきり笑えるsaisaiです。
本日はlambda関数のデプロイにとても良さそうなツールを発見したので試してみようのコーナーです。
その名も"lambroll"です。さっそくトライしてみましょう。
lambrollとは
lambrollとは面白法人カヤック SREのfujiwara氏によって手掛けられたAWSのサーバレスサービスであるLambdaにコードをデプロイするツールです。
使用方法を拝見した感想としては"非常にシンプルで使いやすそう"でした。
しかし、使ってみないことにはその性能は計り知れません!試してみましょう!
lambrollを使用してLambdaにデプロイ
それでは早速使用してみたいと思います。(事前にユースケースをLambdaとした"AWSLambdaBasicExecutionRole"ポリシーを含むIAMロールを準備しておいてください。)
まずはlambrollをインストールしましょう。私はMacOSを使用しているのでHomebrewを使用します。ついでにlambrollコマンドを実行してヘルプページが表示されるかを確認しておきましょう。
$ brew install fujiwara/tap/lambroll
$ lambroll
usage: lambroll [<flags>] <command> [<args> ...]
...
次にAWS APIからLambdaに接続するために必要情報を変数定義しておきましょう。
$ export AWS_ACCOUNT_ID=*************
$ export AWS_ACCESS_KEY_ID=*************
$ export AWS_SECRET_ACCESS_KEY=*************
それではlambroll設定ファイルを作成しましょう。今回はGo言語で簡単なコードを作成してLambdaにデプロイしてみようかと思います。
$ lambroll init --function-name=helloGo
初期設定ファイルが作成されていることが確認できます!
$ ls
function.json
設定ファイルはjson形式で定義されているようです。"Handler"と"Role"、"Runtime"を下記のように書き換えてください。(“Role"には事前に作成したIAMRoleのARNを指定してください。)
{
"FunctionName": "helloGo",
"Handler": "main",
"MemorySize": 128,
"Role": "arn:aws:iam::XXXXXXXXXX:role/YOUR_LAMBDA_ROLE_NAME",
"Runtime": "go1.x,
"Timeout": 3
}
今回は純粋に"HelloWorld"を出力するコードを用意しました。
package main
import(
"fmt"
"github.com/aws/aws-lambda-go/lambda"
)
func helloWorld() {
fmt.Println("Hello World")
}
func main() {
lambda.Start(helloWorld)
}
コードが作成できたらビルドしておきます。
$ GOARCH=amd64 GOOS=linux go build main.go
$ ls
function.json main main.go
これで下準備は全て完了しました。Lambdaにコードをデプロイしてみましょう!
$ lambroll deploy --region "ap-northeast-1"
無事作成できたことをコンソール画面で確認しましょう!ついでにテストも行ってみてください!
一通り確認できましたら、下記コマンドでLambda関数を削除しておきましょう。
$ lambroll delete
コマンド一つで削除できるのも非常に魅力的ですね!
まとめ
今回はlambrollを使用してLambdaにコードをデプロイしてみました。
zip化やロール、ハンドラーの指定、デプロイから削除まで一通りターミナル 上でシンプルに行えるので非常に便利だと思います。
最近作ったはいいが実行環境に困っているコード達が多いので、lambrollを使用してどんどんLambda上で実行できるようにしていきたいと思います。
最後まで読んでいただきありがとうございました!
↓オススメ教材