云服务器内容精选
-
代码示例 本示例用于设置examplebucket桶下example/objectname对象的ACL权限控制为私有权限 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 package main import ( "fmt" "os" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityToken(securityToken)) if err != nil { fmt.Printf("Create obsClient error, errMsg: %s", err.Error()) } input := &obs.SetObjectAclInput{} // 指定存储桶名称 input.Bucket = "examplebucket" // 指定对象,此处以 example/objectname 为例。 input.Key = "example/objectname" // 指定对象的Acl,此处以私有权限为例 input.ACL = obs.AclPrivate // 设置对象ACL output, err := obsClient.SetObjectAcl(input) if err == nil { fmt.Printf("Set Object(%s)'s acl successful with Bucket(%s)!\n", input.Key, input.Bucket) fmt.Printf("RequestId:%s\n", output.RequestId) return } fmt.Printf("Set Object(%s)'s acl fail with Bucket(%s)!\n", input.Key, input.Bucket) if obsError, ok := err.(obs.ObsError); ok { fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.") fmt.Println(obsError.Error()) } else { fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.") fmt.Println(err) } }
-
返回结果说明 表10 返回结果 参数名称 参数类型 描述 output *BaseModel 参数解释: 接口返回信息。详情参见BaseModel。 err error 参数解释: 接口返回错误信息。 表11 BaseModel 参数名称 参数类型 描述 StatusCode int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 RequestId string 参数解释: OBS服务端返回的请求ID。 默认取值: 无 ResponseHeaders map[string][]string 参数解释: HTTP响应头信息。 默认取值: 无
-
请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 input *SetObjectAclInput 必选 参数解释: 设置对象ACL请求参数。详情参见SetObjectAclInput。 extensions extensionOptions 可选 参数解释: 拓展配置项。通过调用拓展配置项为对应请求配置额外的拓展请求头,详情参考extensionOptions。 表2 SetObjectAclInput 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4. myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 VersionId string 可选 参数解释: 对象的版本号。例如:G001117FCE89978B0000401205D5DC9A。 取值范围: 长度为32的字符串。 默认取值: 无 ACL AclType 可选 参数解释: 预定义访问策略。 取值范围: AclType取值详见AclType。 默认取值: 无 Owner Owner 可选 参数解释: 对象的所有者账号户ID,详见Owner。 约束限制: Owner和Grants必须配套使用,且与ACL互斥。 Grants []Grant 可选 参数解释: 被授权用户权限信息,详见Grant。 默认取值: 无 表3 AclType 常量名 原始值 说明 AclPrivate private 私有读写。 桶或对象的所有者拥有完全控制的权限,其他任何人都没有访问权限。 AclPublicRead public-read 公共读私有写。 设在桶上,所有人可以获取该桶内对象列表、桶内多段任务、桶的元数据、桶的多版本。 设在对象上,所有人可以获取该对象内容和元数据。 AclPublicReadWrite public-read-write 公共读写。 设在桶上,所有人可以获取该桶内对象列表、桶内多段任务、桶的元数据、桶的多版本、上传对象、删除对象、初始化段任务、上传段、合并段、拷贝段、取消多段上传任务。 设在对象上,所有人可以获取该对象内容和元数据。 AclPublicReadDelivered public-read-delivered 桶公共读,桶内对象公共读。 设在桶上,所有人可以获取该桶内对象列表、桶内多段任务、桶的元数据、桶的多版本,可以获取该桶内对象的内容和元数据。 说明: AclPublicReadDelivered不能应用于对象。 AclPublicReadWriteDelivered public-read-write-delivered 桶公共读写,桶内对象公共读写。 设在桶上,所有人可以获取该桶内对象列表、桶内多段任务、桶的元数据、桶的多版本、上传对象、删除对象、初始化段任务、上传段、合并段、拷贝段、取消多段上传任务,可以获取该桶内对象的内容和元数据。 说明: AclPublicReadWriteDelivered不能应用于对象。 AclBucketOwnerFullControl bucket-owner-full-control 设在对象上,桶和对象的所有者拥有对象的完全控制权限,其他任何人都没有访问权限。 默认情况下,上传对象至其他用户的桶中,桶拥有者没有对象的控制权限。对象拥有者为桶拥有者添加此权限控制策略后,桶所有者可以完全控制对象。例如,用户A上传对象x至用户B的桶中,系统默认用户B没有对象x的控制权。当用户A为对象x设置bucket-owner-full-control策略后,用户B就拥有了对象x的控制权。 表4 Owner 参数名称 参数类型 是否必选 描述 ID string 作为请求参数时必选 参数解释: 所有者的账号ID,即domain_id。 取值范围: 如何获取账号ID请参见如何获取账号ID和用户ID? 默认取值: 无 表5 Grant 参数名称 参数类型 是否必选 描述 Grantee Grantee 作为请求参数时必选 参数解释: 被授权用户相关信息,详见Grantee。 Permission PermissionType 作为请求参数时必选 参数解释: 被授予的权限。 取值范围: 权限取值范围详见PermissionType。 默认取值: 无 表6 Grantee 参数名称 参数类型 是否必选 描述 Type GranteeType 作为请求参数时必选 参数解释: 被授权用户的类型。 取值范围: 被授权用户类型的取值范围详见GranteeType。 默认取值: 无 ID string 作为请求参数时,如果Type为用户类型则必选。 参数解释: 被授权用户的账号ID,即domain_id。 取值范围: 如何获取账号ID请参见如何获取账号ID和用户ID? 默认取值: 无 DisplayName string 作为请求参数时可选 参数解释: 被授权用户的账号名。 约束限制: 不支持中文。 只能以字母开头。 长度为6-32个字符。 只能包含英文字母、数字或特殊字符(-_)。 默认取值: 无 URI GroupUriType 作为请求参数时,如果Type为用户组类型则必选。 参数解释: 被授权的用户组。 取值范围: 授权用户组取值范围详见GroupUriType。 默认取值: 无 表7 PermissionType 常量名 原始值 说明 PermissionRead READ 读权限。 PermissionWrite WRITE 写权限。 PermissionReadAcp READ_ACP 读取ACL配置的权限。 PermissionWriteAcp WRITE_ACP 修改ACL配置的权限。 PermissionFullControl FULL_CONTROL 完全控制权限,包括对桶或对象的读写权限,以及对桶或对象ACL配置的读写权限。 表8 GranteeType 常量名 原始值 说明 GranteeGroup Group 用户组。 GranteeUser CanonicalUser 单个用户。 表9 GroupUriType 常量名 原始值 说明 GroupAllUsers AllUsers 所有用户。
-
功能说明 OBS支持对对象的操作进行权限控制。默认情况下,只有对象的创建者才有该对象的读写权限。用户也可以设置其他的访问策略,比如对一个对象可以设置公共访问策略,允许所有人对其都有读权限。SSE-KMS方式加密的对象即使设置了ACL,跨租户也不生效。 OBS用户在上传对象时可以设置权限控制策略,也可以通过ACL操作API接口对已存在的对象更改或者获取ACL(access control list) 。
-
接口约束 您必须是桶拥有者或拥有设置对象ACL的权限,才能设置对象ACL。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:PutObjectAcl权限,如果使用桶策略则需授予PutObjectAcl权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 一个对象的ACL最多支持配置100条授权策略。
-
返回结果说明 表3 返回结果 参数名称 参数类型 描述 output *DeleteObjectOutput 参数解释: 接口返回信息,详情参考DeleteObjectOutput。 err error 参数解释: 接口返回错误信息。 表4 DeleteObjectOutput 参数名称 参数类型 描述 StatusCode int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 RequestId string 参数解释: OBS服务端返回的请求ID。 默认取值: 无 ResponseHeaders map[string][]string 参数解释: HTTP响应头信息。 默认取值: 无 DeleteMarker bool 参数解释: 标识删除的对象是否是删除标记。 取值范围: true:是删除标记。 false:不是删除标记。 默认取值: false VersionId string 参数解释: 对象的版本号,用于删除指定版本号的对象。例如:G001117FCE89978B0000401205D5DC9。 取值范围: 长度为32的字符串。 默认取值: 无,如果不设置则默认删除最新版本的对象。
-
代码示例 本示例用于删除examplebucket桶中的example/objectname对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 package main import ( "fmt" "os" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint/*, obs.WithSecurityToken(securityToken)*/) if err != nil { fmt.Printf("Create obsClient error, errMsg: %s", err.Error()) } input := &obs.DeleteObjectInput{} // 指定存储桶名称 input.Bucket = "examplebucket" // 指定删除对象,此处以 example/objectname 为例。 input.Key = "example/objectname" // 删除对象 output, err := obsClient.DeleteObject(input) if err == nil { fmt.Printf("Delete object(%s) under the bucket(%s) successful!\n", input.Key, input.Bucket) fmt.Printf("RequestId:%s\n", output.RequestId) return } fmt.Printf("Delete object(%s) under the bucket(%s) fail!\n", input.Key, input.Bucket) if obsError, ok := err.(obs.ObsError); ok { fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.") fmt.Println(obsError.Error()) } else { fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.") fmt.Println(err) } }
-
请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 input *DeleteObjectInput 必选 删除对象请求参数。 extensions extensionOptions 可选 参数解释: 拓展配置项。通过调用拓展配置项为对应请求配置额外的拓展请求头,详情参考extensionOptions。 表2 DeleteObjectInput 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 Key string 必选 参数解释: 目标对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4. myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 VersionId string 可选 参数解释: 对象的版本号,用于删除指定版本号的对象。例如:G001117FCE89978B0000401205D5DC9。 取值范围: 长度为32的字符串。 默认取值: 无,如果不设置则默认删除最新版本的对象。
-
上传对象简介(Go SDK) 在OBS中,用户操作的基本数据单元是对象。OBS Go SDK提供了丰富的对象上传接口,可以通过以下方式上传对象: 流式上传 文件上传 分段上传 断点续传上传 SDK支持上传0KB~5GB的对象。流式上传和文件上传的内容大小不能超过5GB;当上传较大文件时,请使用分段上传,分段上传每段内容大小不能超过5GB。 如果上传的对象权限设置为匿名用户读取权限,对象上传成功后,匿名用户可通过链接地址访问该对象数据。对象链接地址格式为:https://桶名. 域名 /文件夹目录层级/对象名。如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 上传对象-流式上传(Go SDK) 上传对象-文件上传(Go SDK) 上传对象-追加上传(Go SDK) 上传对象-断点续传上传(Go SDK) 父主题: 对象相关接口(Go SDK)
-
代码示例 本示例用于删除examplebucket桶中的example/objectname对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 package main import ( "fmt" "os" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint/*, obs.WithSecurityToken(securityToken)*/) if err != nil { fmt.Printf("Create obsClient error, errMsg: %s", err.Error()) } input := &obs.DeleteObjectInput{} // 指定存储桶名称 input.Bucket = "examplebucket" // 指定删除对象,此处以 example/objectname 为例。 input.Key = "example/objectname" // 删除对象 output, err := obsClient.DeleteObject(input) if err == nil { fmt.Printf("Delete object(%s) under the bucket(%s) successful!\n", input.Key, input.Bucket) fmt.Printf("RequestId:%s\n", output.RequestId) return } fmt.Printf("Delete object(%s) under the bucket(%s) fail!\n", input.Key, input.Bucket) if obsError, ok := err.(obs.ObsError); ok { fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.") fmt.Println(obsError.Error()) } else { fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.") fmt.Println(err) } }
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格