基於SCFCLI 快速搭建二維碼生成工具
任務時間:時間未知
Serverless 概述
Serverless是一種構建和管理基於微服務架構的完整流程,允許你在服務部署級別而不是服務器部署級別來管理你的應用部署,甚至可以管理某個具體功能或端口的部署,這就能讓開發者快速迭代,更快速地開發軟件。簡單來說,Serverless 即更加輕量的雲原生環境。
關於SCF 與SCFCLI
雲函數(Serverless Cloud Function,SCF)是騰訊雲為企業和開發者們提供的無服務器執行環境,幫助您在無需購買和管理服務器的情況下運行代碼。您只需使用平台支持的語言編寫核心代碼並設置代碼運行的條件,即可在騰訊雲基礎設施上彈性、安全地運行代碼。SCF是實時文件處理和數據處理等場景下理想的計算平台。更多詳情
CF CLI是騰訊云云函數(Serverless Cloud Function,SCF)產品的命令行工具。通過scf命令行工具,您可以方便的實現函數打包、部署、本地調試,也可以方便的生成雲函數的項目並基於demo項目進一步的開發。更多詳情
安裝與配置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:
sudo pip3 install scf
安裝完成之後,可以使用scf -v
查看版本信息,返回結果如下:
ubuntu@VM-16-9-ubuntu:~$ scf -v
[o]
Version: 0.2.3
至此,我們完成了SCFCLI的安裝。
配置SCFCLI
在騰訊雲後台,找到訪問管理,之後選擇訪問密鑰,可以查看用戶的個人密鑰,也可以訪問鏈接: https://console.cloud.tencent.com/cam/capi
查看密鑰信息,示例密鑰如下(該密鑰不可直接使用,請重新獲取):
APPID: 1256773322
SecretId: AKID1aaaaaDUbw33RbcS7mKrOl1q0kK
SecretKey: cCoJncN0d22dfdf2jGvcAYlXWRI5kFZj5O
拿到密鑰後,我們可以輸入指令:
scf configure set
然後按照提示輸入信息:
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
看到以下內容表示創建成功:
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文件過於龐大,所以此處直接下載即可:
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將其中的Events部分和API網關部分的註釋刪掉,具體註釋部分參考如下示例:
示例代碼:/home/ubuntu/programerDay/template.yaml
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
部署成功之後的提示如下:
示例代碼:提示信息
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
在網頁中,可以看到輸入框,我們輸入:程序員日快樂
點擊”生成二維碼”按鈕就可以看到二維碼生成,此時親愛的你,拿出手機微信掃一掃,就可以掃描二維碼,獲取程序員的專屬快樂。
另外,另外,另外,在女朋友過生日的時候,可以用這個生成祝女朋友生日快樂的的二維碼,一定會很浪漫哦,這是程序員專屬的浪漫。