Serverless Frameworkを使ってLambdaファンクションをデプロイしてみた

プロジェクトでAWS Lambdaを利用したバッチ処理プログラムを作ることになりました。

Terraformとの比較検討の末、構成管理ツールにServerless Frameworkを使います(インフラと分けて管理できること、チーム内で実装実績があったのが理由です)。

予行練習としてシンプルなJSONを返すファンクションを実装しました。

Serverless Frameworkとは

近年、LabmdaやCloud Functionなどのサービスを使って、サーバーを意識しないアプリケーションの実装が増えてきています。

Serverless FrameworkはLambdaなどのサービスと連携し、サーバーレスなアプリケーションの開発と構成管理をよしなにサポートしてくれるフレームワークです。

事前準備

Serverless Frameworkのインストール

ドキュメントのget startedに書いてある通り、下記のコマンドでインストールできます。

# Mac or Linuxの場合
curl -o- -L https://slss.io/install | bash

AWS IAMユーザの作成

AWS Lambdaを使う場合、Serverless FrameworkがAWSアカウントにアクセスできるように、IAMで専用のシステムユーザの作成とアクセスキーの発行が必要です。

発行したアクセスキーをaws configに設定します。

プロジェクトの作成

serverlessと打つだけで、メニューを選択しながらアプリケーションを作成できます。

もしくは下記のようにserverless createコマンドで作成できます。

serverless create -t "aws-nodejs" -p hogehoge -n mogumogu
  • -t…使用するプラットフォームと言語のテンプレートを指定
  • -p…プロジェクトを置くパスを指定
  • -n…プロジェクト名を指定

serverless createコマンドを実行すると、必要なファイルが指定したパスに作成されます。

プロジェクトのデプロイ

下記コマンドでAWSに必要なIAMロールやS3のバケットが作成され、Lambdaファンクションがデプロイされます。

serverless deploy

ファンクションの呼び出し

serverless.ymlにて定義されたファンクションを下記コマンドで呼び出せます。

serverless invoke --function hello

テンプレートのままデプロイして呼び出したら、下記のようなjsonが返ってきました。

{
    "statusCode": 200,
    "body": "{\n  \"message\": \"Go Serverless v1.0! Your function executed successfully!\",\n  \"input\": {}\n}"
}

お片付け

下記コマンドでデプロイしたアプリケーションを削除できます。

serverless remove

まとめ

取り急ぎ、素振りということで簡単にまとめました。Serverless FrameworkはGoやTypeScriptにも対応しており、使いやすそうです。

公式ドキュメントにサンプルコードもあるので、これをなぞるだけでも非常に勉強になります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください