tencent cloud

文档反馈

测试模板

最后更新时间:2019-11-15 17:32:26
该文档目前已无效,请参考该产品文档总览页。

    通过测试模板生成命令,可以快速生成相关触发器的模拟事件结构。生成的模拟事件结构,可以直接在本地调试云函数,也可以将其导入到文件中并根据实际所需进行修改,实现您自定义的测试模板。

    创建模板

    SCF CLI 通过 local generate-event 命令来生成测试模板。通过执行不同的子命令,可以生成指定触发器的模拟测试模板内容。
    使用触发器及触发器内详细事件的命令格式为 scf local generate-event {trigger} {trigger-event}。例如,模拟对象存储(COS)的 PUT 事件,命令为 scf local generate-event cos put

    参数说明

    更多详细的触发器及事件见如下表格:

    触发器 事件 说明
    apigateway proxy API 网关响应请求事件
    ckafka consume Ckafka 消费消息事件
    cmq notification CMQ Topic 消息事件
    cos post/put/delete 对象存储的 POST、PUT、DELETE 事件
    timer timeup 定时触发器事件

    使用示例

    生成测试模板的命令,会直接在终端输出测试模板的 JSON 内容。示例如下:

    $ scf local generate-event cos post
    {
      "Records": [
        {
          "cos": {
            "cosSchemaVersion": "1.0", 
            "cosObject": {
              "url": "http://testpic-1253970026.cos.ap-guangzhou.myqcloud.com/testfile", 
              "meta": {
                "Content-Type": "", 
                "x-cos-request-id": "NWMxOWY4MGFfMjViMjU4NjRfMTUyMV8yNzhhZjM="
              }, 
              "key": "/1253970026/testpic/testfile", 
              "vid": "", 
              "size": 1029
            }, 
            "cosBucket": {
              "region": "gz", 
              "name": "testpic", 
              "appid": "1253970026"
            }, 
            "cosNotificationId": "unkown"
          }, 
          "event": {
            "eventVersion": "1.0", 
            "eventTime": 1545205770, 
            "requestParameters": {
              "requestSourceIP": "59.37.125.38", 
              "requestHeaders": {
                "Authorization":"q-signature=098ac7dfe9cf21116f946c4b4c29001c2b449b14"
              }
            }, 
            "eventName": "cos:ObjectCreated:Post", 
            "reqid": 179398952, 
            "eventSource": "qcs::cos", 
            "eventQueue": "qcs:0:lambda:cd:appid/1253970026:default.printevent.$LATEST", 
            "reservedInfo": ""
          }
        }
      ]
    }

    本地测试触发函数

    可以通过 Shell 管道的方式,将生成的命令直接用在本地触发调用函数中。

    例如,执行 scf local generate-event cos post | scf local invoke -t template.yaml testfunction 命令,将 COS POST 模拟事件用于函数触发入参,在本地调用 testfunction 函数。

    生成文件

    通过输出到文件的方式,可以快速生成测试模板文件。基于测试模板文件,您可以修改为更符合实际所需的测试模板。例如,执行 scf local generate-event cos post > event.json 命令,将会在当前目录生成 event.json 文件,该文件内包含了 COS POST 测试事件内容。

    获取模板列表

    SCF CLI 可以通过 scf eventdata list 查看某函数下的所有调试模板。

    参数说明

    scf eventdata list 支持的参数如下:

    参数 简写 必填 说明 示例
    name -n 函数名 -n hello_world
    region -r 指定函数所在区域,可参见 区域列表 -r ap-beijing
    namespace -ns 命名空间 -ns default
    • 当不指定 region 和 namespace 时,默认使用 configure 里的 region 和 default 命名空间 。
    • 可执行 scf configure get 查看 configure 配置信息。

    使用示例

    • 执行以下命令,查看指定函数的全部模板。
      $scf eventdata list -n hello
      [>] Region:ap-guangzhou
      [>] Namespace:default 
      [>] Function:hello 
      TestmodelsName       AddTime              ModTime             
      apitest              2019-08-15 20:57:37  2019-08-15 20:57:37 
      costest              2019-08-15 20:58:31  2019-08-15 20:58:31
    • 执行以下命令,查看指定区域,指定命名空间下某个函数的全部模板。
      $scf eventdata list  -r ap-guangzhou -ns default -n hello
      [>] Region:ap-guangzhou
      [>] Namespace:default 
      [>] Function:hello 
      TestmodelsName       AddTime              ModTime             
      apitest              2019-08-15 20:57:37  2019-08-15 20:57:37 
      costest              2019-08-15 20:58:31  2019-08-15 20:58:31

    下载模板

    SCF CLI 可以通过 scf eventdata get 下载某函数下的所有调试模板或指定某个模板。下载模板文件时,会自动在命令执行目录下创建 scf_event_data 文件夹,并将模板文件放到该文件夹。

    参数列表

    scf eventdata get 支持的参数如下:

    参数 简写 必填 说明 示例
    name -n 函数名 -n hello_world
    region -r 指定函数所在区域,可参见 区域列表 -r ap-beijing
    namespace -ns 命名空间 -ns default
    event -e 模板名(不填时,默认下载全部) -e apitest
    output-dir -d 模板存放路径 -d ./
    force -f 当本地有与云端同名的模板时,会强制覆盖

    说明:

    • 当输出目录不填时,会默认为当前目录。
    • 当不指定 region 和 namespace 时,默认使用 configure 里的 region 和 default 命名空间 。
    • 可执行 scf configure get 查看 configure 配置信息。

    使用示例

    • 执行以下命令,下载默认配置区域和 default 命名空间下某个函数的全部模板文件。
      $scf eventdata get -n hello
      [>] Downloading event-data: {apitest} ...
      [o] Download event-data: {apitest} success
      [>] Downloading event-data: {costest} ...
      [o] Download event-data: {costest} success
      $ ls
      index.py    scf_event_data    template.yaml
      $ ls scf_event_data/
      apitest.json    costest.json

      注意:

      当本地存在和云端同名的模板文件时,会下载失败。如果您想要覆盖本地文件,则使用 -f 参数。

    • 执行以下命令,下载默认配置区域和 default 命名空间下某个函数的指定模板文件。
      $scf eventdata get -n hello -e apitest 
      [>] Downloading event-data: {apitest} ...
      [o] Download event-data: {apitest} success

    上传模板

    SCF CLI 可以通过 scf eventdata update 将本地模板文件上传至云端。

    参数列表

    scf eventdata update 支持的参数如下:

    参数 简写 必填 说明 示例
    name -n 函数名 -n hello_world
    dir -d 模板路径 -d ./
    region -r 指定函数所在区域,可参见 区域列表 -r ap-beijing
    namespace -ns 命名空间 -ns default
    force -f 当本地有与云端同名的模板时,会强制覆盖
    • 当不指定 region 和 namespace 时,默认使用 configure 里的 region 和 default 命名空间 。
    • 可执行 scf configure get 查看 configure 配置信息。
    • 如果 dir 指定到目录,则上传该目录下的所有 json 文件。如果 dir 指定到具体文件,则上传指定文件。

    使用示例

    • 执行以下命令,上传默认配置区域和 default 命名空间下某个函数在本地的所有模板文件。
      $scf eventdata update -n hello -d scf_event_data/
      [>] Region:ap-guangzhou
      [>] Namespace:default 
      [>] Function:hello 
      [>] Eventdata {apitest} exist in remote,updating event...
      [o] Eventdata {apitest} update success!
      [>] Eventdata {costest} exist in remote,updating event...
      [o] Eventdata {costest} update success!

      注意:

      当云端存在和本地同名的模板文件时,会上传失败。如果您想要覆盖云端文件,则使用 -f 参数。

    • 执行以下命令,上传默认配置区域和 default 命名空间下某个函数的指定模板文件。
      $scf eventdata update -n hello -d scf_event_data/apitest.json 
      [>] Region:ap-guangzhou
      [>] Namespace:default 
      [>] Function:hello 
      [o] Eventdata {apitest} update success!
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持