programming-gogogogo.hatenablog.com
前回の記事でserverless frameworkの概要を調べたので、今回はチュートリアル動画を見ながら手を動かしました。
こちらの動画を参考にしました。
自分はnpmが入っている状態から始めましたが、npmが入っていない場合は公式ページにあるようにnpmのインストールから行います。
npm install -g serverless
次に以下のコマンドでserverlessプロジェクトを作成しました。
serverless create --template aws-python3
templateオプションで言語を指定できます。
serverless createコマンド実行後、作業ディレクトリにhandler.py、serverless.yml、.npmignoreが作成されていました。
serverless.ymlはコメントを消すとコードの内容としては以下のようになっていました。
service: serverless-tutorial frameworkVersion: '2' provider: name: aws runtime: python3.8 lambdaHashingVersion: 20201221 functions: hello: handler: handler.hello
なんとなく読んだだけでもhandler.pyに定義されてるhello関数を呼び出しそうな感じが見て取れます。
より詳細な説明は公式ページなどを読むと良さそうでした。
必要になったら深掘りしていこうと思います。
serverless.ymlを動画に倣って以下のように編集しました。
service: serverless-tutorial frameworkVersion: '2' provider: name: aws runtime: python3.8 versionFunctions: false lambdaHashingVersion: 20201221 memorySize: 128 region: ap-notheast-1 functions: hello: handler: handler.hello events: - http: path: echo/hello method: get
handler.pyは以下のように出力されていました。
import json def hello(event, context): body = { "message": "Go Serverless v1.0! Your function executed successfully!", "input": event } response = { "statusCode": 200, "body": json.dumps(body) } return response
このままがわかりやすそうなので変更は加えませんでした。
次にAWSのコンソールでserverless frameworkで使用するためのaws-serverless-tutorialというIAMユーザーを作成し必要な権限を付与しました。
次にターミナルから以下のコマンドを実行してserverless frameworkがAWSにデプロイできるように設定しました。(serverlessはslsと省略できるようです)
sls config credentials --provider aws --key IAMユーザーのアクセスキー --secret IAMユーザーのシークレットキー --profile 任意のprofile名
公式ページでのconfigの説明は以下のページにありました。
次にdeployコマンドでAWSへのデプロイを実行しました。
sls deploy --stage dev
公式ページでのdeployの説明は以下のページにありました。
環境を指定するstageオプションを使えるのは便利そうです。
ちょっと待つと以下のようにターミナルに出力されました。
Serverless: Stack update finished... Service Information service: serverless-tutorial stage: dev region: ap-northeast-1 stack: serverless-tutorial-dev resources: 11 api keys: None endpoints: GET - https://0uqnx33fcj.execute-api.ap-northeast-1.amazonaws.com/dev/echo/hello functions: hello: serverless-tutorial-dev-hello layers: None
endpointに出力されたURLにアクセスするとhandler.pyのhello関数の結果が表示されました。
また、作業ディレクトリに.serverlessディレクトリが生成されていて、中にはcloudformationのテンプレートがありました。
clfテンプレートにはLambda、API Gateway、S3、IAMなどserverless frameworkで使われるリソースが定義されていました。
少しserverless frameworkのイメージが掴めたので、もう少し深掘りしてみようと思います。