该项目是 https://github.com/helloworlde/cookie 的后端服务,用于保存从浏览器获取的 Cookie 和对外提供查询的接口
使用到了腾讯云的云函数 Serverless、对象存储 COS、以及 API 网关;请求通过 API 网关,转发给后端的 Serverless 服务,然后将 Cookie 信息以文件的形式保存在 COS 中;查询时从 COS 读取文件内容,作为响应发送出去
- 上传
curl -X POST https://xxxxxxx.apigw.tencentcs.com/release/cos -d '{"token": "123456", "action": "UPLOAD", "domain": "test.domain","cookie": "test-content"}'
"{\"success\":true,\"message\":\"SUCCESS\",\"domain\":\"\",\"cookie\":\"\"}"%
- 下载
curl -X POST https://xxxxxxx.apigw.tencentcs.com/release/cos -d '{"token": "123456", "action": "DOWNLOAD", "domain": "test.domain"}'
"{\"success\":true,\"message\":\"SUCCESS\",\"domain\":\"test.domain\",\"cookie\":\"test-content\"}"%
在腾讯云的Serverless服务中创建新的函数
详细的 Serverless 服务实现可以参考 https://github.com/helloworlde/weather
不同的是这是一个对外提供接口的服务,所以入参使用的是events.APIGatewayRequest
- main.go
func main() {
cloudfunction.Start(operate)
}
func operate(request events.APIGatewayRequest) (string, error) {
// ...
}
文件的上传下载是通过 COS 的 SDK github.com/tencentyun/cos-go-sdk-v5
实现的,具体参考相关文档 Go SDK
- 构建
make image
上传生成的 main.zip
文件
在 函数管理
=> 函数配置
中添加使用到的环境变量
COS_TOKEN=xxx
COS_PATH=cookie
COS_URL=xxx
COS_SECRET_ID=xxx
COS_SECRET_KEY=xxx
COS_TOKEN
自定义的用于鉴权的固定 TokenCOS_PATH
上传的文件的路径前缀,自定义COS_URL
COS bucket 对外的 URL,可以在 COS bucket 的配置管理
=>域名信息
=>访问域名
找到COS_SECRET_ID
用于访问 COS 的 SecretID,在 云 API 申请COS_SECRET_KEY
用于访问 COS 的 SecreteKey,和 SecretId 一起在 云 API 申请
在函数的触发管理
中创建触发器
,选择 API网关触发器
,选择新建API服务
然后访问生成的 访问路径
curl -X POST https://xxxxxxx.apigw.tencentcs.com/release/cos -d '{"token": "123456", "action": "UPLOAD", "domain": "test.domain","cookie": "test-content"}'
"{\"success\":true,\"message\":\"SUCCESS\",\"domain\":\"\",\"cookie\":\"\"}"%
也可以在控制台选择 测试事件
Api Gateway 事件模板
,修改后进行测试
说明执行成功,在 COS 中也可以看到对应的名为 test.domain
的文件,内容是 cookie 的内容