CFC - api

百度 CFC (Cloud Function Compute) 是百度开放云 BCE (Baidu Cloud Engine)提供基于事件机制,弹性、高可用、扩展性好、极速响应的云端无服务器计算能力。您可以仅关注业务逻辑的代码部分,无需关注和配置服务器资源,支持多种函数触发器,满足多样化的事件触发场景。

CfcClient #

CfcClient是CFC服务的javascript客户端,为调用者与CFC服务进行交互提供了一系列的方法。

  • nodejs:import {CfcClient} from 'bce-sdk-js'

CFC接口说明

初始化 #

var config = {
    endpoint: 'http://cfc.bj.baidubce.com',
    credentials: {
        ak: '您的ak',
        sk: '您的sk'
    }
};
var client = new CfcClient(config);

函数接口 #

调用函数 invocations #

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名
logToBodyBooleanQuery参数true把日志打印到返回
invocationTypeStringQuery参数Event(无返回)/RequestResponse(同步返回)/DryRun(测试函数)
logTypeStringQuery参数日志类型 Tail / None
QualifierStringQuery参数默认为$LATEST 可选别名和版本

Request Body json数据格式,作为input参数调用函数

```
//自定义参数
{
    "key3": "value3",
    "key2": "value2",
    "key1": "value1"
}
```

如下代码可以调用函数:

var functionName = <functionName>; // 指定function的名称
var invoke_body =     {
                          "key3": "value3",
                          "key2": "value2",
                          "key1": "value1"
                      };
var invoke_options = {
                         "logToBody": "false",
                         "invocationType": "RequestResponse",
                         "logType": "None",
                         "Qualifier": "$LATEST"
                     };
