AWS
ServerlessFramework

serverless frameworkを触ってみた。~AWS編~


きっかけ

Microsoftが提供するOpenHackという研修を受け、Serverless技術の手軽さが想像以上だったため。

研修はAzureでしたが、お仕事ではAWSなのでまずはLambdaから。


serverlessを使ってみる。

研修時(Azure Functions)はVS Codeのアドインで開発しており、

Lambdaの場合は何が良いか探したらserverlessにたどり着きました。ほんと便利ですね。これ。


  1. プロジェクト作成

以下の様なコマンドを実行すればプロジェクトフォルダを作ってくれます。


node.js版

serverless create -t aws-nodejs --path nodejs



Python版

serverless create -t aws-python3 --path lambda-python


ちなみに生成されるソースはこんな感じです。


handler.js版

'use strict';

module.exports.hello = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify({
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
}),
};

// Use this code if you don't use the http event with the LAMBDA-PROXY integration
// return { message: '
Go Serverless v1.0! Your function executed successfully!', event };
};


2. デプロイ

以下コマンドでデプロイしてくれます。

serverless deploy

オプションを付けた方がFunctionだけデプロイするため早いそうな。慣れるまでは全部デプロイするで良いと思います。お値段変わらないし。

serverless deploy function -f Function名

注意点

以下コマンドでクレデンシャルを登録するのですが、システム環境変数に登録してある場合そちらの値が優先されます。

※リージョン情報は設定ファイルの内容が優先されます。

serverless config credentials --provider aws --key key --secret secret

IAMユーザにCloudFormationの権限が必要です。付けていないと以下のようなエラーが出ます。

  Serverless Error ---------------------------------------

User: arn:aws:iam:::user/ is not authorized to perform: cloudformation:CreateStack on resource: arn:aws:cloudformation:us-east-1::stack//*

3. 試し実行

以下実行するだけでコンソール上に結果が出ます。

serverless invoke -f hello -l

想像より圧倒的にハードルが低かったです。

続く。