こんにちは、かっしー@茨城です。

サーバレス界隈で最近盛り上がりを見せているServerless Frameworkを試してみました。

今回は導入から新規テンプレートプロジェクトのデプロイまでの手順を説明します。

環境構築


公式ドキュメントを参考にインストールしましょう。

$ npm install serverless -g

 

 AWS CLIのインストール


AWS CLIのインストール手順はコチラ

1. (もし入っていなければ)pipのインストール

$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
$ sudo python get-pip.py

2. AWS CLIのインストール

$ sudo pip install awscli

 

 IAM ユーザーの作成・設定


今回はAWSの無料枠を使って検証します。まだアカウントをお持ちでない方はコチラから無料枠のアカウントを作成しましょう。

Serverless Frameworkを使用するにはAdministrator権限を与えられたIAMユーザとユーザに紐付いたアクセスキー・シークレットアクセスキーが必要です。

IAMユーザーの作成からアクセスキーの発行・profile設定までの手順は⇣の公式動画を参考に設定してください。

※profile確認方法

$ cat ~/.aws/credentials
[default]
aws_access_key_id = xxxx
aws_secret_access_key = xxxx

 

新規プロジェクト作成


これで準備はすべて整いました。早速プロジェクトを作成していきましょう。
プロジェクトの作成はserverless createコマンドで実行します。

$ serverless create --template aws-nodejs --path my-service
Serverless: Generating boilerplate...
Serverless: Generating boilerplate in "/Users/kashihara/bitbucket/tmep/my-service"
 _______                             __
|   _   .-----.----.--.--.-----.----|  .-----.-----.-----.
|   |___|  -__|   _|  |  |  -__|   _|  |  -__|__ --|__ --|
|____   |_____|__|  \___/|_____|__| |__|_____|_____|_____|
|   |   |             The Serverless Application Framework
|       |                           serverless.com, v1.14.0
 -------'

Serverless: Successfully generated boilerplate for template: "aws-nodejs"

作成されたファイルを確認します。

$ cd my-service/
$ ls
handler.js	← 実行エントリコード
serverless.yml    ← 設定ファイル

(なんとたったの2ファイル)

いざデプロイ


中身の説明は次回するとして、早速デプロイしてみます。

デプロイはserverless deploy -vです。(-vは詳細表示オプション)

$ serverless deploy -v
...
Serverless: Stack update finished...
Service Information
service: my-service
stage: dev
region: us-east-1
api keys:
  None
endpoints:
  None
functions:
  hello: my-service-dev-hello

※最初はすこし時間がかかります。

デプロイが終わったらデプロイされたLambda Functionを叩いてみます。
関数のリモート実行はserverless invoke –function <関数名>です。

$ serverless invoke --function hello
{
    "statusCode": 200,
    "body": "{\"message\":\"Go Serverless v1.0! Your function executed successfully!\",\"input\":{}}"
}

ここまででAWSコンソールを一切触ることなく、手軽にLambda関数を作ることができました。

次に、本当にAWS上に配置されているのか確認して行きましょう。

S3


まず最初にAWSコンソールからS3の画面を開くと、目新しい名前の1つのバケットが作成されています。
スクリーンショット 2017-07-24 17.29.19

このフォルダの奥深くを覗くとmy-service.zipcompiled-cloudformation-template.jsonという2つのファイルが格納されており
スクリーンショット 2017-07-24 17.35.51

my-service.zipの中には先ほど新規プロジェクト作成で生成したhandler.js が入っています。
compiled-cloudformation-template.jsonはAWS CloudFormationのテンプレートファイルですね。

CloudFormation


※特に指定をしない限り、米国東部 (バージニア北部)リージョンに適用されます。

次にCloudFormationの画面を確認すると、my-service-devというスタック作成されていました。
スクリーンショット 2017-07-24 17.52.08
(詳細は割愛しますが、見てみると理解が深まりますよ)

Lambda


※こちらも特に指定をしない限り、米国東部 (バージニア北部)リージョンに適用されます。東京リージョンと間違えないように。

最後にLambda。ちゃんとファンクションが作られています。

スクリーンショット 2017-07-24 17.58.44
スクリーンショット 2017-07-24 18.18.33

ローカルのhandler.jsを修正して、再度 serverless deploy -v すると(当然ですが)コードエディタ上の内容も変わります。

最後に


いかがでしたでしょうか?今回はコードの修正がありませんでしたが、ご自身でいろいろ試してみてください。

Serverless Frameworkはその名の通りサーバレス環境を手軽に構築&デプロイできる良い技術ですので、どんどん覚えていきたいですね。

 

採用積極募集中


株式会社プラスアールでは共に働く仲間を探しています。

興味がある方はWantedlyから社内の様子が覗けますので是非見てみてください。

 

 

Post Navigation