Um bucket é um contêiner para armazenar objetos no Object Storage Service (OSS). Este tópico descreve como verificar a existência de um bucket.
Observações de uso
Este tópico usa o endpoint público da região China (Hangzhou). Para acessar o OSS por meio de outros serviços da Alibaba Cloud na mesma região, utilize um endpoint interno. Para obter detalhes sobre as regiões e os endpoints compatíveis, consulte Regiões e endpoints.
Neste exemplo, as credenciais de acesso são obtidas de variáveis de ambiente. Para mais informações, consulte Configurar credenciais de acesso.
O exemplo demonstra como criar uma instância OSSClient com um endpoint do OSS. Para outras configurações, como usar um domínio personalizado ou autenticar-se com credenciais do Security Token Service (STS), consulte Configuração do cliente.
Para verificar se um bucket existe, você precisa da permissão
oss:GetBucketAcl. Para mais informações, consulte Conceder uma política personalizada.
Código de exemplo
O código a seguir mostra como verificar se um bucket chamado examplebucket existe:
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class Demo {
public static void main(String[] args) throws Exception {
// In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
String region = "cn-hangzhou";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSS Client instance.
// Call the shutdown method to release associated resources when the OSS Client is no longer in use.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Check whether the bucket named examplebucket exists. If true is returned, the bucket exists. If false is returned, the bucket does not exist.
boolean exists = ossClient.doesBucketExist("examplebucket");
System.out.println(exists);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
Referências
Para obter o código de exemplo completo sobre como verificar a existência de um bucket, acesse o GitHub.