Edited at

Serverless Framework v1.26.0リリースノート

More than 1 year has passed since last update.

Serverless Frameworkv1.26.0がリリースされました。その内容を機能毎にまとめています。


Shared API

新たにShard APIという機能がリリースされました。これは既存のCloudFormation StackでデプロイされているAPI Gatewayを別のStackから参照することで、既存のAPIの配下に新たにAPIリソースを追加するという機能です。

Serverless Framework、というかCloudFormationには1つのStackにつき、200個までしかリソースが上げられないという制限があります。そしてAPI Gatewayのエンドポイントを大量に作ってその制限に引っかかるケースが多いようです。これに対応するための機能となります。

具体的には以下のようにprovider配下に参照したいAPI Gatewayの情報を定義することで機能が使えるようになります。


serverless.yml


service: service-b
provider:
apiGateway:
restApiId: xxxxxxxxxx # REST API resource ID. Default is generated by the framework
restApiRootResourceId: xxxxxxxxxx # Root resource, represent as / path

functions:
create:
handler: posts.createComment
events:
- http:
method: post
path: /posts/{id}/comments



AWS Go support

Go用のスターターテンプレートがFramework内部に内包されました。複数functionにも対応できるようにディレクトリ毎にmain.goを分離するような仕組みとなっています。

使いたい場合は以下のコマンドで出来ます。

$ serverless create -t aws-go 

$ serverless create -t aws-go -p service-path


serverless.js configuration file support

Frameworkの設定は、serverless.ymlで記述しますが、今回serverless.jsという形式の設定ファイルをサポートしました。

要は設定ファイル内にJavaScriptを直接記述できるので、動的な値を取得して設定値とするといったことが可能になります。例えばShard APIの機能を使うにはAPI GatewayのID情報をserverless.yml内にハードコーディングしなければなりません。しかし、serverless.jsを使うことで動的にその部分を処理することが可能となります。

具体的には以下のようにmodule.exportsに設定値のJsonを渡す形になります。


serverless.js


- JavaScriptコード -

module.exports = {
provider:
name: "aws"
....
}



logRetentionInDays config

serverless.ymlのproviderセクションにCloudWatchLogsのログ保持期間のデフォルト値を設定できるようになりました。今まではデフォルト値が30日でその設定を上書きしたい場合は以下のようにresourcesセクションで上書きをしていたかもしれません。


serverless.yml

resources:

Resources:
WriteDashPostLogGroup:
Type: AWS::Logs::LogGroup
Properties:
RetentionInDays: "10"

しかし、これからは以下の設定で済みます。


serverless.yml

provider:

logRetentionInDays: 10


serverless createコマンドへの--template-pathオプションの追加

このオプションを使うことでローカルにあるServerless projectをコピーして新規プロジェクトがセットアップできます。以下のような形です。

serverless create --template-path /usr/local/src/sls-project --path my-service


Java用にPOJO input typeへの対応

Javaを使用する際にPOJO (Plain Old Java Object) 型が可能となりました。

具体的にはAWSのドキュメントを参照: https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-programming-model-req-resp.html