快速开始

最近更新时间:2019-08-09 20:01:31

操作场景

通过快速开始,您可以通过一个简单案例试用 SCF 的基础功能。

前提条件

  • 已安装 Python 2.7(及以上版本)或 Python 3.6(及以上版本)。
  • 已安装 pip。
  • 已安装 git。
  • 已安装对应的开发语言(如 Node 开发,需要安装 Node.js 等)。
  • 已安装并启动 Docker (可选,仅针对 本地调用云函数 local invoke)。

上述安装可参考 安装与配置文档

步骤1:安装 SCF CLI

  1. 执行以下命令,安装 SCF CLI。
    $ sudo pip install scf
  2. 执行以下命令,验证 SCF CLI 是否安装成功。
    $ scf --version
    scf CLI, version 0.0.1
    返回类似如上信息,则表示安装成功。

步骤2:配置 SCF CLI

  1. 登录 腾讯云控制台
  2. 分别获取账号的 APPID,SecretId,SecretKey 以及产品期望所属的地域。您可以参考 安装与配置 文档以获取上述信息。
  3. 执行 scf configure set 命令,将 APPID,SecretId,SecretKey 以及产品期望所属的地域配置到 SCF 中。
    例如,您希望在广州区使用云函数,并获取到账号 ID 为1253970223,SecretId 和 SecretKey 分别为 AKIxxxxxxxxxx,uxxlxxxxxxxx。
    您可以通过执行以下命令,按照提示输入对应信息,完成 SCF CLI 的配置:
    $ scf configure set
    TencentCloud appid(None): 1253970223
    TencentCloud region(None): ap-guangzhou
    TencentCloud secret-id(********************************): AKIxxxxxxxxxx
    TencentCloud secret-key(****************************): uxxlxxxxxxxx
    Allow report information to help us optimize scfcli(Y/n):

步骤3:初始化模板项目

  1. 选择并进入到存放项目代码的目录。
  2. 执行以下命令,创建函数。

    说明:

    此命令会在当前目录下进行创建 testscf 函数。

    $ scf init 
    [+] Initializing project...
    Template: /usr/local/lib/python3.7/site-packages/tcfcli/cmds/init/templates/tcf-demo-python
    Output-Dir: .
    Project-Name: hello_world
    Runtime: python3.6
    [*] Project initialization is complete
    此时默认创建了名称为 hello_world , 运行时为 Python 3.6的函数。
  3. 可根据实际需求执行以下命令,指定函数 runtime 和名称。
    $ scf init --runtime nodejs8.9 --name testscf

初始化命令详情及了解更多初始化参数信息,请参见 初始化示例项目

步骤4:本地调用云函数 native invoke

通过本地调用,您可以在本地使用模拟事件触发函数执行,实时调试函数代码。当前 native invoke 仅支持 Node.js 及 Python 语言,其他语言的函数本地调用方法可以参考 local invoke

说明:

在通过 scf init 初始化得到的示例项目中,均含有已准备好的代码文件及模板配置文件。

执行 scf native invoke --no-event 命令,启动函数在本地运行并返回 hello world。

$ scf native invoke --no-event 
START RequestId: 5d83c6f9-a40b-4b9c-8f6a-e39e2acd4ee5
{}

END RequestId: 5d83c6f9-a40b-4b9c-8f6a-e39e2acd4ee5
REPORT RequestId: 5d83c6f9-a40b-4b9c-8f6a-e39e2acd4ee5 Duration: 0 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 8 MB

"hello world"

通过输出内容可以看到,函数在本地运行完成后,输出了函数的打印日志、及函数返回内容。

本地调用命令详情及了解更多命令参数信息,请参见 本地调试(native invoke)

步骤5:部署云函数

在项目目录下执行以下命令,将本地代码包及函数配置部署到云端。

$ scf deploy 

完成部署后,您可以登录 腾讯云云函数控制台,查看已成功部署的函数。

部署命令详情及了解更多命令参数信息,请参见 打包部署

步骤6:获取函数列表

执行以下命令,可以查看已部署至云端的函数列表。

$ scf list

获取函数列表命令及了解更多命令参数信息,请参见 获取函数列表

步骤7:本地调用云函数 local invoke

