ちょっとしたサービスとかで、Node.jsとGoを利用するのに、serverless.ymlを分けたくなかったので調べてみました。

ランタイムは関数ごとに指定できる

Serverkessの公式ブログにありました。

How to use multiple runtimes in a single serverless microservice
https://serverless.com/blog/building-mutliple-runtimes/

runtime だけでなく、package も関数ごとに指定できました。

Serverless Framework Guide – AWS Lambda Guide – Packaging
https://serverless.com/framework/docs/providers/aws/guide/packaging#packaging-functions-separately

serverless.yml_関数ごとにruntimeを指定する例

service: hoge

provider:
  name: aws

functions:
  nuxt-renderer:
    runtime: nodejs8.10
    handler: handler.render
    memorySize: 512
    timeout: 30
    package:
      exclude:
        - ./**
      include:
        - .nuxt
        - node_modules
        - static
        - "*.js"

  api:
    handler: api/bin/main
    package:
      exclude:
        - ./**
      include:
        - api/bin/**

便利です^^

参考

How to use multiple runtimes in a single serverless microservice
https://serverless.com/blog/building-mutliple-runtimes/

Serverless Framework Guide – AWS Lambda Guide – Packaging
https://serverless.com/framework/docs/providers/aws/guide/packaging#packaging-functions-separately

元記事はこちら

Serverlessでランタイム環境が別の関数をデプロイできるようにする