【AWS】lambrollを使用して簡単lambdaデプロイ!

2月 12, 2022

どもども、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上で実行できるようにしていきたいと思います。


最後まで読んでいただきありがとうございました!


↓オススメ教材

AWS,Golang

Posted by CY