Un bucket es un contenedor para los objetos almacenados en Object Storage Service (OSS). Todos los objetos de OSS se guardan dentro de buckets, los cuales se listan en orden alfabético. Puede listar los buckets que pertenecen a la cuenta actual de Alibaba Cloud en todas las regiones y que cumplen con condiciones específicas.
Notas de uso
Antes de ejecutar el código de ejemplo de este tema, debe crear una instancia de OSSClient mediante métodos como el uso de un nombre de dominio personalizado o Security Token Service (STS). Para obtener más información, consulte Initialization (Android SDK).
Listar todos los buckets de una cuenta de Alibaba Cloud
A continuación se muestra un ejemplo de código para listar los buckets de todas las regiones dentro de la cuenta actual de Alibaba Cloud:
// List all buckets in all regions of your account.
ListBucketsRequest request = new ListBucketsRequest();
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("info", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// The request failed.
if (clientException != null) {
// A client exception occurred, such as a network exception.
clientException.printStackTrace();
}
if (serviceException != null) {
// A server exception occurred.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
Listar buckets cuyos nombres contienen un prefijo específico
El siguiente código de ejemplo muestra cómo listar los buckets de todas las regiones de la cuenta actual de Alibaba Cloud cuyos nombres contienen el prefijo example:
El prefijo se utiliza para coincidencias aproximadas. La consulta devuelve todos los buckets cuyos nombres comienzan con el prefijo especificado. Por ejemplo, si establece el prefijo en a, se devuelven buckets como abucket y abcbucket.
// Specify the URL of the STS application server. For example, http://example.com.
String stsServer = "http://example.com";
// Use OSSAuthCredentialsProvider to automatically update the token when it expires.
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// List buckets with the prefix 'example' in all regions of your account.
request.setPrefix("example");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// The request failed.
if (clientException != null) {
// A client exception occurred, such as a network exception.
clientException.printStackTrace();
}
if (serviceException != null) {
// A server exception occurred.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
Listar buckets cuyos nombres van después del bucket indicado por marker en orden alfabético
Este fragmento de código ilustra cómo listar los buckets de todas las regiones de la cuenta actual de Alibaba Cloud cuyos nombres aparecen después del bucket llamado examplebucket en orden alfabético:
Las consultas basadas en prefijos devuelven todos los buckets cuyos nombres comienzan con el prefijo especificado. Por ejemplo, una consulta con el prefijo a devuelve buckets como abucket y abcbucket.
El resultado de la consulta contiene el primer bucket devuelto por la coincidencia aproximada y todos los buckets posteriores.
// Specify the URL of the STS application server. For example, http://example.com.
String stsServer = "http://example.com";
// Use OSSAuthCredentialsProvider to automatically update the token when it expires.
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// List buckets that come after 'examplebucket' in alphabetical order in all regions of your account.
request.setMarker("examplebucket");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// The request failed.
if (clientException != null) {
// A client exception occurred, such as a network exception.
clientException.printStackTrace();
}
if (serviceException != null) {
// A server exception occurred.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
Listar un número específico de buckets
En este ejemplo de código se listan los buckets de todas las regiones de la cuenta actual de Alibaba Cloud y se establece el número máximo de buckets que se pueden listar en 500:
// Specify the URL of the STS application server. For example, http://example.com.
String stsServer = "http://example.com";
// Use OSSAuthCredentialsProvider to automatically update the token when it expires.
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// List buckets in all regions of your account and limit the number of buckets returned to 500. The default value is 100. The maximum value is 1000.
request.setMaxKeys(500);
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// The request failed.
if (clientException != null) {
// A client exception occurred, such as a network exception.
clientException.printStackTrace();
}
if (serviceException != null) {
// A server exception occurred.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
Referencias
Para consultar el código de ejemplo completo, visite el ejemplo de GitHub.
Para conocer la referencia de la API de esta operación, consulte ListBuckets (GetService).