🐏

lambrollを使ってLambda関数をデプロイする

2022/02/18に公開

lambrollというAWS Lambdaのデプロイツールを使ってみたいと思います

https://github.com/fujiwara/lambroll

事前準備

IAM ロールの作成

  • https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-intro-execution-role.html
  • AWS マネジメントコンソールで IAM と検索し、IAM ダッシュボードを表示します
  • サイドバーにある ロール をクリックし、ロールの作成 をクリックします
  • 信頼されたエンティティタイプは AWSのサービス、 ユースケースは Lambda を選択して次へ進みます


  • 許可ポリシーで AWSLambdaBasicExecutionRole と検索し、チェックし、次へ進みます


  • ロール名は lambda-role としてロールの作成をクリックします


  • 無事にロールが作成されたら、ロールのリストの中から lambda-role をクリックします
  • ARNに書かれている文字は、後で利用するのでコピーしておきます

lamrollをインストール

# Homebrew (macOS and Linux)
$ brew install fujiwara/tap/lambroll

Lambda関数を定義するファイルを作成

  • hello-lambroll という名前の関数を作成するためのファイルを用意します
# フォルダを作成します
$ mkdir lambroll
$ cd lambroll

# lambroll initで雛形を作成します
$ lambroll init --function-name=hello-lambroll
2022/02/15 17:19:57 [info] lambroll v0.12.2
2022/02/15 17:19:57 [info] function hello-lambroll is not found
2022/02/15 17:19:58 [info] creating .lambdaignore
2022/02/15 17:19:58 [info] creating function.json
2022/02/15 17:19:58 [info] completed

# ファイルを確認します
$ ls
function.json

$ cat function.json
{
  "FunctionName": "hello-lambroll",
  "Handler": "index.handler",
  "MemorySize": 128,
  "Role": "arn:aws:iam::xxxxxxxxxx:role/YOUR_LAMBDA_ROLE_NAME",
  "Runtime": "nodejs10.x",
  "Timeout": 3
}

雛形を編集する

  • function.jsonを以下のように変更します
  • Role は先ほど作成したIAM ロールのARNを指定してください
{
  "Architectures": ["x86_64"],
  "Description": "lambrollを使ってデプロイしたLambda関数",
  "FunctionName": "hello-lambroll",
  "Handler": "index.handler",
  "MemorySize": 128,
  "Role": "arn:aws:iam::xxxxxxxx:role/lambda-role",
  "Runtime": "nodejs14.x",
  "Timeout": 3
}

※ 他にも設定できるので以下を参照ください

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/API_CreateFunction.html

Lambda関数の実装をする

# 実装するファイルを作成
$ touch index.js
  • index.jsを以下のように変更します
index.js
export default handler () => {
    console.log('hello lambroll');
}

lambrollを使ってデプロイ

$ lambroll deploy
2022/02/16 18:01:51 [info] lambroll v0.12.2
2022/02/16 18:01:51 [info] starting deploy function hello-lambroll
2022/02/16 18:01:52 [info] creating zip archive from .
2022/02/16 18:01:52 [info] zip archive wrote 210 bytes
2022/02/16 18:01:52 [info] creating function
2022/02/16 18:01:52 [info] State:Pending LastUpdateStatus:
2022/02/16 18:01:52 [info] waiting for LastUpdateStatus Successful
2022/02/16 18:01:53 [info] State:Pending LastUpdateStatus:
2022/02/16 18:01:53 [info] waiting for LastUpdateStatus Successful
2022/02/16 18:01:55 [info] State:Pending LastUpdateStatus:
2022/02/16 18:01:55 [info] waiting for LastUpdateStatus Successful
2022/02/16 18:01:59 [info] State:Active LastUpdateStatus:Successful
2022/02/16 18:01:59 [info] deployed function version 1
2022/02/16 18:01:59 [info] creating alias set current to version 1
2022/02/16 18:01:59 [info] alias created
2022/02/16 18:01:59 [info] completed

AWS Lambdaコンソールで確認

  • AWS マネジメントコンソールで lambda と検索し、AWS Lambdaコンソールを表示します
  • サイドバーにある 関数 をクリックすると、関数が一覧で表示されます
  • hello-lambroll という関数が作成されていればOKです🎉
  • hello-lambroll をクリックして、コードもindex.jsと同じ内容になっていればOKです🎉

Discussion