@serverless/aws-websockets
v1.0.0
Published
Easily provision an AWS API Gateway Websockets using [Serverless Components](https://github.com/serverless/components)
Downloads
14
Readme
aws-websockets
Easily provision an AWS API Gateway Websockets using Serverless Components
1. Install
$ npm install -g @serverless/components
2. Create
$ mkdir my-websockets-backend && cd my-websockets-backend
the directory should look something like this:
|- serverless.yml
|- .env # your development AWS api keys
|- .env.prod # your production AWS api keys
|- code
|- handler.js # the lambda function handler that would receive the websockets events
|- package.json # optional
the .env
files are not required if you have the aws keys set globally and you want to use a single stage, but they should look like this.
AWS_ACCESS_KEY_ID=XXX
AWS_SECRET_ACCESS_KEY=XXX
3. Configure
# serverless.yml
name: my-websockets-backend
stage: dev
myLambda:
component: "@serverless/aws-lambda"
inputs:
name: my-function
code: ./code
handler: handler.hello
myWebsocketApig:
component: "@serverless/aws-websockets"
inputs:
name: my-websockets-api
description: My Websockets API
deploymentStage: dev # AWS API Stage
routeSelectionExpression: '$request.body.action'
routes:
$connect: ${comp:myLambda.arn}
$disconnect: ${comp:myLambda.arn}
$default: ${comp:myLambda.arn}
message: ${comp:myLambda.arn} # you can specify any route
regoin: us-east-1
4. Deploy
myWebsocketApig (master)$ components
myLambda › outputs:
name: 'my-function'
description: 'AWS Lambda Component'
memory: 512
timeout: 10
code: './code'
bucket: undefined
shims: []
handler: 'handler.hello'
runtime: 'nodejs8.10'
env:
role:
name: 'my-function'
arn: 'arn:aws:iam::552760238299:role/my-function'
service: 'lambda.amazonaws.com'
policy: { arn: 'arn:aws:iam::aws:policy/AdministratorAccess' }
arn: 'arn:aws:lambda:us-east-1:552760238299:function:my-function'
myWebsocketApig › outputs:
name: 'my-websockets-api'
deploymentStage: 'dev'
description: 'My Websockets API'
routeSelectionExpression: '$request.body.action'
routes:
$connect: 'arn:aws:lambda:us-east-1:552760238299:function:my-function'
$disconnect: 'arn:aws:lambda:us-east-1:552760238299:function:my-function'
$default: 'arn:aws:lambda:us-east-1:552760238299:function:my-function'
message: 'arn:aws:lambda:us-east-1:552760238299:function:my-function'
id: 'vwd0sx6f5g'
url: 'wss://vwd0sx6f5g.execute-api.us-east-1.amazonaws.com/dev/'
32s › dev › my-websockets-backend › done
myWebsocketApig (master)$
For a real world example of how this component could be used, take a look at how the socket component is using it.
New to Components?
Checkout the Serverless Components repo for more information.