commercetools's plugin for the Serverless Framework allows you to seamlessly integrate your serverless functions with commercetools' extensibility options.
- Attach a newly deployed serverless function as a commercetools' API extension.
- Create a new serverless function to process events from a commercetools' subscription.
- Supports AWS and GCP
npm i --save-dev serverless-commercetools-plugin
# or
yarn add --dev serverless-commercetools-plugin
Add the following plugin to your serverless.yml
:
plugins:
- serverless-commercetools-plugin
With the serverless CLI
serverless plugin install --name serverless-commercetools-plugin
Add your commercetools' project settings to the serverless.yaml file. Add these values under the provider section:
provider:
environment:
CTP_PROJECT_KEY: "your_key"
CTP_CLIENT_SECRET: "your_secret"
CTP_CLIENT_ID: "your_clientid"
CTP_AUTH_URL: "your_authurl"
CTP_API_URL: "your_apiUrl"
CTP_SCOPES: "your_scopes"
Add environment vars for the deploy type ("extension") and your body configuration for the Extension.
CTP_DEPLOY_TYPE: "extension"
CTP_POST_BODY: '{
"destination": {
"type": "AWSLambda",
"accessKey": "your_aws_key",
"accessSecret": "your_aws_secret"
},
"triggers": [{
"resourceTypeId": "cart",
"actions": ["Create", "Update"]
}]
}'
Note: The Lambda ARN is determined by the plugin. You do not need to include it in the configuration.
Note: Please note that you can set a key on extensions and subscriptions. The key prevents the same extension or subscription from being deployed twice from CI/CD and manually deploys. One can modify the code from this Opensource repo to customize your deploys for setup in CI/CD and multiply runs.
For Google Cloud Platform functions set the CTP_POST_BODY to use the HTTP destination as outlined in the commercetools API Extension documentation.
Add environment vars for the deploy type ("subscription") and your body configuration for the Subscription.
CTP_DEPLOY_TYPE: "subscription"
CTP_POST_BODY: '{
"destination": {
"type": "AWSLambda",
"accessKey": "your_aws_key",
"accessSecret": "your_aws_secret"
},
"triggers": [{
"resourceTypeId": "cart",
"actions": ["Create", "Update"]
}]
}'
To build your cloud resources and configure the commercetools' project run:
serverless deploy
To remove all cloud resources and commercetools' configuration run:
serverless remove
If you have any issues, please don't hesitate to:
- Use the documentation.
- Open an issue in GitHub.
When opening a new issue, please provide as much information as possible including:
- Plugin version
- node version
- cloud environment
- A reproducible code example
The GitHub issues are intended for bug reports and feature requests specifically related to the serverless plugin.
Create a local serverless function or copy the code from the examples folder. Add the plugin code to a folder named .serverless_plugins at the root of your serverless project.
Released as-is under the MIT license. See LICENSE for details.