SikZone
SikZone

Reputation: 248

How do I de-clutter my serverless.yml file?

I'm working on a serverless backend project at the moment. As I keep adding functions to my serverless.yml file, I can't help but wonder, surely there's a better way to write function configurations in other, seperate .yaml files, and then reference these in serverless.yml. Unfortunately, I've got no idea how to do this.

My project structure is like this:

Serverless folder structure

And my functions are:

functions:
  create:   
    handler: users/create.create
    events:
      - http:
          path: users/create
          method: post
          cors: true

  login:   
    handler: users/login.login
    events:
      - http:
          path: users/login
          method: post
          cors: true

  list:
    handler: users/list.list
    events:
      - http:
          path: users
          method: get
          cors: true

  get:
    handler: users/get.get
    events:
      - http:
          path: users/{id}
          method: get
          cors: true

  update:
    handler: users/update.update
    events:
      - http:
          path: users/{id}
          method: put
          cors: true

  delete:
    handler: users/delete.delete
    events:
      - http:
          path: users/{id}
          method: delete
          cors: true

  create_addr:
    handler: address/create.create
    events:
      - http:
          path: address
          method: post
          cors: true

  delete_addr:
    handler: address/delete.delete
    events:
      - http:
          path: address/{id}
          method: delete
          cors: true

  get_addr:
    handler: address/get.get
    events:
      - http:
          path: address/{id}
          method: get
          cors: true

  update_addr:
    handler: address/update.update
    events:
      - http:
          path: address/{id}
          method: put
          cors: true


  create_order:
    handler: order/create.create
    events:
      - http:
          path: order
          method: post
          cors: true

  delete_order:
    handler: order/delete.delete
    events:
      - http:
          path: order/{id}
          method: delete
          cors: true

  get_order:
    handler: order/get.get
    events:
      - http:
          path: order/{id}
          method: get
          cors: true

How do I go on about this?

Upvotes: 1

Views: 106

Answers (1)

flyx
flyx

Reputation: 39778

According to the docs, you can do:

# serverless.yml
functions:
  create: ${file(../create.yml)}
  login: ${file(../login.yml)}
  list: ${file(../list.yml)}
  get: ${file(../get.yml)}
  # ...
# create.yml
handler: users/create.create
events:
  - http:
      path: users/create
      method: post
      cors: true

And so on.

Upvotes: 1

Related Questions