aliyun / serverless-aliyun-function-compute

Serverless Alibaba Cloud Function Compute Plugin – Add Alibaba Cloud Function Compute support to the Serverless Framework
134 stars 16 forks source link

Aliyun Function Compute Serverless Plugin

This plugin enables Aliyun Function Compute support within the Serverless Framework.

Getting started

Pre-requisites

Example

You can install the following example from GitHub:

$ serverless install --url https://github.com/aliyun/serverless-function-compute-examples/tree/master/aliyun-nodejs

The structure of the project should look something like this:

├── index.js
├── node_modules
├── package.json
└── serverless.yml

Install serverless-aliyun-function-compute plugin to your service.

$ serverless plugin install --name serverless-aliyun-function-compute

serverless.yml:

service: serverless-aliyun-hello-world

provider:
  name: aliyun
  runtime: nodejs8
  credentials: ~/.aliyun_credentials # path must be absolute

plugins:
  - serverless-aliyun-function-compute

package:
  exclude:
    - package-lock.json
    - .gitignore
    - .git/**

functions:
  hello:
    handler: index.hello
    events:
      - http:
          path: /foo
          method: get

package.json:

{
  "name": "serverless-aliyun-hello-world",
  "version": "0.1.0",
  "description": "Hello World example for aliyun provider with Serverless Framework.",
  "main": "index.js",
  "license": "MIT"
}

index.js:

'use strict';

exports.hello = (event, context, callback) => {
  const response = {
    statusCode: 200,
    body: JSON.stringify({ message: 'Hello!' }),
  };

  callback(null, response);
};

In order to deploy this function, we need the credentials with permissions to access Aliyun Function Compute. Please create a credentials file and configure the credentials in it. Here is an example credentials file:

[default]
aliyun_access_key_id = xxxxxxxx
aliyun_access_key_secret = xxxxxxxxxxxxxxxxxxxx
aliyun_account_id = 1234567890

You can find the aliyun_access_key_secret and aliyun_access_key_id from https://ak-console.aliyun.com/?#/accesskey. You can also chose to create an Access Key or use sub-account Access Key. You can find the aliyun_account_id from https://account-intl.console.aliyun.com/?#/secure . After creating the credentials file, please make sure to change the credentials field value in serverless.yml to the absolute file path.

See test/project for a more detailed example (including how to access other Aliyun services, how to set up a HTTP POST endpoint, how to set up OSS triggers, etc.).

Workflow

Make sure that you have activated Function Compute and any other dependent services such as RAM, Log Service, API Gateway and OSS before attempting to deploy your function.

Change Region

Develop

# clone this repo
git clone git@github.com:aliyun/serverless-aliyun-function-compute.git

# link this module to global node_modules
cd serverless-aliyun-function-compute
npm install
npm link

# try it out by packaging the test project
cd test/project
npm install
npm link serverless-aliyun-function-compute
serverless package

License

MIT