S3Client.ListObjects restituisce solo 1000 oggetti. Come recuperare l'elenco di tutti gli oggetti esistenti utilizzando la libreria Amazon C#?Come elencare tutti gli oggetti nel bucket di Amazon S3?
risposta
Come dichiarato già, Amazon S3 richiede infatti Listing Keys Using the AWS SDK for .NET:
Come secchi possono contenere un numero virtualmente illimitato di chiavi, i risultati completi di una query lista può essere molto grande. Per gestire i set di risultati grandi , Amazon S3 utilizza l'impaginazione per dividerli in risposte multiple. Ogni risposta di tasti di elenco restituisce una pagina fino a 1.000 chiavi con un indicatore che indica se la risposta viene troncata. Si inviano una serie di richieste delle chiavi di elenco finché non si ricevono tutte le chiavi .
L'indicatore menzionato è la proprietà NextMarker dal ObjectsResponse Class - il suo utilizzo è illustrato nell'esempio completo Listing Keys Using the AWS SDK for .NET, con il relativo benessere frammento:
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);
Secondo la documentazione il client utilizza la paginazione in caso che descrivi. Come da documentazione, è necessario utilizzare IsTruncated sul risultato ... se è chiamare ListObjects
di nuovo con l'installazione corretta Marker
per ottenere la pagina successiva ecc. - interrompere la chiamata quando IsTruncated
restituisce false
.
Essere consapevoli del fatto che la risposta di cui sopra non utilizza l'API consigliata to List oggetti: http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html
Il seguente frammento di codice mostra come appare con la nuova 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. Elenca gli oggetti in una cartella specifica su Amazon S3
- 2. Come rendere pubblici tutti gli oggetti nel bucket AWS S3 per impostazione predefinita?
- 3. Pubblica un bucket in Amazon S3
- 4. Replica oggetti Amazon S3
- 5. Riga di comando di Amazon S3 Copia tutti gli oggetti su se stessi Impostazione controllo cache
- 6. Elimina oggetto o bucket in Amazon S3?
- 7. Amazon S3 hardcode my bucket URL
- 8. Reindirizzamento di oggetti Amazon S3
- 9. Impostazione proprietario di oggetti in un bucket S3
- 10. S3: bucket duplicati
- 11. Come eliminare molti oggetti con prefisso comune dal bucket s3?
- 12. Come impostare la politica del bucket di Amazon S3 come privata per tutti tranne l'amministratore?
- 13. I criteri bucket Amazon S3 non supportano l'opzione "versione"
- 14. Limite S3 agli oggetti in un bucket
- 15. Come definire i permessi di Amazon S3
- 16. Come mappare più domini allo stesso bucket su Amazon S3?
- 17. Come posso elencare tutti gli oggetti relativi a chiave esterna nel pannello di amministrazione di Django?
- 18. Amazon S3 copyObject permesso
- 19. Javascript per scaricare un file dal bucket amazon s3?
- 20. Amazon S3 evitare di sovrascrivere gli oggetti con lo stesso nome
- 21. amazon s3 e carrierwave nome immagine casuale nel bucket non corrisponde nel database
- 22. Elenco oggetti AWS S3
- 23. Ruby Amazon S3 Accesso negato quando si elencano i bucket
- 24. Come si fa a cercare nel testo completo un bucket amazon s3?
- 25. Lasciamo scaricare solo gli utenti registrati dal mio bucket Amazon S3
- 26. Costo della ridenominazione di una cartella nel bucket AWS S3
- 27. Carica file esterno nel bucket AWS S3 utilizzando PHP SDK
- 28. amazon s3, carica il file nella cartella nel secchio
- 29. Come ottenere la pagina precedente degli oggetti elenco in Amazon S3
- 30. Come limitare l'accesso all'API di Amazon S3?
Oltre 2 anni più tardi e ancora il soluzione perfetta per me! Grazie :) – hardba11
Risposta perfetta ... –
Il tuo secondo link è rotto ora (Iterating Through Multi-Page Results), e può essere trovato qui invece: http://docs.aws.amazon.com/AmazonS3/latest/dev/ ListingObjectKeysUsingNetSDK.html – adamdport