Serverless FrameworkでLambdaの開発環境を整える

AWSのLambdaの開発をするのに便利なServerless Frameworkのインストール~デプロイまでやってみます。

Serverless Frameworkとは

AWS Lambdaのようなサーバーレスアプリケーションの開発、設定を管理し、デプロイするためのツールです。
AWS Lambda 以外にも GCP の Cloud Functions などにも対応しています。

環境

  • Amazon Linux 2

インストール

Nodeインストール

# sudo amazon-linux-extras install epel
# yum install -y nodejs npm

Serverless Frameworkインストール

# npm install -g serverless
# serverless --version
1.45.1

serverless コマンドはエイリアスが設定されていて sls と入力することで同様の操作が行えます。

# sls -v
1.45.1

IAMユーザー作成

Serverless Frameworkで利用するIAMユーザーを事前に作成しておく必要があります。

  • ユーザー名:sls-user
  • アクセスの種類:「プログラムによるアクセス」にチェック
  • 既存のポリシーを直接アタッチ:
    「AdministratorAccess」をチェック

このようにユーザーを作成し、
作成後に表示されたアクセスキーの情報をしっかり保管してください。

AWS CLIの初期設定

Amazon Linux 2のためCLIはデフォルトでインストールされています。
ここでは初期設定のみ行います。

ここからは一般ユーザーで作業を進めます。

先ほど作成したユーザーのアクセスキーを設定します。

$ aws configure
AWS Access Key ID [None]: ********************
AWS Secret Access Key [None]: ***************************************
Default region name [None]: ap-northeast-1
Default output format [None]:

サービス作成

LambdaはPython3で書くのが慣れてるのでテンプレートは「aws-python3」を選択しています。

$ sls create --template aws-python3 --path sls-test

「sls-test」ディレクトリができ「handler.py」と「serverless.yml」の2ファイルが作られました。

ローカル実行

ローカルで実行してテストをすることもできます。
AWSのイベントトリガーから呼び出される際はJSON形式のデータが渡されるので、
自分で想定されるパラメータを作成してのデバッグに便利です。

$ sls invoke local -f hello -d "{"foo":"bar"}"

デプロイ

$ sls deploy

リージョンを何も設定しないとデフォルト「バージニア北部」となるようですが、
Lambda関数つくられました。

実行

デプロイしたLambda関数を実行します。

$ sls invoke -f hello -d "{"foo":"bar"}"

まとめ

実際にAWSのサービスと連携させた処理を書くとローカル実行しにくいものも思いますが、デバッグや バージョン管理が格段にしやすくなるのでLambdaの開発では欠かせないツールといってもいいかもしれません!

参考