DevOps for Serverless Applications
上QQ阅读APP看书,第一时间看更新

Functions and events

Functions are the properties that are defined within the service, and they are defined within the serverless.yml, so we name the function and provide the handler property to the function, and this property points to the function file, which could be Node.js or Python. We can add multiple functions within the property. The functions can inherit the properties from the provider or we can define the properties at function level. These function properties vary as per the cloud provider, as shown in the following code:

# serverless.yml
service: myService
provider:
name: aws
runtime: nodejs6.10
memorySize: 512 # will be inherited by all functions
functions:
usersAdd:
handler: handler.userAdd
description: optional description for your function
userModify:
handler: handler.userModify
userDelete:
handler: handler.userDelete
memorySize: 256 # function specific

The functions can be listed as arrays if we create a separate file for each function: 

 # serverless.yml

functions:
- ${file(../user-functions.yml)}
- ${file(../post-functions.yml)}
# user-functions.yml
addUser:
handler: handler.user
deleteUser:
handler: handler.user

An environment object property can also be added to the function within the service, and it should be a key–pair value. Also, the function-specific environment variable overrides the provider-specific environment variable: 

 # serverless.yml 
service: service-name
provider: aws

functions:
hello:
handler: handler.hello
environment:
TABLE_NAME: tableName

Events are things that trigger the function, such as the S3 bucket upload. There are multiple events supported by Serverless Framework, but they vary as per the cloud provider. We can define multiple events for a single function, as shown in the following code: 

events:
- http:
path: handler
method: get
The types of events provided for AWS Lambda by Serverless Framework are shown at the following link:
https://serverless.com/framework/docs/providers/aws/events/