阿里云命令行工具CLI是基于阿里云开放API建立的管理工具,通过调用API来管理产品。本文介绍如何使用阿里云CLI通过命令方式调用函数计算的API以及相关使用示例。
前提条件
了解使用阿里云CLI调用RESTful API的命令结构(函数计算API为RESTful风格)。更多信息,请参见调用RPC API和RESTful API。
快速入门
您可按以下步骤使用阿里云CLI,执行从创建服务到成功请求函数的完整流程。
创建名为testServiceName的服务。
aliyun fc-open POST /2021-04-06/services --body "{\"serviceName\":\"testServiceName\",\"description\":\"testServiceName\"}"
返回示例如下。
{ "createdTime": "2022-11-15T07:53:04Z", "description": "test1", "internetAccess": true, "lastModifiedTime": "2022-11-15T07:53:04Z", "logConfig": { "enableInstanceMetrics": false, "enableRequestMetrics": false, "logBeginRule": null, "logstore": "", "project": "" }, "nasConfig": { "groupId": 0, "mountPoints": [], "userId": 0 }, "ossMountConfig": { "mountPoints": [] }, "role": "", "serviceId": "c98c7a92-48bc-49a4-ba4b-7c74cf38****", "serviceName": "testServiceName", "tracingConfig": { "jaegerConfig": null, "params": null, "type": null }, "vendorConfig": null, "vpcConfig": { "anytunnelViaENI": null, "role": "", "securityGroupId": "", "vSwitchIds": [], "vpcId": "" } }
创建函数。
说明阿里云CLI不支持直接通过CLI方式上传代码包。请将代码包在本地压缩成.zip包,预先上传到OSS的Bucket,然后在创建函数时,指定OSS的Bucket和Object名称。
默认条件下,阿里云CLI工具创建的OSS资源与函数计算资源在同一地域。
创建OSS Bucket,并将该Bucket的权限设置为私有。
aliyun oss mb oss://test-bucket-name-1 --acl private
将您需部署至函数计算的代码包在本地打包为.zip包,并上传至对象存储OSS的Bucket中。
aliyun oss cp code.zip oss://test-bucket-name-1/
在testServiceName服务下创建名为testFunctionName的函数。
aliyun fc-open POST /2021-04-06/services/testServiceName/functions --body "{\"functionName\": \"testFunctionName\",\"runtime\": \"python3\",\"handler\": \"index.handler\",\"code\": {\"ossBucketName\": \"test-bucket-name-1\",\"ossObjectName\": \"code.zip\"}}"
返回示例如下。
{ "caPort": null, "codeChecksum": "10564808724700284365", "codeSize": 409818, "createdTime": "2022-11-15T08:23:30Z", "customContainerConfig": null, "customDNS": null, "customHealthCheckConfig": null, "customRuntimeConfig": null, "description": "", "environmentVariables": {}, "functionId": "c0b8ed1b-b5cb-42c0-ac88-22d98681****", "functionName": "testFunctionName", "gpuMemorySize": null, "handler": "index.handler", "initializationTimeout": 3, "initializer": null, "instanceConcurrency": 1, "instanceLifecycleConfig": null, "instanceSoftConcurrency": null, "instanceType": "e1", "lastModifiedTime": "2022-11-15T08:23:30Z", "layers": null, "layersArnV2": null, "memorySize": 128, "runtime": "python3", "timeout": 3 }
调用函数。
aliyun fc-open POST /2021-04-06/services/testServiceName/functions/testFunctionName/invocations
返回示例如下。
hello world
说明
--body参数有以下两种设置方式。
第一种为上文快速入门演示的方式,转义后直接填写在--body位置处。
第二种方式为通过JSON文件引入。
aliyun fc-open POST /2021-04-06/services --body "$(cat createService.json)"
文件示例。
{ "serviceName": "testServiceName" }
服务调用示例
// serviceName: testServiceName
// 创建服务
aliyun fc-open POST /2021-04-06/services --body "{\"serviceName\":\"testServiceName\",\"description\":\"testServiceName\"}"
// 查询指定的服务
aliyun fc-open GET /2021-04-06/services/testServiceName
// 更新服务描述
aliyun fc-open PUT /2021-04-06/services/testServiceName --body "{\"description\":\"update service\"}"
// 查询服务列表
aliyun fc-open GET /2021-04-06/services
// 删除服务
aliyun fc-open DELETE /2021-04-06/services/testServiceName
函数调用示例
// serviceName: testServiceName
// functionName: testFunctionName
// 创建函数:请将代码包预先上传到OSS中,并在Body中配置OSS Bucket和Object
aliyun fc-open POST /2021-04-06/services/testServiceName/functions --body "{\"functionName\":\"testFunctionName\",\"runtime\":\"python3\",\"handler\":\"index.handler\",\"code\":{\"ossBucketName\":\"testBucket\",\"ossObjectName\":\"code.zip\"}}"
// 查询指定的函数
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName
// 获取函数代码包
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/code
// 更新函数
aliyun fc-open PUT /2021-04-06/services/testServiceName/functions/testFunctionName --body "{\"description\":\"update function\"}"
// 同步调用函数
aliyun fc-open POST /2021-04-06/services/testServiceName/functions/testFunctionName/invocations
// 异步调用函数
aliyun fc-open POST /2021-04-06/services/testServiceName/functions/testFunctionName/invocations --header x-fc-invocation-type=Async
// 查询函数列表
aliyun fc-open GET /2021-04-06/services/testServiceName/functions
// 删除函数
aliyun fc-open DELETE /2021-04-06/services/testServiceName/functions/testFunctionName
版本和别名调用示例
// serviceName: testServiceName
// aliasName: testAliasName
// 发布版本
aliyun fc-open POST /2021-04-06/services/testServiceName/versions --body "{\"description\":\"publish new version\"}"
// 查询版本列表
aliyun fc-open GET /2021-04-06/services/testServiceName/versions
// 删除版本
aliyun fc-open DELETE /2021-04-06/services/testServiceName/versions/1
// 创建别名
aliyun fc-open POST /2021-04-06/services/testServiceName/aliases --body "{\"aliasName\":\"testAliasName\",\"versionId\":\"1\"}"
// 查询指定的别名
aliyun fc-open GET /2021-04-06/services/testServiceName/aliases/testAliasName
// 查询别名列表
aliyun fc-open GET /2021-04-06/services/testServiceName/aliases
// 更新别名
aliyun fc-open PUT /2021-04-06/services/testServiceName/aliases/testAliasName --body "{\"description\":\"update alias\"}"
// 删除别名
aliyun fc-open DELETE /2021-04-06/services/testServiceName/aliases/testAliasName
预留模式调用示例
// serviceName: testServiceName
// functionName: testFunctionName
// aliasName: testAliasName
// 配置预留模式
aliyun fc-open PUT /2021-04-06/services/testServiceName/functions/testFunctionName/provision-config\?qualifier=testAliasName --body "{\"target\":1}"
// 查询指定的预留配置
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/provision-config\?qualifier=testAliasName
// 查询预留配置列表
aliyun fc-open GET /2021-04-06/provision-configs
按量模式调用示例
// serviceName: testServiceName
// functionName: testFunctionName
// aliasName: testAliasName
// 配置按量模式
aliyun fc-open PUT /2021-04-06/services/testServiceName/functions/testFunctionName/on-demand-config\?qualifier=testAliasName --body "{\"maximumInstanceCount\":10}"
// 查询指定的按量配置
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/on-demand-config\?qualifier=testAliasName
// 查询按量配置列表
aliyun fc-open GET /2021-04-06/on-demand-configs
// 删除按量配置
aliyun fc-open DELETE /2021-04-06/services/testServiceName/functions/testFunctionName/on-demand-config\?qualifier=testAliasName
触发器调用示例
// serviceName: testServiceName
// functionName: testFunctionName
// triggerName: testTriggerName
// 创建触发器:示例为定时触发器
aliyun fc-open POST /2021-04-06/services/testServiceName/functions/testFunctionName/triggers --body "{\"triggerConfig\": \"{\\\"cronExpression\\\":\\\"@every 1m\\\"}\", \"triggerName\": \"TestTriggerName\", \"triggerType\": \"timer\" }"
// 查询指定的触发器
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/triggers/testTriggerName
// 更新触发器
aliyun fc-open PUT /2021-04-06/services/testServiceName/functions/testFunctionName/triggers/testTriggerName --body "{\"triggerConfig\": \"{\\\"cronExpression\\\":\\\"@every 1m\\\"}\", \"triggerName\": \"TestTriggerName\", \"triggerType\": \"timer\" }"
// 查询触发器列表
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/triggers
// 删除触发器
aliyun fc-open DELETE /2021-04-06/services/testServiceName/functions/testFunctionName/triggers/testTriggerName
异步调用配置示例
// serviceName: testServiceName
// functionName: testFunctionName
// 配置函数异步调用
aliyun fc-open PUT /2021-04-06/services/testServiceName/functions/testFunctionName/async-invoke-config --body "{\"maxAsyncRetryAttempts\":2}"
// 查询函数异步调用配置列表
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/async-invoke-configs
// 查询指定的函数异步调用配置
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/async-invoke-config
// 删除函数异步调用配置
aliyun fc-open DELETE /2021-04-06/services/testServiceName/functions/testFunctionName/async-invoke-config
// 查询指定的异步任务
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/stateful-async-invocations/invokeID
// 查询异步任务列表
aliyun fc-open GET /2021-04-06/services/testServiceName/functions/testFunctionName/stateful-async-invocations
更多参数信息
如需了解参数详细信息,请参见API参考。
相关文档
更多关于阿里云CLI的介绍,请参见什么是阿里云CLI?。
文档内容是否对您有帮助?