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の情報を定義することで機能が使えるようになります。
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を渡す形になります。
- JavaScriptコード -
module.exports = {
provider:
name: "aws"
....
}
logRetentionInDays config
serverless.ymlのproviderセクションにCloudWatchLogsのログ保持期間のデフォルト値を設定できるようになりました。今まではデフォルト値が30日でその設定を上書きしたい場合は以下のようにresourcesセクションで上書きをしていたかもしれません。
resources:
Resources:
WriteDashPostLogGroup:
Type: AWS::Logs::LogGroup
Properties:
RetentionInDays: "10"
しかし、これからは以下の設定で済みます。
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