きっかけ
Microsoftが提供するOpenHackという研修を受け、Serverless技術の手軽さが想像以上だったため。
研修はAzureでしたが、お仕事ではAWSなのでまずはLambdaから。
serverlessを使ってみる。
研修時(Azure Functions)はVS Codeのアドインで開発しており、
Lambdaの場合は何が良いか探したらserverlessにたどり着きました。ほんと便利ですね。これ。
- プロジェクト作成
以下の様なコマンドを実行すればプロジェクトフォルダを作ってくれます。
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
想像より圧倒的にハードルが低かったです。
続く。