/tx-apigw-save-log

Collect logs of API gateway service of Tencent Cloud.

Primary LanguagePythonMIT LicenseMIT

腾讯云API网关日志保存

以天为单位保存腾讯云API网关日志。可选上传到腾讯云COS。

需要的权限策略

QcloudAPIGWReadOnlyAccess(用于获取日志)和QcloudCOSDataWriteOnly(用于保存获取到的日志到COS)。

本地命令行程序

命令行程序为main.py,需要在环境变量TENCENTCLOUD_SECRETIDTENCENTCLOUD_SECRETKEY中提供可访问需要的权限策略的用户的secret id和secret key。

参数 可选 内容
-r, --region 目标API网关和(如上传到COS)bucket的所在区域
-s, --service-id 目标API网关的service id
-p, --path 保存日志的路径(本地路径或bucket路径)
-b, --bucket (如上传到COS)上传到bucket的名称
-d, --date (如要指定日期)要保存哪一天的日志,日期格式为Y-m-d

部署为云函数

部署前先创建自定义角色scf-apigw-save-log并允许需要的权限策略。

确保本地环境配置好python3和pip后,将requirements.txt复制到一个空文件夹,并在该文件夹下运行pip install -r requirements.txt -t .,然后将整个文件夹的内容打包为一个zip文件,上传为一个层,起名为apigw-save-log-deps,环境设置为Python 3.7。

serverless.yml中填写空缺的组件实例名称、云函数所在区域以及四个环境变量(内容同命令行程序参数,--path对应FILE_PATH),并将其以serverless.yml的文件名另存为到一个空文件夹。将api.py proc.py scf.py三个所需文件复制到该文件夹。确保安装好腾讯云serverless cli(npm i -g serverless)后,在该文件夹下运行serverless deploy以部署函数。部署完成后记得到控制台绑定前面建立的apigw-save-log-deps层。

默认情况下这个云函数每天凌晨1点收集前一天的日志并上传到COS。这个云函数不会读取触发事件的payload,每次执行它都会收集前一天的日志。