6分钟
任务2 云函数编写
任务目的
在CVM中创建项目文件夹,以存放云函数以及所有依赖,并在文件夹中创建index.py文件,编写云函数代码。
- 示例逻辑: 对每次GET请求判断是否存在‘key1’字符传入,如有,则成功次数(scf_suc_counts)+1,如无,则失败次数(scf_fail_counts)+1
- 本示例基于Python2.7环境演示
任务步骤
1.创建项目
进入/data目录。
[root@scftest ~]# cd /data创建项目文件夹并进入文件夹。
[root@scftest data]# mkdir MyProject
[root@scftest data]# cd MyProject/创建index.py并进入编写界面。
[root@scftest MyProject]# vi index.py2.编写代码
编写代码,这里需要学员自己的云API密钥SecretId和SecretKey,并且为了安全考虑,建议学员建立子用户用来操作SCF与CM。
关于子用户创建、SecretId和SecretKey的部分,学员可以参考实战课程《利用腾讯云COS作为图床为Markdown文档提供图片链接》4.2步骤。
示例代码为:
# -*- coding: utf8 -*-
import time
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.monitor.v20180724 import monitor_client, models
#自定义监控初始化函数,指定region和secrecId、secretKey
def MONITOR(secretId,secretKey): # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
# 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
try:
# 获取region地区,这里填写云函数所在的地域
region = "ap-guangzhou"
cred = credential.Credential(secretId,secretKey) # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
# 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
client = monitor_client.MonitorClient(cred, region)
except TencentCloudSDKException as err:
print(err)
return client
#自定义监控上报函数,传入函数名称,指标名称,指标值
def API(client,instanceName,MetricName,Value):
req = models.PutMonitorDataRequest()
req.AnnounceInstance = instanceName
req.AnnounceTimestamp = int(time.time())
req.Metrics = [
{"MetricName": MetricName,"Value": Value}
]
resp = client.PutMonitorData(req)
return resp.to_json_string()
#将yourSecretId的内容换成你的SecretId,将yourSecretKey换你的SecretKey。
def main_handler(event, context):
client = MONITOR("yourSecretId", "yourSecretKey") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
# 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
if event.get('queryString')is not None and 'key1' in event.get('queryString').keys():
#scf的名称需要包含namespace和函数名称,中间用"|"分割
print(API(client,"default|scf_monitor_Test","scf_suc_count",1))
result = "scf_suc_count+1"
else:
print(API(client,"default|scf_monitor_Test","scf_fail_count",1))
result = "scf_fail_count+1"
return result #return保存云函数。
学员评价