基于 SCFCLI 快速搭建二维码生成工具

腾讯云
入门
0 个任务
剩余 2 个名额

你还可以 创建 或者 使用已有 云主机不限时上机

实验内容

Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署,甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。简单来说,Serverless 即更加轻量的云原生环境。

首次可免费使用云主机 40 分钟 ,到期后云主机将被重置并退库,若想保留成果请及时留用。

实验资源

云服务器

软件环境

-

目录

# 1024 Serverless 代码挑战赛 ## 什么是 Serverless ? ### Serverless 概述 Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署,甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。简单来说,Serverless 即更加轻量的云原生环境。 ### 关于 SCF 与 SCFCLI 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。[更多详情](https://cloud.tencent.com/product/scf) CF CLI 是腾讯云云函数(Serverless Cloud Function,SCF)产品的命令行工具。通过 scf 命令行工具,您可以方便的实现函数打包、部署、本地调试,也可以方便的生成云函数的项目并基于 demo 项目进一步的开发。[更多详情](https://cloud.tencent.com/document/product/583/33445) ## 安装与配置SCFCLI ### 安装pip 首先安装pip,在最新的Ubuntu系统中,默认集成了Python3,所以此处,安装对应的pip即可: ``` sudo apt install python3-pip -y ``` 安装完成之后,可以通过下面的命令查看版本: ``` pip3 --version ``` 返回结果如下: ``` pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6) ``` 接下来通过pip3安装SCFCLI: ```text sudo pip3 install scf ``` 安装完成之后,可以使用```scf -v```查看版本信息,返回结果如下: ```text ubuntu@VM-16-9-ubuntu:~$ scf -v [o] Version: 0.2.3 ``` 至此,我们完成了SCFCLI的安装。 > <checker type="output-contains" command="scf -v" hint="请完成 SCF 安装"> > <keyword regex=" Version: 0.2.3" /> > </checker> ### 配置SCFCLI 在腾讯云后台,找到访问管理,之后选择访问密钥,可以查看用户的个人密钥,也可以访问链接: [https://console.cloud.tencent.com/cam/capi](http://95s.pw/3m) 查看密钥信息,示例密钥如下(该密钥不可直接使用,请重新获取): ```text APPID: 1256773322 SecretId: AKID1aaaaaDUbw33RbcS7mKrOl1q0kK SecretKey: cCoJncN0d22dfdf2jGvcAYlXWRI5kFZj5O ``` 拿到密钥后,我们可以输入指令: ``` scf configure set ``` 然后按照提示输入信息: ```text TencentCloud appid(None): 1256773370 TencentCloud region(None): ap-guangzhou TencentCloud secret-id(********************************): AKID1aaaaaDUbwR9RbcS7mKrOl1q0kK TencentCloud secret-key(****************************): cCoJncN0ddfdfdf2jGvcAYlXWRI5kFZj5O Show the command information without color(cur:False). (y/n): y Deploy SCF function by COS, it will be faster(cur:False). (y/n): y ``` 至此,我们完成了SCFCLI的基本配置。 ## 创建并部署函数 ### 创建函数 利用SCFCLI工具,通过如下命令可创建一个名为programerDay的PHP7项目 ``` scf init --name programerDay --runtime PHP7 ``` 看到以下内容表示创建成功: ```text ubuntu@VM-16-9-ubuntu:~$ scf init --name programerDay --runtime PHP7 _____ ______ ______ ______ __ ____ / ___/ / ____// ____// ____// / / _/ \__ \ / / / /_ / / / / / / ___/ // /___ / __/ / /___ / /___ _/ / /____/ \____//_/ \____//_____//___/ [+] Initializing project... [>] Template: /usr/local/lib/python3.6/dist-packages/tcfcli/cmds/init/templates/tcf-demo-php [>] Output-Dir: . [>] Project-Name: programerDay [>] Type: Event [>] Runtime: php7 [*] Project initialization is complete [*] You could 'cd programerDay', and start this project. ``` ### 编辑项目 创建成功之后,我们可以根据提示,进入到项目中 ``` cd programerDay ``` 之后我们可以通过```vim index.php```或者右侧编辑器对页面进行编辑,编写自己的代码,但是由于我们的Demo文件过于庞大,所以此处直接下载即可: ```text wget https://others-1256773370.cos.ap-chengdu.myqcloud.com/index.php -O index.php wget https://others-1256773370.cos.ap-chengdu.myqcloud.com/phpqrcode.php -O phpqrcode.php ``` 下载好这三个资源之后,我们可以对Yaml文件进行编辑: [打开 template.yaml][edit-emplate.yaml] 将其中的Events部分和API网关部分的注释删掉,具体注释部分参考如下示例: > <edit for="edit-emplate.yaml" file="/home/ubuntu/programerDay/template.yaml"></edit> ``` /// <example file="/home/ubuntu/programerDay/template.yaml" verb="edit" language="LANGUAGE" /> Resources: default: Type: TencentCloud::Serverless::Namespace programerDay: Type: TencentCloud::Serverless::Function Properties: CodeUri: ./ Type: Event Description: This is a template function Role: QCS_SCFExcuteRole Environment: Variables: ENV_FIRST: env1 ENV_SECOND: env2 Handler: index.main_handler MemorySize: 128 Runtime: Php7 Timeout: 3 #VpcConfig: # VpcId: 'vpc-qdqc5k2p' # SubnetId: 'subnet-pad6l61i' Events: # timer: # Type: Timer # Properties: # CronExpression: '*/5 * * * *' # Enable: True # cli-appid.cos.ap-beijing.myqcloud.com: # full bucket name # Type: COS # Properties: # Bucket: cli-appid.cos.ap-beijing.myqcloud.com # Filter: # Prefix: filterdir/ # Suffix: .jpg # Events: cos:ObjectCreated:* # Enable: True # topic: # topic name # Type: CMQ # Properties: # Name: qname hello_world_apigw: # ${FunctionName} + '_apigw' Type: APIGW Properties: StageName: release ServiceId: HttpMethod: ANY IntegratedResponse: TRUE Globals: Function: Timeout: 10 ``` ### 部署函数 完成之后,保存退出。可通过如下命令进行函数部署 ``` scf deploy ``` 部署成功之后的提示如下: ```text /// <example file="提示信息" verb="edit" language="LANGUAGE" /> ubuntu@VM-16-9-ubuntu:~/programerDay$ scf deploy [*] By default, this time will be uploaded packages to COS-Bucket. [*] Region: ap-guangzhou, COS-Bucket: scf-deploy-ap-guangzhou-1256773370 [*] If you don't want to upload packages to COS-Bucket by default, you can use the close command: scf configure set --using-cos N [>] Checking ap-guangzhou COS-Bucket: scf-deploy-ap-guangzhou-1256773370. [>] default - programerDay: Package name: default-programerDay-latest.zip, package size: 63.413 kb [o] default - programerDay: Upload function zip file /default-programerDay-latest-2019-10-22-23-47-43.zip success. [o] default - programerDay: Deploy function success [o] default - programerDay: Deploy default programerDay trigger hello_world_apigw success [>] Namespace: default Package result: Success: 1 programerDay Faild: 0 Function result: Success: 1 programerDay Faild: 0 Trigger result: programerDay: hello_world_apigw: success [*] Deployment is complete and can be triggered by scf remote invoke [*] For example: scf remote invoke -r ap-guangzhou -ns default -n programerDay [+] ap-guangzhou - default - programerDay: Name: programerDay Version: $LATEST Status: Active FunctionId: lam-2i4jj5pk Region: ap-guangzhou Namespace: default Runtime: Php7 Trigger Information: > APIGW - programerDay_apigw: ModTime: 2019-10-22 23:47:52 Type: apigw TriggerDesc: api: apiId: api-cjfc9tc2 authRequired: FALSE isIntegratedResponse: FALSE requestConfig: method: ANY release: environmentName: release service: serviceId: service-qokh6e3y serviceName: SCF_API_SERVICE subDomain: https://service-qokh6e3y-1256773370.gz.apigw.tencentcs.com/release/programerDay TriggerName: programerDay_apigw AddTime: 2019-10-22 23:47:52 Enable: 1 CustomArgument: ``` 此时完成函数部署即已完成。 ### 验证结果 打开部署之后,即返回给我们一个 subDomain 值: ``` https://service-qokh6e3y-1256773370.gz.apigw.tencentcs.com/release/programerDay ``` 在网页中,可以看到输入框,我们输入:程序员日快乐 点击"生成二维码"按钮就可以看到二维码生成,此时亲爱的你,拿出手机微信扫一扫,就可以扫描二维码,获取程序员的专属快乐。 另外,另外,另外,在女朋友过生日的时候,可以用这个生成祝女朋友生日快乐的的二维码,一定会很浪漫哦,这是程序员专属的浪漫。 ### 竞赛提交 1.分别执行如下命令并截图 ``` w curl http://quan.suning.com/getSysTime.do ``` 截图附件示例如下: ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/pa3mg420ot/%E2%80%9C%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_b7ddcfa4-3834-4cce-a619-4da0ef9506d3%E2%80%9D%E7%9A%84%E5%89%AF%E6%9C%AC.png) 2.点击如下链接,提交申请表单 [https://wj.qq.com/s2/4835672/8623/](https://wj.qq.com/s2/4835672/8623/) 3.关注微信公众号获取奖励信息公示 ![image](https://share-10039692.file.myqcloud.com/lab/ac197229e6/image/d2a774mm0g/qrcode_for_gh_267f93dae19c_258.jpg)