🐏
lambrollを使ってLambda関数をデプロイする
lambrollというAWS Lambdaのデプロイツールを使ってみたいと思います
事前準備
- AWS アカウントを作成する
- AWS CLIのインストールと設定
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
}
※ 他にも設定できるので以下を参照ください
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