SCF-COS触发器实现文件变更通知 (COS文件上传结果回调)

301 阅读2分钟

前言:

本教程基于python语言,在开始前请确保您有基本的python编程能力(没有也行)

本教程应用到了SCF、COS 请确保您对这两个产品有基本的了解

python教程:www.runoob.com/python/pyth…

资源文件:

SCF函数

# -*- coding: utf8 -*-
from qcloud_cos_v5 import CosConfig
from qcloud_cos_v5 import CosS3Client
from qcloud_cos_v5 import CosServiceError
from qcloud_cos_v5 import CosClientError
import requests
import json
import sys
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO) # 默认打印 INFO 级别日志,可根据需要调整为 DEBUG、WARNING、ERROR、CRITICAL 级日志

def main_handler(event, context):
    for record in event['Records']:
        try:
            request_info = json.dumps(record)
            url = 'http://43.143.142.136:8081'
            headers = {'Content-Type': 'application/json'}
            response = requests.post(url, data=request_info, headers=headers)
            # download object from cos

        except Exception as e:
            print(e)
            print('Error getting object {} from bucket {}. '.format(key, bucket))
            raise e
            return "Fail"

    return "Success"

教程正式开始

1.先创建函数

image.png

2.配置函数基本

image.png

部署完成后自动跳转到函数配置页,主要内容是函数服务器的配置这里

可以配置VPC然后挂载CFS 实现文件内网操作多挂载方式的文件共享

重点看一下触发器 这里选择cos文件操作触发 选择存储后完成

3.进入在线调试测一下

image.png

这里提供个python脚本 主要是开端口 打印测试信息 放到服务器上 python3 main.py就可以启动


from http.server import HTTPServer, BaseHTTPRequestHandler
import urllib
import json

'''========【http端口服务】========'''


class HttpHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        path, args = urllib.parse.splitquery(self.path)
        self._response(path, args)

    def do_POST(self):
        args = self.rfile.read(int(self.headers['content-length'])).decode("utf-8")
        self._response(self.path, args)

    def _response(self, path, args):
        # 组装参数为字典
        # if args:
        #     args = urllib.parse.parse_qs(args).items()
        #     args = dict([(k, v[0]) for k, v in args])
        # else:
        #     args = {}
        # 设置响应结果
        result = {"status": 0, "msg": "操作成功", "data": [{"page_id": 1}, {"page_id": 2},{"param": args}]}
        print(result)
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        self.wfile.write(json.dumps(result).encode())


if __name__ == '__main__':
    # 开启http服务,设置监听ip和端口
    httpd = HTTPServer(('', 8081), HttpHandler)
    httpd.serve_forever()
    # 运行后 http://localhost:8787 即可访问该接口

回到控制台点击测试 查看端口脚本执行情况

image.png

打印出了完整的回调信息

教程结束 原创不易 跪求三连

image.png