Slide 1

Slide 1 text

DEPLOYING WITH THE SERVERLESS API & CLI

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Vinci Chen Software Engineer vchen@twilio.com LinkedIn: linkedin.com/in/vincianechen Dominik Kundel Developer Evangelist dkundel@twilio.com Twitter: @dkundel

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

SERVERLESS API

Slide 8

Slide 8 text

SERVICES • Main container for your application • Forms the basis of your domain • Can have multiple services per account

Slide 9

Slide 9 text

Services signal-corgis A container for everything

Slide 10

Slide 10 text

SERVICES curl -X POST https://serverless.twilio.com/v1/Services \ -d "IncludeCredentials=True" \ -d "UniqueName=signal-corgis" \ -d "FriendlyName=Corgis App" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Slide 11

Slide 11 text

BRING YOUR OWN LANGUAGE TWILIO.COM/DOCS/RUNTIME/FUNCTIONS-ASSETS-API

Slide 12

Slide 12 text

ENVIRONMENTS & VARIABLES • Maintain testing environments instead of deploying directly to prod • Environment variables to keep track of configurations easily

Slide 13

Slide 13 text

Services Environments Represents a single twil.io domain. signal-corgis-1234-dev.twil.io

Slide 14

Slide 14 text

ENVIRONMENTS curl -X POST https://serverless.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Environments \ -d "UniqueName=development" -d "DomainSuffix=dev" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Slide 15

Slide 15 text

Services Variables Environments Can be referenced in Function code {"WORLD_GREETING": "Cloud"}

Slide 16

Slide 16 text

ENVIRONMENT VARIABLES curl -X POST https://serverless.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Environments/ ZEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Variables \ -d "Key=WORLD_GREETING" -d "Value=Cloud" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Slide 17

Slide 17 text

FUNCTIONS AND ASSETS • Functions: snippets of code • Assets: static files • Wrappers for the actual content

Slide 18

Slide 18 text

Services Assets Functions Variables Environments Get Corgi Name Cheddar Picture Static file Code snippet

Slide 19

Slide 19 text

FUNCTIONS AND ASSETS curl -X POST https://serverless.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Functions \ -d "FriendlyName=Get Corgi Name" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token curl -X POST https://serverless.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets \ -d "FriendlyName=Cheddar Picture" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Slide 20

Slide 20 text

FUNCTION AND ASSET VERSIONS • Upload the content of the Function or Asset • Allows for references to previous Versions

Slide 21

Slide 21 text

Services Function Versions Assets Functions Variables Environments Asset Versions Create a Version with a path and visibility /get-name /cheddar [private] [public]

Slide 22

Slide 22 text

FUNCTION VERSIONS curl -X POST https://serverless-upload.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Functions/ ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Versions \ -F "Content=@create_name.js; type=application/javascript" \ -F "Path=/get-name" \ -F "Visibility=public" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Slide 23

Slide 23 text

ASSET VERSIONS curl -X POST https://serverless-upload.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Versions \ -F "Content=@cheddar.jpg" \ -F "Path=/cheddar" \ -F "Visibility=private" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Slide 24

Slide 24 text

BUILDS • Bundle Function and Asset Versions • Include npm packages as dependencies • Ex: ‘dog-names’ (dog name generator)

Slide 25

Slide 25 text

Services Function Versions Assets Functions Builds Variables Environments Asset Versions Build a package with specific Function & Asset Versions /get-name /cheddar dog-names: ^2.0.0

Slide 26

Slide 26 text

BUILDS curl -X POST https://serverless.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Builds \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token -d "FunctionVersions=ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -d "AssetVersions=ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -d 'Dependencies=[{"name": "dog-names", "version": "^2.0.0"}]'

Slide 27

Slide 27 text

DEPLOYMENTS • Connects a Build to an Environment • A Build can be connected to multiple Environments

Slide 28

Slide 28 text

Services Function Versions Assets Functions Builds Variables Environments Asset Versions Deployments Activate a Build in an Environment /get-name /cheddar dog-names: ^2.0.0 active in: dev

Slide 29

Slide 29 text

DEPLOYMENTS curl -X POST https://serverless.twilio.com/v1/Services/ ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Environments/ ZEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Deployments \ -d "BuildSid=ZBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Slide 30

Slide 30 text

INVOCATION signal-corgis-1234-dev.twil.io/get-name signal-corgis-1234-dev.twil.io/cheddar

Slide 31

Slide 31 text

BENEFITS OF THE API • Multiple environments without credential swapping • More control over how you deploy & deployment automation • Ability to incorporate complicated deployment workflows (i.e. rollbacks) • Build tools and integrations for your IDE, CI/CD workflows, etc.

Slide 32

Slide 32 text

SERVERLESS TOOLKIT

Slide 33

Slide 33 text

SERVERLESS TOOLKIT • CLI to deal with anything Serverless • Node.js helper library to built your own integrations • Collection of Function & Asset templates to get you started quicker • github.com/twilio-labs/serverless-toolkit

Slide 34

Slide 34 text

npm install -g twilio-cli twilio plugins:install @twilio-labs/plugin-serverless twilio serverless:init signal-corgis cd signal-corgis HOW TO INSTALL THE SERVERLESS TOOLKIT

Slide 35

Slide 35 text

DEMO!

Slide 36

Slide 36 text

SERVERLESS TOOLKIT SERVERLESS FRAMEWORK INTEGRATION VS CODE INTEGRATION github.com/twilio-labs/serverless-toolkit

Slide 37

Slide 37 text

• Serverless API documentation: twilio.com/docs/runtime/functions-assets-api • Check out the Serverless Toolkit: github.com/twilio-labs/serverless-toolkit • Check our existing templates: github.com/twilio-labs/function-templates • Slides: twil.io/signal-serverless-api • Contribute ❤ WHAT’S NEXT?

Slide 38

Slide 38 text

TEXT “IN” TO 415-289-5198 to participate in future user research

Slide 39

Slide 39 text

THANK YOU We can’t wait to see what you build!

Slide 40

Slide 40 text

Services Function Versions Assets Functions Builds Variables Environments Asset Versions Deployments