J'essaie de répertorier les objets dans un compartiment Amazon s3 dans python en utilisant boto3
.
Il semble que boto3
Ait 2 fonctions pour lister les objets dans un compartiment: list_objects()
et list_objects_v2()
.
Quelle est la différence entre les 2 et quel est l'avantage d'utiliser l'un sur l'autre?
Comparaison côte à côte.
list_objects ():
response = client.list_objects(
Bucket='string',
Delimiter='string',
EncodingType='url',
#Marker to list continuous page
Marker='string',
MaxKeys=123,
Prefix='string'
)
list_objects_v2 ()
response = client.list_objects_v2(
Bucket='string',
Delimiter='string',
EncodingType='url',
MaxKeys=123,
Prefix='string',
# Replace marker to list continuous page
ContinuationToken='string',
# set to True to fetch key owner info. Default is False.
FetchOwner=True|False,
# This is similar to the Marker in list_object()
StartAfter='string'
)
Fonctionnalités ajoutées. En raison des limites de liste de 1000 clés par page, l'utilisation d'un marqueur pour répertorier plusieurs pages peut être un casse-tête. Logiquement, vous devez garder une trace de la dernière clé que vous avez traitée avec succès. Avec ContinuationToken
, vous n'avez pas besoin de connaître la dernière clé, vous vérifiez simplement l'existence de NextContinuationToken
dans la réponse. Vous pouvez générer un processus parallèle pour gérer une multiplicité de 1000 clés sans traiter la dernière clé à récupérer sur la page suivante.