タイトルは違いますが、前回に続いて、Serverless Frameworkの話題です。
8月3日にServerless Frameworkの1.0のベータ版がリリースされたので、まずは公式ドキュメントに沿って使い勝手を試してみました。
試したところ、0.5系のときと使い方が変わっていたので、残しておきたいと思います。
- 「Serverless Framework」のインストール
- プロジェクトの作成
- AWSのクレデンシャル情報の設定
- Lambdaファンクションの作成
- デプロイ
- テスト実行
- まとめ
- サーバーレス界隈の話題「ServerlessConf Tokyo 2016」
1. 「Serverless Framework」のインストール
OS | OS X |
Python | 2.7.10 |
aws-cli | aws-cli/1.10.36 |
npm | 2.15.5 |
以下のコマンドで「Serverless Framework」をローカル環境にインストールします。ベータ版をインストールする場合は、通常のインストール時のコマンドの最後に「@beta」を付けます。
sudo npm install -g serverless@beta
バージョンの確認ができれば、インストールは成功です。
serverless --version 1.0.0-beta.1.1
2. プロジェクトの作成
インストールできたら、次はプロジェクトを作成します。0.5系のときのように対話的に作成する方法はなくなり、ディレクトリ作成後、そのディレクトリに入るだけです。 Beta版だからなのか、正式リリース後もこの方法なのかは不明ですが、かなりシンプルに変化しています。
mkdir myFirstService && cd myFirstService
3. AWSのクレデンシャル情報の設定
次にAWSのアクセスキーとシークレットアクセスキーを設定します。こちらも対話的に設定する方法ではなくなっています。
以下のどちらかの方法で設定します。
Quick Setup
公式ドキュメントでは「Quick Setup」として環境変数に設定する方法が記載されています。シェルを終了すると消えてしまうので、次回実行時に再度設定する必要があります。
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Advanced & Longer Term Setup
「Advanced & Longer Term Setup」として、こちらも公式ドキュメントで「AWS CLI」の設定方法が記載されています。上の「Quick Setup」の方法は一時的に利用する場合の設定方法なので、通常はこちらのやり方で設定することになると思います。
$ aws configure AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Default region name [None]: us-east-1 Default output format [None]: ENTER
4. Lambdaファンクションの作成
1. Lambdaファンクションの作成
以下のコマンドでLambdaファンクションを作成します。
serverless create --template aws-python
2. 生成されたファイルの確認
先ほどの「myFirstService」ディレクトリの中を確認すると、以下の表にある4ファイルが生成されています。自動生成される設定ファイルは、jsonファイルではなく、yamlファイルに変更になったようです。
event.json | テスト実行時にLambdaファンクションのevent引数に渡す値 |
handler.py | Lambdaファンクション |
serverless.env.yml | 環境設定ファイル。リージョンやステージを設定 |
serverless.yml | メインの設定ファイル。サービス名、言語、ファンクション名、リソースなどを設定 |
event.json
1 { 2 "key3": "value3", 3 "key2": "value2", 4 "key1": "value1" 5 }
handler.py
1 def hello(event, context): 2 return { "message": "Go Serverless v1.0! Your function executed successfully!", "event": event }
serverless.env.yml
1 # This is the Serverless Environment File 2 # 3 # It contains listing of your stages, and their regions 4 # It also manages serverless variables at 3 levels: 5 # - common variables: variables that apply to all stages/regions 6 # - stage variables: variables that apply to a specific stage 7 # - region variables: variables that apply to a specific region 8 9 vars: 10 stages: 11 dev: 12 vars: 13 regions: 14 us-east-1: 15 vars:
serverless.yml
※serverless.ymlは行が多いので少し省略
12 # Happy Coding! 13 14 service: aws-python # NOTE: update this with your service name 15 16 provider: 17 name: aws 18 runtime: python2.7 19 20 # you can overwrite defaults here 21 #defaults: 22 # stage: dev 23 # region: us-east-1 24 25 # you can add packaging information here 26 #package: 27 # include: 28 # - include-me.js 29 # exclude: 30 # - exclude-me.js 31 # artifact: my-service-code.zip 32 33 functions: 34 hello: 35 handler: handler.hello
3. サービス名の変更
Lambdaファンクションを作成するコマンドを実行した後に「Please update the "service" property in serverless.yml with your service name」とメッセージが出力されるので、まずは生成された「serverless.yml」ファイルの「service name」を変更します。
14行目に仮のサービス名「aws-python」が入っているので、今回は「myFirstService」に変えました。
vim serverless.yml
serverless.yml
14 service: myFirstService # NOTE: update this with your service name
5. デプロイ
1. デプロイコマンド
ひとまず、サービス名以外は初期値のままでデプロイしてみます。
serverless deploy
2. コマンド実行後の様子
下のキャプチャを確認すると、CloudFormationのスタックが作成されたり、コードをzipファイルに固めてS3にアップロードしているのが、わかります。
3. CloudFormationのマネジメントコンソールで確認
CloudFormationのマネジメントコンソールで確認すると、スタックが作成されています。S3バケットやLambdaファンクション以外にIAM Roleも作成されています。
4. S3のマネジメントコンソールで確認
S3のマネジメントコンソールで確認すると、自動で生成されたバケットの中にzipファイルがアップロードされています。
5. Lambdaのマネジメントコンソールで確認
Lambdaのマネジメントコンソールで確認すると、「myFirstService-dev-hello」というLambdaファンクションが作成されています。
6. テスト実行
1. テスト実行コマンド
デプロイできたので、ローカル環境からテスト実行してみます。Lambdaファンクションのevent引数に渡す値が入った「event.json」ファイルを指定して実行します。
serverless invoke --function hello --path event.json
2. 実行結果
問題なく想定していた値が返ってきました。
7. まとめ
今回は、Serverless Framework 1.0 Beta版を試してみました。
対話的に設定する方法がなくなったり、自動生成される設定ファイルがjsonファイルからyamlファイルに変更されるなど、前回の0.5系からいろいろと変更が入った、という印象でした。自動生成されるファイルも4ファイルのみでしたので、よりシンプルに設定できるような方向性で変更を加えているのかもしれません。
まだまだ日々大きく変化している印象の「Serverless Framework」。他にもいろいろな機能があると思うので、次回も「Serverless Framework」の1.0 Beta版を引き続きみてみたいと思います。
いや〜、Serverless Frameworkって本当にいいものですね。
8. サーバーレス界隈の話題「ServerlessConf Tokyo 2016」
最後にサーバーレス界隈の話題をひとつ。
今年の5月にニューヨークのブルックリンで「ServerlessConf」が初めて開催されました。その「ServerlessConf」ですが、早くも2箇所目として東京で10月1日(土)に開催されます!
ServerlessConf Tokyo 2016
8月16日にチケットの販売が開始され、カンファレンス前日のプレカンファレンス・ワークショップの方は既に満席ですが、カンファレンスの方はまだ受付をおこなっています(8月17日現在)。
日本でここまで大きなサーバーレス関係のイベントは初めてだと思いますので、「サーバーレス」について気になっている方はこの機会に参加されてみてはいかがでしょうか?
チケットのお申し込みはこちら