一、前提条件
已安装 Node.js。
注意:2020年9月1日起,Serverless 组件不再支持 Node.js10.0 以下版本,请注意升级。
二、安装
已经安装 Serverless Cloud Framework 。详情请参见 安装 Serverless Cloud Framework。
三、配置
1. 新建一个 cosDemo 文件夹;
mkdir cosDemo
2. 在 cosDemo 中创建 serverless.yml 文件;
Mac 系统Linux 系统Windows 系统cd cosDemotouch serverless.ymlcd cosDemotouch serverless.ymlcd cosDemoecho. > serverless.yml
3. 在创建好的serverless.yml文件中,进行以下配置:
# serverless.ymlorg: orgDemoapp: appDemostage: devcomponent: cosname: cosDemoinputs: bucket: my-bucket region: ap-guangzhou
查看详细配置文档 >>
四、部署
执行以下命令进行部署,返回信息如下:
[root@iZh8dhuyhmexn3Z demo]# scf deployserverless-cloud-frameworkAction: "deploy" – Stage: "dev" – App: "appDemo" – Instance: "cosDemo"region: ap-guangzhoubucket: my-bucket-xxxxxxxurl: http://my-bucket-xxxxxxx.cos.ap-guangzhou.myqcloud.comFull details: https://serverless.cloud.tencent.com/instances/appDemo%3Adev%3AcosDemo3s › cosDemo › Success
注意:说明:
注意:微信扫码授权部署有过期时间,如果想要持久授权,请参见 账号配置。
五、移除
执行以下命令移除部署的服务:
·仅删除云函数相关的配置、代码。
·关联的其他云资源(如 COS、CLS 等),平台均不会关联删除,你可以前往对应产品控制台删除,避免不必要的计费。
scf remove
六、账号配置(可选)
当前默认支持 CLI 扫描二维码登录,如你希望配置持久的环境变量/密钥信息,也可以本地创建 .env 文件:
以Linux系统/Mac系统为例,执行以下命令:
touch .env # 腾讯云的配置信息
在 .env 文件中配置腾讯云的 SecretId 和 SecretKey 信息并保存。
# .envTENCENT_SECRET_ID=123TENCENT_SECRET_KEY=123
注意:说明:
七、完整配置
# serverless.ymlapp: appDemo # (否) 该应用名称stage: dev # (否) 用于区分环境信息,默认值为 devcomponent: cos # (是) 组件名称,此处为 cosname: cos-demo # (是) 实例名称inputs: src: src: ./ exclude: – .env bucket: my-bucket targetDir: / protocol: https region: ap-guangzhou replace: false # 部署时会先清理桶内所有文件,谨慎使用! website: false websiteConfig: index: index.html error: index.html ignoreHtmlExt: false # 是否忽略 html 扩展名,默认 false disableErrorStatus: false # 是否禁用错误码,默认 false acl: permissions: private grantRead: id="1234567" grantWrite: id="1234567" grantFullControl: id="1234567" cors: – maxAgeSeconds: 0 allowedMethods: – GET allowedOrigins: – '*' allowedHeaders: – '*' exposeHeaders: – '' tags: – key: abc value: xyz policy: – Principal: qcs: – 'qcs::cam::anyone:anyone' Effect: 'Allow' Action: – 'name/cos:HeadBucket' – 'name/cos:ListMultipartUploads' – 'name/cos:ListParts' – 'name/cos:GetObject' – 'name/cos:HeadObject' – 'name/cos:OptionsObject' Resource: – qcs::cos:ap-guangzhou:uid/123456789:my-bucket-123456789/* – Principal: qcs: – 'qcs::cam::uin/10023456789:uin/10023456789' Effect: 'Deny' Action: – 'name/cos:*' Resource: – qcs::cos:ap-guangzhou:uid/123456789:my-bucket-123456789/*
八、配置说明
主要参数说明如下:
| 参数 | 必选 | 类型 | 默认值 | 描述 |
| bucket | 是 | string | – | 存储桶名称,如若不添加 AppId 后缀,则系统会自动添加,后缀为大写 |
| region | 是 | string | – | 存储桶所属的区域 |
| src | 否 | string | – | 要上传到存储桶的文件或目录 |
| targetDir | 否 | string | / | 要上传到存储桶的目标目录,默认目录是根路径 / |
| protocol | 否 | string | https | 访问协议 |
| acl | 否 | Acl | – | 访问控制配置 |
| cors | 否 | Cors[] | – | 跨域资源共享配置 |
| tags | 否 | Tag[] | – | 标签配置 |
| policy | 否 | Policy | – | 策略控制配置 |
| replace | 否 | boolean | false | 是否是替换式部署,如果为 true,部署时将 先删除对应 bucket 的所有旧文件。 |
| website | 否 | boolean | false | 是否开启静态网站能力 |
| websiteConfig | 否 | WebsiteConfig | – | 静态网站相关配置,只有 website 为 true 时才生效 |
九、Acl
| 参数 | 必选 | 类型 | 默认值 | 描述 |
| permissions | 否 | string | private | 定义存储桶的访问控制列表(ACL)属性。有关枚举值(如 private、public-read),请参见 ACL 概述 中的“存储桶的预设 ACL”部分。 |
| grantRead | 否 | string | – | 授予读取权限,以 id ="OwnerUin" 格式授权对存储桶读取的权限,例如 id="100000000001" |
| grantWrite | 否 | string | – | 授予写入权限,以 id ="OwnerUin" 格式授权对存储桶写入的权限,例如 id="100000000001" |
| grantFullControl | 否 | string | – | 授予全权控制权限,以 id ="OwnerUin" 格式授权对存储桶全权控制的权限,例如 id="100000000001" |
十、Cors
| 参数 | 必选 | 类型 | 描述 |
| id | 是 | string | 配置规则的 id。 |
| maxAgeSeconds | 是 | number | 设置 OPTIONS 请求得到结果的有效期。 |
| allowedMethods | 是 | string[] | 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE。 |
| allowedOrigins | 是 | string[] | 允许的访问来源,支持通配符 *,格式为:协议://域名[:端口],例如:http://www.qq.com。 |
| allowedHeaders | 是 | string[] | 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符*。 |
| exposeHeaders | 是 | string[] | 设置浏览器可以接收到的来自服务器端的自定义头部信息。 |
十一、Tag
| 参数 | 必选 | 类型 | 描述 |
| key | 是 | string | 标签的 Key,长度不超过 128 字节, 支持英文字母、数字、空格、加号、减号、下划线、等号、点号、冒号、斜线。 |
| value | 是 | string | 标签的 Value,长度不超过 256 字节, 支持英文字母、数字、空格、加号、减号、下划线、等号、点号、冒号、斜线。 |
十二、Policy
详情见 COS API 授权策略使用指引 和 访问策略语言概述。
注意:说明:
注意:Principal、Effect、Action、Resource 均为首字母大写。
十三、WebsiteConfig
静态网站相关配置如下:
| 参数 | 必选 | 类型 | 描述 |
| index | 否 | string | index.html |
| error | 否 | string | error.html |
| disableErrorStatus | 否 | boolean | false |
| ignoreHtmlExt | 否 | boolean | false |