Newly Purchased Memories

    serverless-aliyun-function-compute

    1.2.6 • Public • Published

    Aliyun Function Compute Serverless Plugin

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

    • Build Status

    Getting started

    Pre-requisites

    • Node.js v8.x for using the plugin.
    • Serverless CLI v1.26.1+. You can get it by running npm i -g serverless.
    • An Aliyun account.

    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.

    • Deploy your service to Aliyun:

      $ serverless deploy

      If your service contains HTTP endpoints, you will see the URLs for invoking your functions after a successful deployment.

      Note: you can use serverless deploy function --function <function name> to deploy a single function instead of the entire service.

    • Invoke a function directly (without going through the API gateway):

      $ serverless invoke --function hello
    • Retrieve the LogHub logs generated by your function:

      $ serverless logs --function hello
    • Get information on your deployed functions

      $ serverless info
    • When you no longer needs your service, you can remove the service, functions, along with deployed endpoints and triggers using:

      $ serverless remove

      Note: by default RAM roles and policies created during the deployment are not removed. You can use serverless remove --remove-roles if you do want to remove them.

    Change Region

    • Changing the region in provider of serverless.yml:

      provider:
        name: aliyun
        region: cn-hongkong
    • Changing the region in CLI parameters:

      $ serverless deploy --region cn-hongkong

      Note: CLI parameter --region has higher priority than provider, But you have to add this parameter to all the invocations, not only deploy.

    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

    Install

    npm i serverless-aliyun-function-compute

    DownloadsWeekly Downloads

    50

    Version

    1.2.6

    License

    MIT

    Unpacked Size

    98.5 kB

    Total Files

    38

    Last publish

    Collaborators

    • jacksontian
    • joyeecheung
    • vangie