Serverless Commercetools Plugin

Serverless framework plugin that registers the deployed function as a commercetools API Extension or attaches it to a Subscription.

View on Github

commercetools Serverless Plugin

commercetools's plugin for the Serverless Framework allows you to seamlessly integrate your serverless functions with commercetools' extensibility options.

Contents

Features

  • 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

Install

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

Configuration

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"

API Extension

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.

Subscription

Add environment vars for the deploy type ("subscription") and your body configuration for the Subscription.

    CTP_DEPLOY_TYPE: "extension"
    CTP_POST_BODY: '{
        "destination": {
          "type": "AWSLambda",
          "accessKey": "your_aws_key",
          "accessSecret": "your_aws_secret"
        },
        "triggers": [{
          "resourceTypeId": "cart",
          "actions": ["Create", "Update"]
        }]
    }'

Usage

To build your cloud resources and configure the commercetools' project run:

serverless deploy

To remove all cloud resources and commercetools' configuration run:

serverless remove

Help

If you have any issues, please don't hesitate to:

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.

Development

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.

License

Released as-is under the MIT license. See LICENSE for details.