操作场景
对象存储 COS 组件是 serverless-tencent 组件库中的基础组件之一。通过对象存储 COS 组件,可以快速且方便地创建、配置和管理腾讯云的 COS 存储桶。
前提条件
注意:
2020年9月1日起,Serverless 组件不再支持 Node.js10.0 以下版本,请注意升级。
操作步骤
安装
配置
1. 新建一个 cosDemo 文件夹;
mkdir cosDemo
2. 在 cosDemo 中创建
serverless.yml
文件;cd cosDemotouch serverless.yml
cd cosDemotouch serverless.yml
cd cosDemoecho. > serverless.yml
3. 在创建好的
serverless.yml
文件中,进行以下配置:# serverless.ymlorg: orgDemoapp: appDemostage: devcomponent: cosname: cosDemoinputs:bucket: my-bucketregion: 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:- .envbucket: my-buckettargetDir: /protocol: httpsregion: ap-guangzhoureplace: false # 部署时会先清理桶内所有文件,谨慎使用!website: falsewebsiteConfig:index: index.htmlerror: index.htmlignoreHtmlExt: false # 是否忽略 html 扩展名,默认 falsedisableErrorStatus: false # 是否禁用错误码,默认 falseacl:permissions: privategrantRead: id="1234567"grantWrite: id="1234567"grantFullControl: id="1234567"cors:- maxAgeSeconds: 0allowedMethods:- GETallowedOrigins:- '*'allowedHeaders:- '*'exposeHeaders:- ''tags:- key: abcvalue: xyzpolicy:- 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 | 否 | - | 访问控制配置 | |
cors | 否 | - | 跨域资源共享配置 | |
tags | 否 | - | 标签配置 | |
policy | 否 | - | 策略控制配置 | |
replace | 否 | boolean | false | 是否是替换式部署,如果为 true ,部署时将 先删除对应 bucket 的所有旧文件 。 |
website | 否 | boolean | false | 是否开启静态网站能力 |
websiteConfig | 否 | - | 静态网站相关配置,只有 website 为 true 时才生效 |
Acl
参数 | 必选 | 类型 | 默认值 | 描述 |
permissions | 否 | string | private | |
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
说明:
Principal
、Effect
、Action
、Resource
均为首字母大写。WebsiteConfig
静态网站相关配置如下:
参数 | 必选 | 类型 | 描述 |
index | 否 | string | index.html |
error | 否 | string | error.html |
disableErrorStatus | 否 | boolean | false |
ignoreHtmlExt | 否 | boolean | false |