【Serverless】はじめてのServerless Framework v.1 rc1 その1
はじめに
先日、実践Serverlessの勉強会レポートを書きました。
そして、ちょうど良く業務でもサーバーレスでやってみる?という
話にもなったので、技術調査も兼ねてプライベートで触ってみました。
なお、今回はバックエンドではなく
フロントエンド寄りの構成の話となります。
今回は、Serverless Frameworkを使って効率的に開発できるか試してみます。
アーキテクチャ図
Cloudcraftというサービスを使い書いてみました。
https://cloudcraft.co/view/5d16ea58-14e0-439b-a8eb-18c047e9f39a?key=wIxzJw5VW44YEquqe4O7Sw
※今回は、ServerlessなのでAPI GatewayとAWS Lambdaの話がメインです。
環境
- OS X El capitan
- nodebrew 0.9.6
- Serverless v.1 rc1
前提条件
- Serverless Frameworkを触ったことない人
- AWSコンソールにログインできる
やってみた
インストールとプロジェクト作成
クイックスタートに書かれているように1 〜 5をやります。
Step 4に
serverless create --template aws-nodejs --path my-service
とありますが、nodejsで作られるようになっていますが
ServerlessはPython、Java8にも対応しているのでお好みで大丈夫です。
今回はそのままNode.jsを使います。
また、今回はプロジェクト名を「my-first-serverless-rc1」としました。
作られたものを確認
自動でプロジェクトの雛形が作られ、そのままデプロイできますが
それぞれのファイルを確認していきます。
・serverless.yml
API Gateway, Lambda, IAMに関する設定をまとめて管理するファイル。
デフォルトが東京リージョンでないため、注意。
また、そのままだとLambdaしか作られないため、API Gatewayも一緒に作る場合
以下の設定を追加します。
functions: hello: handler: handler.hello events: - http: path: handler/hello method: get
ドキュメントは、以下のページです。
・handler.js
AWS Lambdaでの「入り口」となる部分です。
自動生成した際は「Go Serverless v1.0! Your function executed successfully!」という
文字列が返却される状態となっています。
・event.json
ローカルテスト用のファイルだと思います。
あまり使う機会がなく、まだ詳しくないですがあっても問題ないです。
デプロイ
Step 6のコマンドでデプロイできますが、オプションをつけると経過がわかるのでオススメです。
[0:00:46] Y_Fujikawa:my-first-serverless-rc1 $ serverless deploy -v Serverless: Packaging service... Serverless: Removing old service versions... Serverless: Uploading CloudFormation file to S3... Serverless: Uploading service .zip file to S3... Serverless: Updating Stack... Serverless: Checking Stack update progress... CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - InsertLambdaFunction CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - InsertLambdaFunction CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474556465062 CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474556465062 CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474556465062 CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev CloudFormation - DELETE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474250545851 CloudFormation - DELETE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474250545851 CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev Serverless: Stack update finished... Service Information service: my-first-serverless-rc1 stage: dev region: ap-northeast-1 endpoints: GET - https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello functions: my-first-serverless-rc1-dev-hello: arn:aws:lambda:ap-northeast-1:201892032205:function:my-first-serverless-rc1-dev-hello
動作確認
Endpointsも書かれているので、Curlコマンドを叩けばすぐ確認できます。
curl https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello {"message": "Go Serverless v1.0! Your function executed successfully!"}
動作確認が済んだら、以下のコマンドを実行すればデプロイした内容が
すべて削除されてきれいになります。
serverless remove
注意
APIの認証をしていないため、APIのURLがわかってしまうと
いたずらにアクセスされる可能性があるため、認証キーを設定した方が良いです。
設定の仕方はまた次回に書きます。
まとめ
最初、便利だなぁと思っていたのですが
手動での設定が多すぎてとても大変な印象を受けましたが
すでに便利なフレームワークがあったことに驚きました。
もう少しいろいろ試してみて、便利さを実感していこうと思います。