Bucket policy (Java SDK V2)

更新时间:
复制 MD 格式

You can use a bucket policy to grant other users access to your vector buckets. This topic describes how to set, view, and delete a bucket policy for a vector bucket by using the OSS Java SDK V2.

Note

Note: You must manage Bucket Policies for vector Buckets by using OSSVectorsClient and configure an account ID (accountId). Java SDK V2 does not currently provide a strongly-typed interface for vector Bucket Policies. The following example uses the generic invokeOperation method. In the authorization policy, the Resource field uses the vector-specific format acs:ossvector:{region}:{accountId}:*/*, and the Action field uses vector-specific actions, such as oss:PutVectors and oss:GetVectors.

Permissions

By default, an Alibaba Cloud account has full permissions to all resources. For a RAM user or RAM role, you must use a RAM policy or a bucket policy to grant permissions for the following operations.

API

Action

Description

PutBucketPolicy

oss:PutBucketPolicy

Sets the bucket policy for a vector bucket.

GetBucketPolicy

oss:GetBucketPolicy

Views the bucket policy for a vector bucket.

DeleteBucketPolicy

oss:DeleteBucketPolicy

Deletes the bucket policy for a vector bucket.

Set bucket policy

Set an authorization policy for the vector bucket. The following example denies a specified account from performing the PutVectors or GetVectors actions on the 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 PutBucketPolicySample {
    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 policy = "{\n"
                    + "  \"Version\": \"1\",\n"
                    + "  \"Statement\": [\n"
                    + "    {\n"
                    + "      \"Action\": [\"oss:PutVectors\", \"oss:GetVectors\"],\n"
                    + "      \"Effect\": \"Deny\",\n"
                    + "      \"Principal\": [\"1234567890\"],\n"
                    + "      \"Resource\": [\"acs:ossvector:cn-hangzhou:1234567890:*/*\"]\n"
                    + "    }\n"
                    + "  ]\n"
                    + "}";
            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");
            Map<String, String> parameters = new HashMap<>();
            parameters.put("policy", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("PutBucketPolicy")
                    .method("PUT")
                    .bucket("examplebucket")
                    .parameters(parameters)
                    .headers(headers)
                    .body(BinaryData.fromString(policy))
                    .build();
            OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
            System.out.println("status code: " + output.statusCode()
                    + ", request id: " + output.headers().get("x-oss-request-id"));
        }
    }
}

View bucket policy

The following example shows how to view the bucket policy for a vector bucket. The policy is returned in the response body.

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 GetBucketPolicySample {
    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("policy", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("GetBucketPolicy")
                    .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"));
        }
    }
}

Delete bucket policy

The following example shows how to delete the bucket policy 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 DeleteBucketPolicySample {
    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("policy", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("DeleteBucketPolicy")
                    .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"));
        }
    }
}

Related documents

  • For more information about the policy syntax and valid values for Action and Resource in a vector bucket policy, see the access control documentation for OSS Vectors.