有奖捉虫:行业应用 & 管理与支持文档专题 HOT

操作场景

对象存储 COS 组件是 serverless-tencent 组件库中的基础组件之一。通过对象存储 COS 组件,可以快速且方便地创建、配置和管理腾讯云的 COS 存储桶。

前提条件

已安装 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 cosDemo
touch serverless.yml
cd cosDemo
touch serverless.yml
cd cosDemo
echo. > serverless.yml
3. 在创建好的serverless.yml文件中,进行以下配置:
# serverless.yml
?
org: orgDemo
app: appDemo
stage: dev
component: cos
name: cosDemo
?
inputs:
bucket: my-bucket
region: ap-guangzhou
?

部署

执行以下命令进行部署,返回信息如下:
[root@iZh8dhuyhmexn3Z demo]# scf deploy
?
serverless-cloud-framework
Action: "deploy" - Stage: "dev" - App: "appDemo" - Instance: "cosDemo"
?
region: ap-guangzhou
bucket: my-bucket-xxxxxxx
url: http://my-bucket-xxxxxxx.cos.ap-guangzhou.myqcloud.com
?
Full details: https://serverless.cloud.tencent.com/instances/appDemo%3Adev%3AcosDemo
?
3s ? cosDemo ? Success
?
说明:
微信扫码授权部署有过期时间,如果想要持久授权,请参见 账号配置

移除

执行以下命令移除部署的服务:
仅删除云函数相关的配置、代码。
关联的其他云资源(如 COS、CLS 等),平台均不会关联删除,您可以前往对应产品控制台删除,避免不必要的计费。
scf remove

账号配置(可选)

当前默认支持 CLI 扫描二维码登录,如您希望配置持久的环境变量/密钥信息,也可以本地创建 .env 文件:
以Linux系统/Mac系统为例,执行以下命令:
touch .env # 腾讯云的配置信息
.env 文件中配置腾讯云的 SecretId 和 SecretKey 信息并保存。
# .env
TENCENT_SECRET_ID=123
TENCENT_SECRET_KEY=123
说明:
如果没有腾讯云账号,请先 注册新账号
如果已有腾讯云账号,可以在 API 密钥管理 中获取 SecretId 和 SecretKey。

配置详情

完整配置

# serverless.yml
?
app: appDemo # (否) 该应用名称
stage: dev # (否) 用于区分环境信息,默认值为 dev
?
component: cos # (是) 组件名称,此处为 cos
name: 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
-
策略控制配置
replace
boolean
false
是否是替换式部署,如果为 true,部署时将 先删除对应 bucket 的所有旧文件
website
boolean
false
是否开启静态网站能力
websiteConfig
-
静态网站相关配置,只有 websitetrue 时才生效

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
配置规则的
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

说明:
PrincipalEffectActionResource 均为首字母大写。

WebsiteConfig

静态网站相关配置如下:
参数
必选
类型
描述
index
string
index.html
error
string
error.html
disableErrorStatus
boolean
false
ignoreHtmlExt
boolean
false
?
?


http://www.vxiaotou.com