日志转存(Java SDK V2)
更新时间:
复制 MD 格式
开启日志转存后,OSS 会按固定命名规则,以小时为单位将向量Bucket的访问日志生成日志文件并写入您指定的目标Bucket。本文介绍如何使用 OSS Java SDK V2 开启、查看和关闭向量Bucket的日志转存。
说明
说明:向量Bucket的日志转存需通过向量客户端(OSSVectorsClient)操作,并配置账号 ID(accountId)。Java SDK V2 暂未提供向量日志转存的强类型接口,以下示例通过通用的 invokeOperation 调用。
权限说明
阿里云账号默认拥有全部权限。RAM 用户或 RAM 角色需通过 RAM Policy 或 Bucket Policy 授予以下操作权限。
API | Action | 说明 |
PutBucketLogging | oss:PutBucketLogging | 开启向量Bucket的日志转存。 |
GetBucketLogging | oss:GetBucketLogging | 查看向量Bucket的日志转存配置。 |
DeleteBucketLogging | oss:DeleteBucketLogging | 关闭向量Bucket的日志转存。 |
开启日志转存
为向量Bucket开启日志转存,将访问日志转存到目标Bucket(TargetBucket)的指定前缀(TargetPrefix)下。请求体为 JSON 格式。TargetBucket 需为同一账号下、有权限写入的日志转存目标Bucket。
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;
public class PutBucketLoggingSample {
public static void main(String[] args) throws Exception {
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
.region("cn-hangzhou")
.accountId("1234567890")
.credentialsProvider(provider)
.build()) {
String loggingConfig = "{\n"
+ " \"BucketLoggingStatus\": {\n"
+ " \"LoggingEnabled\": {\n"
+ " \"TargetBucket\": \"targetbucket\",\n"
+ " \"TargetPrefix\": \"log/\"\n"
+ " }\n"
+ " }\n"
+ "}";
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
Map<String, String> parameters = new HashMap<>();
parameters.put("logging", "");
OperationInput input = OperationInput.newBuilder()
.opName("PutBucketLogging")
.method("PUT")
.bucket("examplebucket")
.parameters(parameters)
.headers(headers)
.body(BinaryData.fromString(loggingConfig))
.build();
OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
System.out.println("status code: " + output.statusCode()
+ ", request id: " + output.headers().get("x-oss-request-id"));
}
}
}查看日志转存配置
查看向量Bucket当前的日志转存配置。
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;
public class GetBucketLoggingSample {
public static void main(String[] args) throws Exception {
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
.region("cn-hangzhou")
.accountId("1234567890")
.credentialsProvider(provider)
.build()) {
Map<String, String> parameters = new HashMap<>();
parameters.put("logging", "");
OperationInput input = OperationInput.newBuilder()
.opName("GetBucketLogging")
.method("GET")
.bucket("examplebucket")
.parameters(parameters)
.build();
OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
System.out.println("status code: " + output.statusCode()
+ ", request id: " + output.headers().get("x-oss-request-id"));
}
}
}关闭日志转存
关闭向量Bucket的日志转存。
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;
public class DeleteBucketLoggingSample {
public static void main(String[] args) throws Exception {
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
.region("cn-hangzhou")
.accountId("1234567890")
.credentialsProvider(provider)
.build()) {
Map<String, String> parameters = new HashMap<>();
parameters.put("logging", "");
OperationInput input = OperationInput.newBuilder()
.opName("DeleteBucketLogging")
.method("DELETE")
.bucket("examplebucket")
.parameters(parameters)
.build();
OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
System.out.println("status code: " + output.statusCode()
+ ", request id: " + output.headers().get("x-oss-request-id"));
}
}
}相关文档
日志转存的字段说明与日志文件命名规则,请参见 OSS 日志转存文档。
该文章对您有帮助吗?