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: 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
ActionandResourcein a vector bucket policy, see the access control documentation for OSS Vectors.