serverless-framework
サーバーレス動作
サーバーレスの使い方まとめ(リファレンス)
Serverless Frameworkでカスタムドメインを設定する
V3でのアップデート内容
設定ファイル
設定ファイルparent設定
frameworkVersion:
service:
# サーバーレスのプラグインを当てることができる(自作もOK)
plugins:
# Lambdaから他リソースを操作するためのIAMを設定する
provider:
# プラグインのカスタムを記載する。
custom:
# AWSのserverless FrameworkがAWS CloudFormationをスタックを作成する
resources:
functions:
frameworkVersion
フレームワークのversionを記載する
plugins
プラグインを当てるセクション
- 自作のプラグインを当てることも可能。
- プラグインの当て方に順番がある。
resource
今までproviderセクションに定義できるのはAPI Gatewayだけだったが、それ以外のリソースもproviderで定義可能になった(V3)
※今まではresourcesセクションにまとめて定義していた
serverless framework v3
【Serverless Framework】version3の新機能&知らなかった機能
serverless-framework AWS認証情報セットアップ
AWS_PROFILEに環境変数を設定するといける。
export AWS_PROFILE="profileName2"
deployする前に処理を挟む
serverless URLからstageを取る
サービス
serverlessはサービスという単位で実行環境を作っていく。
AWSをプロバイダーとしてNode.jsでサービスを開設する場合は以下の手順になる。
$ serverless create --template aws-nodejs --name my-special-service --path my-special-service
すると、my-special-serviceのディレクトリが作られ、その配下に以下のファイルができているはずです。 これでサービスの作成は完了です。
template
どの言語でLambdaを動かしたいかによってテンプレートを変更して あげる。
serverless create --template aws-nodejs --name my-special-service --path my-special-service
一覧 リファレンス
serverless初心者講座
serverless 初期化コマンド
- 実行フォルダー直下にファイル群を作成するか(
-p
をつける) - フォルダーの中にまとめた状態で作成するか(
-p
をつけない)
初期化コマンド終了後
serverlessのパッケージが存在していないため以下のコマンドを実行する。
yarn
or yarn add serverless
serverlessが実行できることの確認
$ sls create
をした時点で、エンドポイントを叩くとサンプルのJSONが返ってくる参考用の helloメソッド
が用意されています
localのメソッドを試すには $ sls invoke
コマンドを使用します。
# ローカルのsls invokeを使い hello メソッドを試す
$ npx sls invoke local --function hello
or
# --function は -f と省略する事が可能
$ npx sls invoke local -f hello
- deployされたメソッドを試す
デプロイしたものは
$ sls invoke hello
とすればOK!
serverless invoke
Serverless Frameworkで作成するメソッドは、
- エンドポイントを叩く
- cronで決めた時間に実行する
等、何かしらトリガーがある。そのため
$ sls invoke
はそれらのメソッドをすぐに実行し試す事ができる。 ※ローカルだけではなくデプロイしたものも実行できる デプロイしたものは$ sls invoke hello
とすればOK!
serverless.yml
トップに関してはセクションという。
serverless.ymlを一行一行見ていく
service: xxxxx-xxxxx
frameworkVersion: ">=1.53.0 <2.0.0"
plugins:
- serverless-pseudo-parameters
custom: ${file(../../serverless.common.yml):custom}
provider:
name: aws
runtime: python3.8
stage: ${opt:stage, self:custom.defaultStage}
region: ap-northeast-1
profile: ${opt:profile, ''}
logRetentionInDays: 30
environment:
TZ: Asia/Tokyo
STAGE: ${self:provider.stage}
API_ENDPOINT: ${self:custom.api_endpoint}
iamRoleStatements:
- Effect: Allow
Action:
- ssm:GetParameter
- ssm:PutParameter
Resource:
- arn:aws:ssm:${self:provider.region}:#{AWS::AccountId}:parameter/*
functions:
Refresh:
handler: handler.xxx_handler
layers:
- ${self:custom.requirements_layer}
- ${self:custom.shared_layers}
events:
- schedule: cron(0 16 ? * WED *) # 1週間おき(UTC -> JST毎週木曜の1:00AM)に実行
- frameworkVersion 公式ドキュメントではチームの全員がまったく同じ設定を使用し、予期しない問題が発生しないように、正確なバージョンに固定することをオススメ。 正確なバージョンとはframeworkVersion: "=1.0.3" こう書くようです
プラグインセクション
プラグインを定義する順序が重要であることに注意してください。サーバーレスはすべてのコア プラグインをロードし、次にカスタム プラグインを定義した順序でロードします。
customセクション
プラグインの追加構成を追加できる場所。