web-dev-qa-db-fra.com

Quelle est la différence entre boto3 list_objects et list_objects_v2?

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?

20
tamjd1

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.

24
mootmoot