通过本地调用,您可以在本地使用模拟事件触发函数执行,实时调试函数代码。

说明:

在使用本地调用命令前,需要安装 docker 程序。

  1. 通过如下命令确保 docker 已安装并启动。
    $ docker version
    Client: Docker Engine - Community
    Version:           18.09.1
    API version:       1.39
    Go version:        go1.10.6
    Git commit:        4c52b90
    Built:             Wed Jan  9 19:33:12 2019
    OS/Arch:           darwin/amd64
    Experimental:      false
    Server: Docker Engine - Community
    Engine:
    Version:          18.09.1
    API version:      1.39 (minimum version 1.12)
    Go version:       go1.10.6
    Git commit:       4c52b90
    Built:            Wed Jan  9 19:41:49 2019
    OS/Arch:          linux/amd64
    Experimental:     true
  2. 执行以下命令,使用 cos post 模拟事件触发 testscf 项目中的 hello_world 函数。
    $ scf local generate-event cos post | scf local invoke 
    read event from stdin
    pull image ccr.ccs.tencentyun.com/scfrepo/scfcli:python2.7......
    START RequestId: 5771eb61-dba7-4857-949a-2184c0b389d6
    END RequestId: 5771eb61-dba7-4857-949a-2184c0b389d6
    REPORT RequestId: 5771eb61-dba7-4857-949a-2184c0b389d6 Duration: 0 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 14 MB
    "hello world"
    SCF 工具将会在本地使用容器方式启动函数代码,并将 scf local generate-event cos post 命令生成的模拟事件发送给函数作为入参。
  3. 修改 testscf 项目目录中的 hello_world 文件夹下的 main.py 文件,增加对 event 的打印。
    # -*- coding: utf8 -*-
    'use strict';
    exports.main_handler = async (event, context, callback) => {
     console.log("%j", event);
     return "hello world"
    };
  4. 执行以下命令,查看打印结果。
    $ scf local generate-event cos post | scf local invoke 
    read event from stdin
    pull image ccr.ccs.tencentyun.com/scfrepo/scfcli:python2.7......
    START RequestId: 1271deb3-04ca-46e8-a85e-04cf016a0207
    {'Records': [{'cos': {'cosSchemaVersion': '1.0', 'cosObject': {'url': 'http://testpic-1253970026.cos.ap-guangzhou.myqcloud.com/testfile', 'meta': {'x-cos-request-id': 'NWMxOWY4MGFfMjViMjU4NjRfMTUyMV8yNzhhZjM=', 'Content-Type': ''}, 'vid': '', 'key': '/1253970026/testpic/testfile', 'size': 1029}, 'cosBucket': {'region': 'gz', 'name': 'testpic', 'appid': '1253970026'}, 'cosNotificationId': 'unkown'}, 'event': {'eventVersion': '1.0', 'eventName': 'cos:ObjectCreated:Post', 'eventTime': 1545205770, 'eventSource': 'qcs::cos', 'requestParameters': {'requestSourceIP': '59.37.125.38', 'requestHeaders': {'Authorization': 'q-sign-algorithm=sha1&q-ak=AKIDQm6iUh2NJ6jL41tVUis9KpY5Rgv49zyC&q-sign-time=1545205709;1545215769&q-key-time=1545205709;1545215769&q-header-list=host;x-cos-storage-class&q-url-param-list=&q-signature=098ac7dfe9cf21116f946c4b4c29001c2b449b14'}}, 'eventQueue': 'qcs:0:lambda:cd:appid/1253970026:default.printevent.$LATEST', 'reservedInfo': '', 'reqid': 179398952}}]}
    END RequestId: 1271deb3-04ca-46e8-a85e-04cf016a0207
    REPORT RequestId: 1271deb3-04ca-46e8-a85e-04cf016a0207 Duration: 2 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 14 MB
    "hello world"

本地调用命令详情及了解更多命令参数信息,请参见 本地调试(local invoke)

操作总结

在此快速开始篇章中,我们简单介绍了 SCF CLI 的安装、配置过程,通过初始化模板项目,完成了本地测试/部署等流程。
更多详细信息可见 SCF CLI 的使用指导及项目介绍。