华为云用户手册

  • 创桶时指定预定义ACL 以下代码展示如何在创建桶时指定预定义ACL: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AC CES S_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); ObsBucket obsBucket = new ObsBucket(); obsBucket.setBucketName("bucketname"); // 设置桶ACL为公共读写 obsBucket.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ_WRITE); // 创建桶 obsClient.createBucket(obsBucket);
  • 简单创建 以下代码展示如何新建一个桶: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 创建桶 try{ // 创建桶成功 HeaderResponse response = obsClient.createBucket("bucketname"); Log.i("CreateBucket", response.getRequestId()); } catch (ObsException e) { // 创建桶失败 Log.e("CreateBucket", "Response Code: " + e.getResponseCode()); Log.e("CreateBucket", "Error Message: " + e.getErrorMessage()); Log.e("CreateBucket", "Error Code: " + e.getErrorCode()); Log.e("CreateBucket", "Request ID: " + e.getErrorRequestId()); Log.e("CreateBucket", "Host ID: " + e.getErrorHostId()); } 桶的名字是全局唯一的,所以您需要确保不与已有的桶名称重复。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 本示例创建的桶的ACL默认是私有读写,存储类型默认是标准类型,区域位置是默认区域。
  • 带参数创建 创建桶时可以指定桶ACL、存储类型和区域位置。OBS支持的桶的存储类型有三类,参见桶存储类型。示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); ObsBucket obsBucket = new ObsBucket(); obsBucket.setBucketName("bucketname"); // 设置桶ACL为公共读,默认是私有 obsBucket.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ); // 设置桶的存储类型为归档存储 obsBucket.setBucketStorageClass(StorageClassEnum.COLD); // 设置桶区域位置 obsBucket.setLocation("bucketlocation"); // 创建桶 try{ // 创建桶成功 HeaderResponse response =obsClient.createBucket(obsBucket); Log.i("CreateBucket", response.getRequestId()); } catch (ObsException e) { // 创建桶失败 Log.e("CreateBucket", "Response Code: " + e.getResponseCode()); Log.e("CreateBucket", "Error Message: " + e.getErrorMessage()); Log.e("CreateBucket", "Error Code: " + e.getErrorCode()); Log.e("CreateBucket", "Request ID: " + e.getErrorRequestId()); Log.e("CreateBucket", "Host ID: " + e.getErrorHostId()); }
  • 获取多版本对象ACL 您可以通过ObsClient.getObjectAcl接口传入版本号(versionId)获取多版本对象ACL,示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); AccessControlList acl = obsClient.getObjectAcl("bucketname", "objectname", "versionid"); System.out.println(acl);
  • 设置多版本对象ACL 您可以通过ObsClient.setObjectAcl接口传入版本号(versionId)设置多版本对象ACL,示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 通过预定义访问策略设置多版本对象ACL为公共读 obsClient.setObjectAcl("bucketname", "objectname", AccessControlList.REST_CANNED_PUBLIC_READ, "versionid"); AccessControlList acl = new AccessControlList(); Owner owner = new Owner(); owner.setId("ownerid"); acl.setOwner(owner); // 为所有用户设置读权限 acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ); // 直接设置多版本对象ACL obsClient.setObjectAcl("bucketname", "objectname", acl, "versionid"); ACL中需要填写的所有者(Owner)或者被授权用户(Grantee)的ID,是指用户的账号ID,可通过OBS控制台“我的凭证”页面查看。
  • 上传对象时指定预定义ACL 以下代码展示如何在上传对象时指定预定义ACL: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); PutObjectRequest request = new PutObjectRequest(); request.setBucketName("bucketname"); request.setObjectKey("objectname"); request.setFile(new File("localfile")); // localfile为待上传的本地文件路径,需要指定到具体的文件名 // 设置对象ACL为公共读 request.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ); obsClient.putObject(request);
  • 为对象设置预定义ACL 以下代码展示如何为对象设置预定义ACL: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 设置对象ACL为私有读写 obsClient.setObjectAcl("bucketname", "objectname", AccessControlList.REST_CANNED_PRIVATE);
  • 自定义设置对象ACL 以下代码展示如何直接设置对象ACL: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); AccessControlList acl = new AccessControlList(); Owner owner = new Owner(); owner.setId("ownerid"); acl.setOwner(owner); // 为指定用户设置完全控制权限 acl.grantPermission(new CanonicalGrantee("userid"), Permission.PERMISSION_FULL_CONTROL); // 为所有用户设置读权限 acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ); obsClient.setObjectAcl("bucketname", "objectname", acl); ACL中需要填写的所有者(Owner)或者被授权用户(Grantee)的ID,是指用户的账号ID,可通过OBS控制台“我的凭证”页面查看。
  • 获取对象ACL 您可以通过ObsClient.getObjectAcl获取对象ACL。以下代码展示如何获取对象ACL: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); AccessControlList acl = obsClient.getObjectAcl("bucketname", "objectname"); Log.i("GetObjectAcl", acl);
  • 删除桶策略 您可以通过ObsClient.deleteBucketPolicy删除桶策略。示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); obsClient.deleteBucketPolicy("bucketname");
  • 设置桶策略 您可以通过ObsClient.setBucketPolicy设置桶策略。示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); obsClient.setBucketPolicy("bucketname", "your policy"); 桶策略内容的具体格式(JSON格式字符串)请参考《 对象存储服务 API参考》。
  • 获取桶策略 您可以通过ObsClient.getBucketPolicy获取桶策略。示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); String policy = obsClient.getBucketPolicy("bucketname"); Log.i("GetBucketPolicy","\t" + policy);
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则抛出异常,复制对象失败。 您可以使用的限定条件如下: 参数 作用 OBS Android SDK对应方法 Copy-Source-If-Modified-Since 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 CopyObjectRequest.setIfModifiedSince Copy-Source-If-Unmodified-Since 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 CopyObjectRequest.setIfUnmodifiedSince Copy-Source-If-Match 如果源对象的ETag值与该参数值相同,则进行复制,否则抛出异常。 CopyObjectRequest.setIfMatchTag Copy-Source-If-None-Match 如果源对象的ETag值与该参数值不相同,则进行复制,否则抛出异常。 CopyObjectRequest.setIfNoneMatchTag
  • 重写对象ACL 以下代码展示了如何在复制对象时重写对象ACL: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); CopyObjectRequest request = new CopyObjectRequest("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); // 复制时重写对象ACL为公共读 request.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ); CopyObjectResult result = obsClient.copyObject(request); Log.i("CopyObject","\t" + result.getEtag());
  • 重写对象属性 以下代码展示了如何在复制对象时重写对象属性: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); CopyObjectRequest request = new CopyObjectRequest("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); // 设置进行对象属性重写 request.setReplaceMetadata(true); ObjectMetadata newObjectMetadata = new ObjectMetadata(); newObjectMetadata.setContentType("image/jpeg"); newObjectMetadata.addUserMetadata("property", "property-value"); newObjectMetadata.setObjectStorageClass(StorageClassEnum.WARM); request.setNewObjectMetadata(newObjectMetadata); CopyObjectResult result = obsClient.copyObject(request); Log.i("CopyObject","\t" + result.getEtag()); CopyObjectRequest.setReplaceMetadata需与CopyObjectRequest.setNewObjectMetadata配合使用。
  • 简单复制 以下代码展示了如何进行简单复制: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); CopyObjectResult result = obsClient.copyObject("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); Log.i("CopyObject","\t" + result.getEtag());
  • 网站文件托管 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可通过以下步骤实现网站文件托管: 将网站文件上传至OBS的桶中,并设置对象MIME类型。 设置对象ACL为公共读。 通过浏览器访问对象。 以下代码展示了如何实现网站文件托管: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 上传对象,设置对象MIME类型 PutObjectRequest request = new PutObjectRequest(); request.setBucketName("bucketname"); request.setObjectKey("test.html"); request.setFile(new File("localfile.html")); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("text/html"); request.setMetadata(metadata); obsClient.putObject(request); // 设置对象ACL为公共读 obsClient.setObjectAcl("bucketname", "test.html", AccessControlList.REST_CANNED_PUBLIC_READ); 上例中您可以使用https://bucketname.your-endpoint/test.html在浏览器直接访问托管的文件。 父主题: 静态网站托管
  • 网站文件托管 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可通过以下步骤实现网站文件托管: 将网站文件上传至OBS的桶中,并设置对象MIME类型。 设置对象ACL为公共读。 通过浏览器访问对象。 以下代码展示了如何实现网站文件托管: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { //设置对象MIME类型 PutObjectRequest request = new PutObjectRequest { BucketName = "bucketname", ObjectKey = "test.html", FilePath = "localfile.html",//上传的本地文件路径,需要指定到具体的文件名 CannedAcl = CannedAclEnum.PublicRead,//设置对象ACL为公共读 ContentType = "text/html", }; //上传对象 PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 上例中您可以使用https://bucketname.your-endpoint/test.html在浏览器直接访问托管的文件。 父主题: 静态网站托管
  • 设置多版本对象ACL 您可以通过ObsClient.SetObjectAcl接口传入版本号(VersionId)设置多版本对象ACL,示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 设置多版本对象ACL try { SetObjectAclRequest request = new SetObjectAclRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; request.VersionId = "versionId"; request.AccessControlList = new AccessControlList(); Owner owner = new Owner(); owner.Id = "ownerid"; request.AccessControlList.Owner = owner; Grant item = new Grant(); item.Permission = PermissionEnum.FullControl; item.Grantee = new GroupGrantee(GroupGranteeEnum.AllUsers); request.AccessControlList.Grants.Add(item); SetObjectAclResponse response = client.SetObjectAcl(request); Console.WriteLine("Set object acl response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } ACL中需要填写的所有者(Owner)或者被授权用户(Grantee)的ID,是指用户的账号ID,可通过OBS控制台“我的凭证”页面查看。
  • 获取多版本对象ACL 您可以通过ObsClient.GetObjectAcl接口传入版本号(VersionId)获取多版本对象ACL,示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 获取多版本访问权限 try { GetObjectAclRequest request = new GetObjectAclRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; request.VersionId = "versionId"; GetObjectAclResponse response = client.GetObjectAcl(request); Console.WriteLine("GetObjectAcl grant account: {0}", response.AccessControlList.Grants.Count); Console.WriteLine("GetObjectAcl owner id: {0}", response.AccessControlList.Owner.Id); foreach (Grant grant in response.AccessControlList.Grants) { if(grant.Grantee is CanonicalGrantee) { Console.WriteLine("Grantee id: {0}", (grant.Grantee as CanonicalGrantee).Id); }else if(grant.Grantee is GroupGrantee) { Console.WriteLine("Grantee type: {0}", (grant.Grantee as GroupGrantee).GroupGranteeType); } Console.WriteLine("Grant permission: {0}", grant.Permission); } } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 设置桶策略 您可以通过ObsClient.SetBucketPolicy设置桶策略。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { SetBucketPolicyRequest request = new SetBucketPolicyRequest { BucketName = "bucketname", Policy = "your policy", }; SetBucketPolicyResponse response = client.SetBucketPolicy(request); Console.WriteLine("Set bucket policy response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 桶策略内容的具体格式(JSON格式字符串)请参考《对象存储服务API参考》。
  • 获取桶策略 您可以通过ObsClient.GetBucketPolicy获取桶策略。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { GetBucketPolicyRequest request = new GetBucketPolicyRequest { BucketName = "bucketname", }; GetBucketPolicyResponse response = client.GetBucketPolicy(request); Console.WriteLine("Get bucket policy response: {0}", response.StatusCode); Console.WriteLine("Policy: {0}", response.Policy); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 删除桶策略 您可以通过ObsClient.DeleteBucketPolicy删除桶策略。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { DeleteBucketPolicyRequest request = new DeleteBucketPolicyRequest { BucketName = "bucketname", }; DeleteBucketPolicyResponse response = client.DeleteBucketPolicy(request); Console.WriteLine("Delete bucket policy response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 重写对象属性 以下代码展示了如何在复制对象时重写对象属性: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 重写对象属性 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; request.StorageClass = StorageClassEnum.Warm; request.ContentType = "image/jpeg"; request.MetadataDirective = MetadataDirectiveEnum.Replace; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 重写对象ACL 以下代码展示了如何在复制对象时重写对象ACL: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 重写对象ACL try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; request.CannedAcl = CannedAclEnum.PublicRead; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 简单复制 以下代码展示了如何进行简单复制: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 复制对象 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则抛出异常,复制对象失败。 您可以使用的限定条件如下: 参数 作用 OBS .NET SDK对应属性 Copy-Source-If-Modified-Since 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 CopyObjectRequest.IfModifiedSince Copy-Source-If-Unmodified-Since 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 CopyObjectRequest.IfUnmodifiedSince Copy-Source-If-Match 如果源对象的ETag值与该参数值相同,则进行复制,否则抛出异常。 CopyObjectRequest.IfMatch Copy-Source-If-None-Match 如果源对象的ETag值与该参数值不相同,则进行复制,否则抛出异常。 CopyObjectRequest.IfNoneMatch
  • 获取对象ACL 您可以通过ObsClient.GetObjectAcl获取对象ACL。以下代码展示如何获取对象ACL: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 获取对象ACL try { GetObjectAclRequest request = new GetObjectAclRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; GetObjectAclResponse response = client.GetObjectAcl(request); Console.WriteLine("Get bucket acl response: {0}", response.StatusCode); foreach(Grant grant in response.AccessControlList.Grants) { if(grant.Grantee is CanonicalGrantee) { Console.WriteLine("Grantee id: {0}", (grant.Grantee as CanonicalGrantee).Id); }else if(grant.Grantee is GroupGrantee) { Console.WriteLine("Grantee type: {0}", (grant.Grantee as GroupGrantee).GroupGranteeType); } Console.WriteLine("Grant permission: {0}", grant.Permission); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 为对象设置预定义ACL 以下代码展示如何为对象设置预定义ACL: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 为对象设置预定义ACL try { SetObjectAclRequest request = new SetObjectAclRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectname"; request.CannedAcl = CannedAclEnum.PublicRead; SetObjectAclResponse response = client.SetObjectAcl(request); Console.WriteLine("Set object acl response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 上传对象时指定预定义ACL 以下代码展示如何在上传对象时指定预定义ACL: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 上传对象设置预定义ACL try { PutObjectRequest request = new PutObjectRequest { BucketName = "bucketname", ObjectKey = "objectname", // 设置对象ACL为公共读写 CannedAcl = CannedAclEnum.PublicReadWrite, }; PutObjectResponse response = client.PutObject(request); Console.WriteLine("Set object ac response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全