A module to interact with the Twilio Serverless API. For example to deploy projects.
Part of the Serverless Toolkit.
Full reference documentation at serverless-api.twilio-labs.com
- Installation
- Example
- API
client.activateBuild(activateConfig: ActivateConfig): Promise<ActivateResult>
client.deployLocalProject(deployConfig: DeployLocalProjectConfig): Promise<DeployResult>
client.deployProject(deployConfig: DeployProjectConfig): Promise<DeployResult>
client.getClient(): GotClient
client.list(listConfig: ListConfig): Promise<ListResult>
api
andfsHelpers
- Contributing
- License
npm install @twilio-labs/serverless-api
If you want to deploy a local project you can do this using:
const TwilioServerlessApiClient = require('@twilio-labs/serverless-api');
const client = new TwilioServerlessApiClient({
accountSid: '...',
authToken: '...',
});
client.on('status-update', evt => {
console.log(evt.message);
});
const result = await client.deployLocalProject({
cwd: '...',
envPath: '...',
accountSid: '...',
authToken: '...',
env: {},
pkgJson: {},
serviceName: 'serverless-example',
functionsEnv: 'dev',
assetsFolderName: 'static',
functionsFolderName: 'src',
});
You can find the full reference documentation of everything at: https://serverless-api.twilio-labs.com
Some functions you might want to check out is:
"Activates" a build by taking a specified build SID or a "source environment" and activating the same build in the specified environment.
Deploys a local project by reading existing functions and assets from deployConfig.cwd and calling this.deployProject with it.
Functions have to be placed in a functions or src directory to be found. Assets have to be placed into an assets or static directory.
Nested folder structures will result in nested routes.
Deploys a set of functions, assets, variables and dependencies specified in deployConfig. Functions & assets can either be paths to the local filesystem or Buffer instances allowing you to dynamically upload even without a file system.
Unless a deployConfig. serviceSid is specified, it will try to create one. If a service with the name deployConfig.serviceName already exists, it will throw an error. You can make it use the existing service by setting overrideExistingService to true.
Updates to the deployment will be emitted as events to status-update.
const result = await client.deployProject({
env: {},
pkgJson: {},
serviceName: 'serverless-example',
functionsEnv: 'dev',
functions: [
{
name: 'hello-world',
path: '/hello-world-path',
content: await readFile(path.join(__dirname, 'some-dir', 'handler.js')),
access: 'public',
},
],
assets: [
{
name: 'image',
path: '/foo/image.jpg',
access: 'public',
content: await readFile(path.join(__dirname, 'another-dir', 'image.jpg')),
},
]
});
Returns the internally used GotClient instance used to make API requests
Returns an object containing lists of services, environments, variables functions or assets, depending on which have beeen requested in listConfig
There's also a variety of small helper libraries that you can find more details on https://serverless-api.twilio-labs.com.
You can consume them in two ways:
const { fsHelpers, api, utils } = require('@twilio-labs/serverless-api');
// or
const fsHelpers = require('@twilio-labs/serverless-api/dist/utils/fs');
const api = require('@twilio-labs/serverless-api/dist/api');
const utils = require('@twilio-labs/serverless-api/dist/utils');
This project welcomes contributions from the community. Please see the CONTRIBUTING.md
file for more details.
Please be aware that this project has a Code of Conduct. The tldr; is to just be excellent to each other ❤️
Thanks goes to these wonderful people (emoji key):
Dominik Kundel 💻 📖 🤔 |
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT