Rapide moyen de la liste de tous les fichiers dans le compartiment Amazon S3 à l'aide de php?
J'ai un compartiment amazon s3 qui a des dizaines de milliers de noms de fichiers. Quelle est la meilleure façon d'obtenir une liste de tous les fichiers ou un fichier texte qui répertorie tous les noms de fichiers dans le seau?
J'ai essayé avec listObject()
, mais Il semble qu'il n'liste de 1000 fichiers.
amazon-s3-retour-uniquement-de 1000 entrées-pour-un-seau-et-tous-pour-l'autre-seau-u
S3-Fournisseur-ne-pas-obtenir-plus-de-1000-articles-de-seau
--> Liste des Clés à l'Aide du kit SDK AWS pour PHP
mais dans aws docs que j'ai lu
max-clés - chaîne - en Option - Le nombre maximum de résultats retournés
par l'appel de méthode. La liste retournée ne contiennent pas plus de résultats
que la valeur spécifiée, mais peut revenir moins. La valeur par défaut est
1000.
Est-il possible de dresser une liste et de les imprimer dans un fichier texte à l'aide d'AWS SDK PHP ?
Possible de répéter : rapide-moyen-de-liste-toutes les-fichiers-en-amazon-s3-seau
J'ai reposté la question parce que je suis à la recherche de la solution en php.
Code :
$s3Client = S3Client::factory(array('key' => $access, 'secret' => $secret));
$response = $s3Client->listObjects(array('Bucket' => $bucket, 'MaxKeys' => 1000, 'Prefix' => 'files/'));
$files = $response->getPath('Contents');
$request_id = array();
foreach ($files as $file) {
$filename = $file['Key'];
print "\n\nFilename:". $filename;
}
$s3Client = S3Client::factory(array('credentials' => array('key' => $access, 'secret' => $secret)));
Merci pour l'information
OriginalL'auteur Hitesh | 2014-03-04
Vous devez vous connecter pour publier un commentaire.
Pour obtenir plus de 1000 objets, vous devez faire plusieurs demandes à l'aide de la
Marker
paramètre S3 dire où vous l'avez laissé pour chaque demande. À l'aide de la Les itérateurs fonction du SDK AWS pour PHP en fait plus facile d'obtenir tous les objets, parce qu'il encapsule la logique de faire plusieurs requêtes à l'API. Essayez ceci:Avec la dernière version du SDK PHP (Mars 2016), le code doit être écrit comme ceci à la place:
qui un u de recommander votre réponse ou la mienne ? et pourquoi ?
Je dirais que le mien serait préférable pour les raisons suivantes: 1.) Il nécessite moins de demandes. Étant donné que
n
est le nombre total d'objets S3 dans votre seau avec de l'files/
préfixe, ma solution nécessite ceil(n/1000) des demandes. Toujours vôtre exige exactement 52 demandes, si oui ou non elles sont toutes nécessaires. 2.) Le mien ne nécessite qu'une boucle au lieu de 2 boucles avec des boucles imbriquées. 3.) Si vous avez eu plus de 1000 fichiers qui a commencé par une lettre particulière, votre solution de capture seulement les 1000 premiers par lettre. La mienne sera toujours bénéficier de tous vos objets.Je pense que pour obtenir l'adresse URL complète, tu peux faire ça: sprintf('http://%s.s3.amazonaws.com/%s', $bucket_name, $objet['Clé'])
OriginalL'auteur Jeremy Lindblom
Code ci-dessous est juste un truc de contourner le problème, j'ai fait à ma
CDN bucket
dossier qui ont beaucoup de dossiers par ordre alphabétique (a-z & A-Z), donc je viens de faire plusieurs demandes pour en faire la liste de tous les fichiers,This code is to list mp4, pdf, png, jpg or all files
C'est juste une solution de contournement pour ce problème,Puisqu'il n'est pas
AWS API
à la liste de tous les fichiers (plus de 1000). espérons que cela aide quelqu'un.AWS ID de la Demande: E07DWDWED, AWS Type d'erreur: Erreur client, AWS Message d'Erreur: Le seau que vous tentez d'accès doit être adressée à l'aide de l'extrémité spécifiée. Veuillez envoyer toutes les futures demandes à cet effet: "images.cser.in.s3.amazonaws.com"., User-Agent: aws-sdk-php2/2.7.27 Bouffer/3.9.3 curl/7.40.0 PHP/5.5.31 ITR
jeté dans /var/www/html/app/s3/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php sur la ligne 91
peut-on aider dans la compréhension de cette erreur...
merci de poser la question en tant décrivant le scénario. Si vous avez déjà posé la question, de partager le lien
OriginalL'auteur Hitesh