日誌轉存(Java SDK V2)

更新時間:
Copy as 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 日誌轉存文檔。