When logging is enabled, OSS generates hourly access logs for a vector bucket, creates log files based on a fixed naming convention, and writes them to a specified target bucket. You can use the OSS Java SDK V2 to enable, view, and disable logging for a vector bucket.
To manage logging for a vector bucket, you must use the vector client (OSSVectorsClient) and configure the account ID (accountId). The Java SDK V2 does not provide a strongly-typed interface for vector logging, so the following examples use the generic invokeOperation call.
Permissions
An Alibaba Cloud account has full permissions by default. To allow RAM users or RAM roles to perform the following operations, grant permissions by using a RAM policy or a bucket policy.
|
API |
Action |
Description |
|
PutBucketLogging |
oss:PutBucketLogging |
Enables logging for a vector bucket and stores access logs in a specified target bucket. |
|
GetBucketLogging |
oss:GetBucketLogging |
Queries the logging configuration of a vector bucket. |
|
DeleteBucketLogging |
oss:DeleteBucketLogging |
Disables logging for a vector bucket. |
Enable logging
Enable logging for a vector bucket to store access logs in the target bucket (TargetBucket) under the specified prefix (TargetPrefix). The request body is in JSON format. TargetBucket must be in the same account and you must have write permissions on it.
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"));
}
}
}
Get logging configuration
Retrieve the current logging configuration of a vector 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"));
}
}
}
Disable logging
Disable logging for a vector 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"));
}
}
}
References
-
For more information about log fields and log file naming conventions, see the OSS logging documentation.