Serverless Frameworkの使い方をまとめました。
今後何かいいTipsがあれば更新していこうかと思います。
基本コマンド
インストール
事前にnodejsをインストールしておくこと
npm install -g serverless
バージョン確認
sls --version
ログイン
sls login
AWSの認証情報の設定
sls config credentials --provider aws --key YOUR_KEY --secret YOUR_SECRET
更新のときは -o オプションを加える
-o はオーバーライトの意味
が、実際これは別にやらなくてもよい
テンプレート作成
node.jsのテンプレートを使用
sls create --template aws-nodejs
別フォルダにあるテンプレートを使用
sls create --template-path path/to/my/template/folder -p path/to/my/service -n my-new-service
Githubとかにあるテンプレートを使用
serverless install -u https://github.com/foo-bar.....
削除
sls remove
デプロイ
sls deploy -v
-v でプロセスを確認できる
作成も更新もこのコマンドで実行する
sls deploy --aws-profile devProfile
AWSの認証情報を指定してデプロイ
sls deploy function -f myFuncName
Lambda関数の更新には関数名を指定する場合
名前を指定する
sls deploy --config ./tmp/sample.yml
ファイル名を指定する場合
注意点として、実行したディレクトリの場所からテンプレートファイルの指示通りにファイルを探索するので、テンプレートファイルで別のファイルから読み取りを行っている場合、実行場所によってはパスの修正が必要となる。
【参考】
https://www.serverless.com/blog/quick-tips-for-faster-serverless-development
dry run
sls deploy --noDeploy
構文に誤りがないかチェック
追記
こちらのオプションは削除されました。
今後は package コマンドで確認するようです。
応用
外部ファイルを参照する
resources:
- ${file(./resources/s3.yml)}
コードチェック
※事前にPythonをインストール
pip install cfn-lint
以下のコマンドで確認
cfn-lint sample.yml
これでCloudFormationの構文に誤りがないかチェックができる
詳細はこちら
https://github.com/aws-cloudformation/cfn-python-lint
トラブルシューティング
バケットポリシーのバージョン表記
Version: 2012-10-17
シングルクォーテーションなしの場合
slsが読み違えて時刻に変換してしまうので、
以下のように変更する
Version: '2012-10-17'
resourcesフォルダ内のファイルを参照できない
ファイルパスが間違っている
変数を利用している場合、うまく参照できていない可能性がある
外部ファイルを読み込めない
各CloudFormationのファイルは、
Resourcesではじまるように記述しないといけない、以下例
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
Lambdaに不要なファイルがある
Serverless Framework用のフォルダ内に例えばREADME.mdがある状態でデプロイを行うと、README.mdも一緒にLambdaにアップロードされてしまいます。
それを回避するため、serverless.yml内に以下のような記述をする。
package:
individually: true
exclude:
- README.md
Serverless Frameworkがわからなくなったら
立ち寄りたい、、、
そんな記事になれればと思います。
Thanks.