Help us understand the problem. What is going on with this article?

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

horike37
CEO of Serverless Operations, Inc Serverless Framework Core Maintainer
https://serverless.co.jp
serverless-operations
AWSクラウド技術の豊富な知見を活かし、サーバーレスによる開発や運用の支援、コンサルティングまで行う会社です
https://serverless.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away