数据处理及使用
更新时间:2023-02-14
生命周期管理
BOS支持用户对Bucket设置生命周期规则,以自动将过期的文件清除,节省存储空间。针对不同前缀的文件,用户可以同时设置多条规则。 详细信息请参考生命周期管理
设置生命周期规则
可以通过如下两种方式设置生命周期规则:
Java
1// 1、以Json格式的字符串
2String jsonBucketLifecylce = "{\"rule\":[{\"id\":\"yourBucketName/*-DeleteObject\""+",\"status\":\"enabled\""+",\"resource\":[\"yourBucketName/*\"]"+",\"condition\":{\"time\":{\"dateGreaterThan\":\"2018-09-07T00:00:00Z\"}}"+",\"action\":{\"name\":\"DeleteObject\"}}]}";
3
4SetBucketLifecycleRequest request = new SetBucketLifecycleRequest("yourBucketName",jsonBucketLifecylce);
5client.setBucketBucketLifecycle(request);
Java
1// 2、用户只需指定指定参数即可
2List<Rule> rules = new ArrayList<Rule>();
3List<String> resource = new ArrayList<String>();
4Action action = new Action();
5Condition condition = new Condition();
6
7resource.add("yourBucketName/*");
8action.setName("DeleteObject");
9
10Time time = new Time();
11time.setDateGreaterThan("2018-09-07T00:00:00Z");
12condition.setTime(time);
13
14Rule rule = new Rule();
15rule.setId("yourBucketName/*-DeleteObject");
16rule.setStatus("enabled");
17rule.setResource(resource);
18rule.setCondition(condition);
19rule.setAction(action);
20
21List<String> resource1 = new ArrayList<String>();
22Action action1 = new Action();
23Condition condition1 = new Condition();
24
25resource1.add("yourBucketName/*");
26action1.setName("Transition");
27action1.setStorageClass("STANDARD_IA");
28
29Time time1 = new Time();
30time1.setDateGreaterThan("2018-09-08T00:00:00Z");
31condition1.setTime(time1);
32
33Rule rule1 = new Rule();
34rule1.setId("yourBucketName/*-Transition");
35rule1.setStatus("enabled");
36rule1.setResource(resource1);
37rule1.setCondition(condition1);
38rule1.setAction(action1);
39
40rules.add(rule1);
41rules.add(rule);
42
43SetBucketLifecycleRequest request = new SetBucketLifecycleRequest();
44request.withBucketName("yourBucketName");
45request.setRuleList(rules);
46client.setBucketBucketLifecycle(request);
查看生命周期规则
可通过如下代码查看Bucket内的生命周期规则:
Java
1GetBucketLifecycleRequest request = new GetBucketLifecycleRequest("yourBucketName");
2GetBucketLifecycleResponse response = client.getBucketLifecycle(request);
删除生命周期规则
可通过如下代码清空生命周期规则:
Java
1DeleteBucketLifecycleRequest request = new DeleteBucketLifecycleRequest("yourBucketName");
2client.deleteBucketLifecycle(request);
跨域资源共享
跨域资源共享(Cross-Origin Resource Sharing),简称CORS,是HTML5提供的标准跨域解决方案,BOS目前已经支持CORS标准来实现跨域访问。关于跨域访问的介绍请参考跨域访问。
设定CORS规则
可以通过如下两种方式设置跨域规则:
Java
1// 1、以Json格式的字符串
2String jsonBucketCors = "{\"corsConfiguration\": [{\"allowedOrigins\":[\"http://*\""+",\"https://*\"]"+",\"allowedMethods\":[\"GET\""+",\"HEAD\""+",\"POST\""+",\"PUT\"]"+",\"allowedHeaders\":[\"*\"]"+",\"allowedExposeHeaders\":[\"ETag\""+",\"Content-Length\""+",\"x-bce-next-append-offset\""+",\"x-bce-object-type\""+",\"x-bce-request-id\"]"+",\"maxAgeSeconds\":1800}]}";
3
4SetBucketCorsRequest request = new SetBucketCorsRequest();
5request.setJsonBucketCors(jsonBucketCors);
6request.withBucketName("yourBucketName");
7client.setBucketBucketCors(request);
Java
1// 2、用户只需指定指定参数即可
2SetBucketCorsRequest request = new SetBucketCorsRequest();
3request.setBucketName("yourBucketName");
4List<CorsConfiguration> corsConfigurations = new ArrayList<CorsConfiguration>();
5List<String> allowedOrigins = new ArrayList<String>();
6List<AllowedMethods> allowedMethods = new ArrayList<AllowedMethods>();
7List<String> allowedHeaders = new ArrayList<String>();
8List<String> allowedExposeHeaders = new ArrayList<String>();
9
10CorsConfiguration corsConfiguration = new CorsConfiguration();
11CorsConfiguration corsConfiguration1 = new CorsConfiguration();
12// AllowedOrigins
13allowedOrigins.add("http://www.example.com");
14allowedOrigins.add("http://www.example1.com");
15
16allowedMethods.add(AllowedMethods.GET);
17allowedMethods.add(AllowedMethods.POST);
18allowedMethods.add(AllowedMethods.PUT);
19allowedMethods.add(AllowedMethods.DELETE);
20
21// allowedHeaders
22allowedHeaders.add("head1");
23allowedHeaders.add("head2");
24
25// allowedExposeHeaders
26allowedExposeHeaders.add("ETag");
27allowedExposeHeaders.add("Content-Length");
28allowedExposeHeaders.add("x-bce-next-append-offset");
29allowedExposeHeaders.add("x-bce-object-type");
30
31corsConfiguration.setAllowedOrigins(allowedOrigins);
32corsConfiguration.setAllowedMethods(allowedMethods);
33corsConfiguration.setAllowedHeaders(allowedHeaders);
34corsConfiguration.setAllowedExposeHeaders(allowedExposeHeaders);
35corsConfiguration.setMaxAgeSeconds(1800);
36
37List<String> allowedOrigins1 = new ArrayList<String>();
38List<AllowedMethods> allowedMethods1 = new ArrayList<AllowedMethods>();
39List<String> allowedHeaders1 = new ArrayList<String>();
40List<String> allowedExposeHeaders1 = new ArrayList<String>();
41
42corsConfigurations.add(corsConfiguration);
43
44// AllowedOrigins
45allowedOrigins1.add("allowedOrigin1");
46allowedOrigins1.add("allowedOrigin2");
47
48// allowedMethods
49allowedMethods1.add(AllowedMethods.GET);
50allowedMethods1.add(AllowedMethods.POST);
51allowedMethods1.add(AllowedMethods.PUT);
52allowedMethods1.add(AllowedMethods.DELETE);
53
54// allowedHeaders
55allowedHeaders1.add("head3");
56allowedHeaders1.add("head4");
57
58// allowedExposeHeaders
59allowedExposeHeaders1.add("ETag");
60allowedExposeHeaders1.add("Content-Length");
61allowedExposeHeaders1.add("x-bce-next-append-offset");
62allowedExposeHeaders1.add("x-bce-object-type");
63
64
65corsConfiguration1.setAllowedOrigins(allowedOrigins1);
66corsConfiguration1.setAllowedMethods(allowedMethods1);
67corsConfiguration1.setAllowedHeaders(allowedHeaders1);
68corsConfiguration1.setAllowedExposeHeaders(allowedExposeHeaders1);
69corsConfiguration1.setMaxAgeSeconds(3600);
70
71corsConfigurations.add(corsConfiguration1);
72
73request.setCorsConfigurationsList(corsConfigurations);
74client.setBucketBucketCors(request);
注意:
- 通过此接口设置CORS规则之前,Bucket的CORS权限设置为不允许跨域。
- 每个Bucket最多只允许有一个规则文件,因此新上传的规则文件会覆盖原有的。
- CORS规则文件大小限制为20KB,因此请求时大于20KB会返回超出大小错误(400 Bad Request: EntityTooLarge)。
获取CORS规则
可以通过如下方式获取跨域规则:
Java
1GetBucketCorsRequest request = new GetBucketCorsRequest();
2request.setBucketName("yourBucketName");
3GetBucketCorsResponse response = client.getBucketCros(request);
删除CORS规则
可以通过如下方式删除跨域规则:
Java
1DeleteBucketCorsRequest request = new DeleteBucketCorsRequest("yourBucketName");
2client.deleteBucketCors(request);
设置访问日志
BOS SDK支持将用户访问Bucket时的请求记录记录为日志,会包括请求者、Bucket名称、请求时间和请求操作等。关于Bucket日志的详细功能说明可参见设置访问日志
开启Bucket日志
- 请求参数
名称 | 描述 | 类型 | 是否必须 |
---|---|---|---|
targetBucket | 指定存放访问日志的Bucket | 字符串 | 是 |
targetPrefix | 指定最终被保存的访问日志文件前缀 | 字符串 | 否(建议填写,用以区分访问日志) |
- 目前提供两种方式供用户使用 1、以Json格式的字符串 2、用户只需指定指定参数即可
可以通过如下两种方式设置日志规则:
Java
1// 1、以Json格式的字符串
2SetBucketLoggingRequest setBucketLoggingRequest = new SetBucketLoggingRequest();
3setBucketLoggingRequest.setBucketName("yourBucketName");
4String jsonPutBucketLogging = "{\"targetBucket\":\"yourTargetBucketName\""+",\"targetPrefix\":\"mylog1/\"}";
5setBucketLoggingRequest.setJsonPutBucketLogging(jsonPutBucketLogging);
6client.setBucketLogging(setBucketLoggingRequest);
Java
1// 2、用户只需指定指定参数即可
2SetBucketLoggingRequest request = new SetBucketLoggingRequest();
3request.setBucketName("yourBucketName");
4request.setTargetBucket("yourTargetBucketName");
5request.setTargetPrefix("mylog/");
6client.setBucketLogging(request);
查看Bucket日志设置
可以通过如下方式获取日志规则:
Java
1GetBucketLoggingRequest request = new GetBucketLoggingRequest();
2request.withBucketName("yourBucketName");
3GetBucketLoggingResponse response = client.getBucketLogging(request);
关闭Bucket日志
可以通过如下方式关闭日志规则:
Java
1DeleteBucketLoggingRequest request = new DeleteBucketLoggingRequest("yourBucketName");
2client.deleteBucketLogging(request);
音视频处理
当前支持上传mp4格式的文件,系统自动保存为hls格式,用于m3u8风格播放器读取使用,详细规则及约束见音视频处理接口。
设置音视频处理
BOS音视频处理接口定义如下:
-
格式转换参数
参数名称 缩写 类型 取值 命令描述 是否必选 format f string [hls] 将视频转换转化为指定格式 是 time t int [6,600] 切片时间,默认10s 否 -
持久化存储参数
参数名称 缩写 类型 取值 命令描述 是否必选 object o string - 经过base64编码的object名称,受object长度限制,即不超过1024个字符(此处为转码后的m3u8文件名称,如xxx.m3u8) 是
通过SDK使用如下方式设置:
Java
1File file = new File("vedioProcessTest.mp4");
2String bucketName = "yourBucketName";
3String mp4ObjectKey = "vedioProcessTest.mp4";
4String m3u8Path = "video/demo.m3u8";
5String encodeToString = Base64.getEncoder().encodeToString(m3u8Path.getBytes(Charset.defaultCharset()));
6
7PutObjectRequest request = new PutObjectRequest(bucketName, mp4ObjectKey, file);
8request.setVideoProcess("video/format,f_hls|system/save,o_" + encodeToString);
9PutObjectResponse response = client.putObject(request);