对象存储服务 OBS-设置生命周期规则(Java SDK):代码示例:设置对象转换策略
时间:2025-04-03 17:30:25
代码示例:设置对象转换策略
以下代码展示了如何设置examplebucket桶最新版本对象和历史版本对象的转换策略。
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.LifecycleConfiguration; import com.obs.services.model.StorageClassEnum; public class SetBucketLifecycle001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("AC CES S_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 设置对象转换策略 LifecycleConfiguration config = new LifecycleConfiguration(); LifecycleConfiguration.Rule rule = config.new Rule(); rule.setEnabled(true); rule.setId("rule1"); rule.setPrefix("prefix"); LifecycleConfiguration.Transition transition = config.new Transition(); // 指定满足前缀的对象创建30天后转换 transition.setDays(30); // 指定对象转换后的存储类型 transition.setObjectStorageClass(StorageClassEnum.WARM); // 直接指定满足前缀的对象转换日期 // transition.setDate(new SimpleDateFormat("yyyy-MM-dd").parse("2018-10-31")); rule.getTransitions().add(transition); LifecycleConfiguration.NoncurrentVersionTransition noncurrentVersionTransition = config.new NoncurrentVersionTransition(); // 指定满足前缀的对象成为历史版本30天后转换 noncurrentVersionTransition.setDays(30); // 指定历史版本对象转换后的存储类型 noncurrentVersionTransition.setObjectStorageClass(StorageClassEnum.COLD); rule.getNoncurrentVersionTransitions().add(noncurrentVersionTransition); // 设置碎片过期时间 LifecycleConfiguration.AbortIncompleteMultipartUpload abortIncompleteMultipartUpload = config.new AbortIncompleteMultipartUpload(); abortIncompleteMultipartUpload.setDaysAfterInitiation(7); rule.setAbortIncompleteMultipartUpload(abortIncompleteMultipartUpload); config.addRule(rule); obsClient.setBucketLifecycle("examplebucket", config); System.out.println("setBucketLifecycle successfully"); } catch (ObsException e) { System.out.println("setBucketLifecycle failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("setBucketLifecycle failed"); // 其他异常信息打印 e.printStackTrace(); } } } |
support.huaweicloud.com/sdk-java-devg-obs/obs_21_1102.html