S3Client.ListObjects devuelve solo 1000 de objetos. ¿Cómo recuperar la lista de todos los objetos existentes utilizando la biblioteca de Amazon C#?Cómo enumerar _todos_ objetos en el cubo de Amazon S3?
Respuesta
como se ha dicho ya, de hecho, requiere Amazon S3Listing Keys Using the AWS SDK for .NET:
Como cubos pueden contener un número virtualmente ilimitado de llaves, los resultados completos de una consulta de la lista pueden ser extremadamente grandes. Para administrar grandes conjuntos de resultados, Amazon S3 utiliza la paginación para dividirlos en respuestas múltiples. Cada respuesta de las teclas de lista devuelve una página de hasta 1,000 teclas con un indicador que indica si la respuesta está truncada. Envía una serie de solicitudes de claves de lista hasta que haya recibido todas las claves .
El indicador mencionado es la propiedad NextMarker de la ObjectsResponse Class - su uso se ilustra en el ejemplo completo Listing Keys Using the AWS SDK for .NET, con el ser fragmento relevante:
static AmazonS3 client;
client = Amazon.AWSClientFactory.CreateAmazonS3Client(
accessKeyID, secretAccessKeyID);
ListObjectsRequest request = new ListObjectsRequest();
request.BucketName = bucketName;
do
{
ListObjectsResponse response = client.ListObjects(request);
// Process response.
// ...
// If response is truncated, set the marker to get the next
// set of keys.
if (response.IsTruncated)
{
request.Marker = response.NextMarker;
}
else
{
request = null;
}
} while (request != null);
Según la documentación el cliente utiliza la paginación en el caso que describes Según la documentación, debe usar IsTruncated en el resultado ... si es true
llame de nuevo al ListObjects
con la configuración correcta Marker
para obtener la siguiente página, etc. - deje de llamar cuando IsTruncated
devuelva false
.
Tenga en cuenta que la respuesta anterior no está utilizando la API recomendada a la lista Objetos: http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html
El siguiente ejemplo muestra como se ve con la nueva API:
using (var s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1))
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;
do
{
response = await s3Client.ListObjectsV2Async(request);
// Process response.
// ...
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated == true);
}
- 1. ¿Cómo escribir una cadena en el cubo de Amazon S3?
- 2. Configurando el propietario de los objetos en un cubo S3
- 3. ¿Cómo elimino/cuento objetos en un cubo s3?
- 4. Límite S3 para objetos en un cubo
- 5. Amazon S3 - ¿Cómo construir correctamente las URL que apuntan a los objetos en un cubo?
- 6. Amazon S3 evita sobrescribir objetos con el mismo nombre
- 7. ¿Cómo crear una carpeta en el cubo de Amazon S3 a través de PHP API?
- 8. ¿Cómo puedo mapear varios dominios en el mismo cubo en Amazon S3?
- 9. Cómo definir permisos en Amazon S3
- 10. SignatureDoesNotMatch - Amazon S3 API
- 11. ¿Puedo establecer el encabezado caduca en todos los objetos en un cubo de Amazon S3 todo a la vez?
- 12. Compruebe si existe una clave con un cierto prefijo en el cubo de Amazon S3
- 13. Ruby Amazon S3 Acceso Denegado al enumerar los segmentos
- 14. Publicación de datos del formulario en el cubo de Amazon S3
- 15. Paperclip y Amazon S3 ¿cómo hacer rutas?
- 16. Concurrencia en Amazon S3
- 17. ¿Cómo crear un enlace de descarga para un objeto de cubo de Amazon S3?
- 18. ¿Cómo puedo hacer una copia de seguridad o sincronizar un cubo de Amazon S3?
- 19. Eliminando las versiones de cada archivo en un cubo de Amazon S3 anterior a X días
- 20. eliminación de objetos automáticamente más de n días en Amazon S3 (¿cómo?)
- 21. zcat en amazon s3
- 22. Permisos de Amazon S3
- 23. ¿En qué región geográfica está almacenado mi cubo S3?
- 24. Arquitectura de Amazon S3
- 25. Python: Amazon S3 no puede conseguir el cubo: dice 403 Prohibido
- 26. Amazon S3 - x-amz-meta
- 27. Enumerar claves en Amazon SimpleDB
- 28. Notificación de nuevos objetos S3
- 29. Amazon S3 y Checksum
- 30. Amazon AWS IOS SDK: cómo enumerar TODOS los nombres de archivo en una CARPETA
más de 2 años más tarde y sigue siendo el la solución perfecta para mí! Gracias :) – hardba11
Respuesta perfecta ... –
Su segundo enlace está roto ahora (iterando a través de resultados de varias páginas), y se puede encontrar aquí en su lugar: http://docs.aws.amazon.com/AmazonS3/latest/dev/ ListingObjectKeysUsingNetSDK.html – adamdport