🙌

ServerLess Framework を使ってみた

2021/05/16に公開

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"

すると、.npmignorehandler.pyserverless.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