client.invocations(functionName,invoke_body,invoke_options)
    .then(function (response) {
        // 执行函数
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

函数操作 #

createFunction #

描述

  • 本接口用于创建函数。
参数名称类型是否必需参数位置描述
ZipFileblobRequestBody参数您要发布的zip包的 base64-encoded 注意zip包压缩目录的内容,而不是目录本身
PublishBooleanRequestBody参数是否直接发布版本
DescriptionStringRequestBody参数一个简短的说明 0-256字符
EnvironmentEnvironmentRequestBody参数环境变量
FunctionNameStringRequestBody参数函数名 1-140字符
HandlerStringRequestBody参数cfc调用的入口函数,对于node为module-name.export eg. index.handler
MemorySizeintRequestBody参数内存大小 现在为128固定
RegionStringRequestBody参数地址 bj
RuntimeStringRequestBody参数运行语言 python2 nodejs6.11
TimeoutintRequestBody参数超时时间 1-300 最大300

如下代码可以创建函数:

    var body = {
        "Code": {
            "ZipFile": "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAIAAAAaW5kZXguanNKrSjILyop1stIzEvJSS1SsFXQSC1LzSvRUUjOzytJrQAxEnNykhKTszUVbO0UqrkUFBTgQhp5pTk5OgpgHdFKiUqxmtZctdaAAAAA//9QSwcI9fw51k4AAABUAAAAUEsBAhQAFAAIAAgAAAAAAPX8OdZOAAAAVAAAAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAIQAAAAAAA==",
            "Publish": false,
        },
        "Description": "bce_sdk_test",
        "Region": "bj",
        "Timeout": 3,
        "FunctionName": "bce_sdk_test",
        "Handler": "index.handler",
        "Runtime": "nodejs6.11",
        "MemorySize": 128,
        "Environment": {
            "Variables": {
                "a": "b",
            }
        }
    };
    client.createFunction(body).then(function (response) {
        // 创建函数
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

listFunctions #

描述

  • 本接口用于查询用户函数。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionVersionStringQuery参数函数版本
pageintQuery参数页号
pageSizeintQuery参数页面大小
MarkerintQuery参数
MaxItemsint最大数目1-10000

如下代码可以创建函数:

    var options = {};
    options.marker = 10;
    client.listFunctions(options).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

getFunction #

描述

  • 本接口用于查询用户单个函数。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
QualifierStringQuery参数默认为$LATEST 可选别名和版本

如下代码可以获取函数:

    var functionName = <functionName>;
    client.getFunction(functionName).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

DeleteFunction #

描述

  • 本接口用于删除函数。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称

如下代码可以删除函数:

    var functionName = <functionName>;
    client.deleteFunction(functionName).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

updateFunctionCode #

描述

  • 本接口用于更新指定function代码。 <b>请求参数<b>
参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
ZipFileStringbody参数Base64-encoded binary data object
PublishStringbody参数是否直接发布
DryRunStringbody参数这个布尔参数可用于测试您对cfc的请求,以更新cfc函数,并将一个版本作为原子操作发布。它将对你的代码进行所有必要的计算和验证,但是不会上传它或者发布一个版本。每次调用该操作时,所提供代码的CodeSha256散列值也将在响应中计算并返回。 暂未支持

如下代码可以更新指定function代码:

    var functionName = <functionName>;
    var code = {
                   "ZipFile": "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAAIAAAAaW5kZXguanNKrSjILyop1stIzEvJSS1SsFXQSC1LzSvRUUjOzytJrQAxEnNykhKTszUVbO0UqrkUFBTgQhp5pTk5OgpgHdFKiUqxmtZctdaAAAAA//9QSwcI9fw51k4AAABUAAAAUEsBAhQAFAAIAAgAAAAAAPX8OdZOAAAAVAAAAAgAAAAAAAAAAAAAAAAAAAAAAGluZGV4LmpzUEsFBgAAAAABAAEANgAAAIQAAAAAAA==",
                   "Publish": false,
                   "DryRun": true
               }
    client.updateFunctionCode(functionName, code).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

getFunctionConfiguration #

描述

  • 本接口用于获取指定函数配置。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
QualifierStringQuery参数默认为$LATEST 可选别名和版本

如下代码可以获取指定函数配置:

    var functionName = <functionName>;
    var option = {
        "Qualifier": "1"
    };
    client.getFunctionConfiguration(functionName, option).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

updateFunctionConfiguration #

描述

  • 本接口用于修改函数配置。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
QualifierStringQuery参数函数版本 只有$LATEST才能修改
Timeoutintbody参数超时时间
HandlerStringbody参数入口
RuntimeStringbody参数运行语言 python2 nodejs6.11
EnvironmentEnvironmentbody参数环境变量

如下代码可以获取指定函数配置:

    var functionName = <functionName>;
    var body = {
        "Description": "bce_sdk_test",
        "Region": "bj",
        "Timeout": 3,
        "FunctionName": "bce_sdk_test",
        "Handler": "index.handler",
        "Runtime": "nodejs6.11",
        "MemorySize": 128,
        "Environment": {
            "Variables": {
                "a": "b",
            }
        }
    };
    client.updateFunctionConfiguration(functionName, body).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

版本操作 #

listVersionsByFunction #

描述

  • 本接口用于查询函数所有版本。
  • <b>请求参数<b>
参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
MarkerintQuery参数标记
MaxItemsintQuery参数最大数目 1-10000

如下代码可以获取指定函数配置:

    var functionName = <functionName>;
    var opt_options = {
        "Marker":0,
        "MaxItems":10
    };
    client.listVersionsByFunction(functionName, opt_options).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

publishVersion #

描述

  • 本接口用于发布函数版本。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
Descriptionstringbody参数版本描述

如下代码可以发布函数版本:

    var functionName = <functionName>;
    client.publishVersion(functionName, "description").then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

别名操作 #

listAliases #

描述

  • 本接口用于查询函数所有别名。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
FunctionVersionStringQuery参数函数版本
MarkerintQuery参数标记
MaxItemsintQuery参数最大数目 1-10000

如下代码可以发布函数版本:

    var opt_options = {
        "Marker":0,
        "MaxItems":10,
        "FunctionVersion":"1"
    };
    var functionName = <functionName>;
    client.listAliases(functionName, "description").then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

createAlias #

描述

  • 本接口用于创建别名。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
FunctionVersionStringbody参数别名指向函数版本 可以设置为$LATEST
NameStringbody参数别名名称
Descriptionstringbody参数别名描述

如下代码可以创建别名:

     var body = {
        "FunctionVersion": "string",
        "Name": "string",
        "Description": "string"
     }
    var functionName = <functionName>;
    client.createAlias(functionName, body).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

getAlias #

描述

  • 本接口用于查询别名详情。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
aliasNameStringpath参数别名名称
FunctionNameStringpath参数函数名称

如下代码可以创建别名:


    var functionName = <functionName>;
    var aliasName = <aliasName>
    client.getAlias(functionName, aliasName).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

UpdateAlias #

描述

  • 本接口用于修改别名。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
FunctionVersionStringbody参数别名指向函数版本 可以设置为$LATEST
Descriptionstringbody参数别名描述

如下代码可以修改别名:


    var functionName = <functionName>;
    var aliasName = <aliasName>
    var body = {
        "FunctionVersion": "string",
        "Description": "string"
    }
    client.updateAlias(functionName, aliasName, body).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });

DeleteAlias #

描述

  • 本接口用于删除别名。

<b>请求参数<b>

参数名称类型是否必需参数位置描述
FunctionNameStringpath参数函数名称
aliaNameStringpath参数别名名称

如下代码可以删除别名:


    var functionName = <functionName>;
    var aliasName = <aliasName>
    client.deleteAlias(functionName, aliasName).then(function (response) {
        // 执行成功
        console.log(response.body)
    })
    .catch(function (error) {
        // 执行失败
    });