您可使用阿里云CLI通过命令方式调用函数计算API。本文提供使用阿里云CLI调用函数计算API的使用示例。

前提条件

快速入门

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

  1. 创建名为testServiceName的服务。
    aliyun fc-open POST /2021-04-06/services --body {\"serviceName\": \"testServiceName\"}
    返回示例如下:
    {
        "createdTime": "2022-01-10T03:23:26Z",
        "description": "",
        "internetAccess": true,
        "lastModifiedTime": "2022-01-10T03:23:26Z",
        "logConfig": {
            "enableInstanceMetrics": false,
            "enableRequestMetrics": false,
            "logBeginRule": null,
            "logstore": "",
            "project": ""
        },
        "nasConfig": {
            "groupId": -1,
            "mountPoints": [],
            "userId": -1
        },
        "role": "",
        "serviceId": "8ffdfae8-24c2-49e8-9800-af87255f****",
        "serviceName": "testServiceName",
        "tracingConfig": {
            "jaegerConfig": null,
            "params": null,
            "type": null
        },
        "vendorConfig": null,
        "vpcConfig": {
            "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": "1246969280732608****",
          "codeSize": 276,
          "createdTime": "2022-01-10T03:51:52Z",
          "customContainerConfig": null,
          "customDNS": null,
          "customRuntimeConfig": null,
          "description": "",
          "environmentVariables": {},
          "functionId": "7b95fc98-e1ac-41ac-91c5-5f517872****",
          "functionName": "testFunctionName",
          "gpuMemorySize": null,
          "handler": "index.handler",
          "initializationTimeout": 3,
          "initializer": null,
          "instanceConcurrency": 1,
          "instanceLifecycleConfig": null,
          "instanceSoftConcurrency": null,
          "instanceType": "e1",
          "lastModifiedTime": "2022-01-10T03:51:52Z",
          "layers": 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\"}"

// 查询指定的服务
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参考