Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aliyun/serverless-aliyun-function-compute
Serverless Alibaba Cloud Function Compute Plugin – Add Alibaba Cloud Function Compute support to the Serverless Framework
https://github.com/aliyun/serverless-aliyun-function-compute
Last synced: 3 months ago
JSON representation
Serverless Alibaba Cloud Function Compute Plugin – Add Alibaba Cloud Function Compute support to the Serverless Framework
- Host: GitHub
- URL: https://github.com/aliyun/serverless-aliyun-function-compute
- Owner: aliyun
- Created: 2017-08-31T06:48:13.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T22:16:24.000Z (almost 2 years ago)
- Last Synced: 2024-06-20T16:40:34.619Z (5 months ago)
- Language: JavaScript
- Homepage:
- Size: 644 KB
- Stars: 133
- Watchers: 18
- Forks: 16
- Open Issues: 46
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-npm - serverless-aliyun-function-compute - 阿里云 serverless 框架 (1. 后端开发 / 1.2 框架)
README
# Aliyun Function Compute Serverless Plugin
This plugin enables Aliyun Function Compute support within the Serverless Framework.
- [![Build Status](https://travis-ci.org/aliyun/serverless-aliyun-function-compute.svg?branch=master)](https://travis-ci.org/aliyun/serverless-aliyun-function-compute)
## 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:
```sh
$ 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.
```yaml
$ serverless plugin install --name serverless-aliyun-function-compute
````serverless.yml`:
```yaml
service: serverless-aliyun-hello-worldprovider:
name: aliyun
runtime: nodejs8
credentials: ~/.aliyun_credentials # path must be absoluteplugins:
- serverless-aliyun-function-computepackage:
exclude:
- package-lock.json
- .gitignore
- .git/**functions:
hello:
handler: index.hello
events:
- http:
path: /foo
method: get
````package.json`:
```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`:
```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:```ini
[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](./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:
```sh
$ 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 ` to deploy a single function instead of the entire service.
* Invoke a function directly (without going through the API gateway):```sh
$ serverless invoke --function hello
```
* Retrieve the LogHub logs generated by your function:```sh
$ serverless logs --function hello
```
* Get information on your deployed functions```sh
$ serverless info
```
* When you no longer needs your service, you can remove the service, functions, along with deployed endpoints and triggers using:```sh
$ 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:
```yaml
provider:
name: aliyun
region: cn-hongkong
```* Changing the region in CLI parameters:
```sh
$ 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
```sh
# clone this repo
git clone [email protected]: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