您可使用阿里云CLI通过命令方式调用函数计算API。本文介绍如何通过阿里云CLI调用函数计算API,并提供使用示例。

前提条件

快速入门

您可按以下步骤使用阿里云CLI,执行从创建服务到成功请求函数的完整流程。

  1. 创建名为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": ""
            }
    }
  2. 创建函数。
    说明
    • 阿里云CLI不支持直接通过CLI方式上传代码包。请将代码包在本地压缩成.zip包,预先上传到OSS的Bucket,然后在创建函数时,指定OSS的Bucket和Object名称。
    • 默认条件下,阿里云CLI工具创建的OSS资源与函数计算资源在同一地域。
    1. 创建OSS Bucket,并将该Bucket的权限设置为公共读写。
      aliyun oss mb oss://test-bucket-name-1 --acl  public-read-write
    2. 将您需部署至函数计算的代码包在本地打包为.zip包,并上传至对象存储OSS的Bucket中。
      aliyun oss cp code.zip oss://test-bucket-name-1/
    3. 在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
      }
  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参考