Deploy the APIs
Now that our APIs are complete, let’s deploy them.
Run the following in your working directory.
$ serverless deploy
If you have multiple profiles for your AWS SDK credentials, you will need to explicitly pick one. Use the following command instead:
$ serverless deploy --aws-profile myProfile
Where myProfile
is the name of the AWS profile you want to use. If you need more info on how to work with AWS profiles in Serverless, refer to our Configure multiple AWS profiles chapter.
Near the bottom of the output for this command, you will find the Service Information.
Service Information
service: notes-api
stage: prod
region: us-east-1
stack: notes-api-prod
resources: 32
api keys:
None
endpoints:
POST - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes
GET - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes/{id}
GET - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes
PUT - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes/{id}
DELETE - https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes/{id}
functions:
create: notes-api-prod-create
get: notes-api-prod-get
list: notes-api-prod-list
update: notes-api-prod-update
delete: notes-api-prod-delete
layers:
None
This has a list of the API endpoints that were created. Make a note of these endpoints as we are going to use them later while creating our frontend. Also make a note of the region and the id in these endpoints, we are going to use them in the coming chapters. In our case, us-east-1
is our API Gateway Region and 0f7jby961h
is our API Gateway ID.
If you are running into some issues while deploying your app, we have a compilation of some of the most common Serverless errors over on Seed.
Deploy a Single Function
There are going to be cases where you might want to deploy just a single API endpoint as opposed to all of them. The serverless deploy function
command deploys an individual function without going through the entire deployment cycle. This is a much faster way of deploying the changes we make.
For example, to deploy the list function again, we can run the following.
$ serverless deploy function -f list
Test the APIs
So far we’ve been testing our Lambda functions locally using the serverless invoke local
command. Now that we’ve deployed our APIs, we can test it through their endpoints.
So if you head over to our list notes API endpoint. In our case it is:
https://0f7jby961h.execute-api.us-east-1.amazonaws.com/prod/notes
You should see something like this.
[{"attachment":"hello.jpg","content":"hello world","createdAt":1487800950620,"noteId":"578eb840-f70f-11e6-9d1a-1359b3b22944","userId":"123"}]
This is a JSON encoded array of notes objects that we stored in DynamoDB.
Commit the Changes
Let’s commit the changes so far and push it to GitHub.
$ git add .
$ git commit -m "Adding our Serverless API"
$ git push
So our API is publicly available, this means that anybody can access it and create notes. And it’s always connecting to the 123
user id. Let’s fix these next by handling users and authentication.
For help and discussion
Comments on this chapter