ServerLess Framework を使ってみた
npm install -g serverless
サーバーレスはNode.jsで作られたCLIツールです。なので事前にNode.js環境が準備されていることを前提に進めます。
ServerlessはNpmのパッケージとして公開されています。
serverless --version
バージョン確認の結果↓
Framework Core: 2.28.7
Plugin: 4.4.3
SDK: 2.3.2
Components: 3.7.2
IAMユーザ作成
AWS LambdaなどのAWSのサービスでは、サービスにアクセスするときに認証情報を提供して、そのサービスが所有するリソースにアクセスする権限があることを確認する必要があります。これを実現するには、AWS Identity and Access Management(IAM)を使用します。
今回はAWSマネジメントコンソールでadministraterAccese権限に設定してユーザを作ります。
その後「アクセスキーの作成」を押して個々で出た値をメモっときます。
さきほどのキーを使って、AWSの認証情報を登録
serverless config credentials --provider aws --key アクセスキーID --secret シークレットアクセスキー
aws configure
でアクセスキーとシークレットアクセスキーを指定する方法もある
~/.aws/credentials
という場所に保存されるので、直接cat ~/.aws/credentials
で確認できる。
serverless create --template aws-python3(テンプレート名) --name ディレクトリ名 --path サービスを作る場所のパス
下記のように置き換えをして、短く記述ができます。
—template -t
—name -n
—path -p
コマンドでサーバレスプロジェクトを作成
今回はsample-serverless
という名前でプロジェクトを作りました。
serverless create --t aws-python3 --n sample-serverless --p sample-serverless
下記のような反応
Serverless: Generating boilerplate...
Serverless: Generating boilerplate in "/Users/username/Desktop/sample-serverless"
_______ __
| _ .-----.----.--.--.-----.----| .-----.-----.-----.
| |___| -__| _| | | -__| _| | -__|__ --|__ --|
|____ |_____|__| \___/|_____|__| |__|_____|_____|_____|
| | | The Serverless Application Framework
| | serverless.com, v2.28.7
-------'
Serverless: Successfully generated boilerplate for template: "aws-python3"
すると、.npmignore
、 handler.py
、 serverless.yml
の3つのファイルが自動生成されます。
ファンクションを試す
デフォルトのhello関数をローカルで実行してみる
% sls invoke local --function hello
{
"statusCode": 200,
"body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}"
}
デプロイ
serverless deploy
-
.serverless というフォルダが生成。
serverless.yml と handler.js を読み込んで、.serverless のディレクトリを作成し最終的に、このファイルがデプロイされる。 -
lambdaとcloudFormationにあらたなリソースができる
デプロイしたリソースを削除
sls remove -v
Discussion