Utiliser les conditions Wait pour un objet

Vous pouvez utiliser les commandes wait pour mettre en pause l’exécution de votre script jusqu’à ce qu’une condition spécifique soit remplie pour votre bucket. Ceci est particulièrement utile pour les flux de travail automatisés, où vous devez vous assurer qu’un certain état est atteint avant de procéder à l’exécution suivante.

Si vous avez besoin de récupérer les métadatas d’un objet spécifique, voir Obtenir des informations sur les metadata d’un objet.

Utiliser les conditions Wait pour un objet avec AWS CLI (s3api)

Avant de commencer : Installez et configurez AWS CLI. Pour en savoir plus, voir Installer et configurer AWS CLI.

Attendre qu’un objet existe

Pour s’assurer qu’un objet existe et qu’il est accessible avant d’effectuer d’autres actions, utilisez la commande wait object-exists en suivant cette syntaxe :

Exemple de requête
$ aws s3api wait object-exists \
    --profile YOUR_PROFILE \
    --bucket BUCKET \
    --if-match "\"12345a6b76656da1b64f287c8627af7\"" \
    --if-modified-since "2024-01-10" \
    --if-none-match "\"12345a6b76656da1b64f287c8627af7\"" \
    --if-unmodified-since "2024-01-10" \
    --key OBJECT \
    --version-id qAfAAsAAuA00kclkg0A0AAuAAjaAtA. \
    --part-number "1" \
    --endpoint https://oos.eu-west-2.outscale.com

Cette commande contient les attributs suivants que vous devez spécifier :

  • (optionnel) profile : Le profil nommé que vous voulez utiliser, créé pendant la configuration d’AWS CLI. Pour en savoir plus, voir Installer et configurer AWS CLI.

  • bucket : Le nom du bucket contenant l’objet dont vous voulez vérifier l’existence.

  • (optionnel) if-match : Ne demande l’objet que si son ETag correspond à celui que vous avez indiqué pour cet attribut.

  • (optionnel) if-modified-since : Ne demande l’objet que s’il a été modifié après la date (au format ISO 8601) indiquée pour cet attribut.

  • (optionnel) if-none-match : Ne demande l’objet que si son ETag ne correspond pas à celui que vous avez indiqué pour cet attribut.

  • (optionnel) if-unmodified-since : Ne demande l’objet que s’il n’a pas été modifié depuis la date (au format ISO 8601) indiquée pour cet attribut.

    Si les différentes conditions ne sont pas remplies, la commande renverra diverses erreurs : error 412 : precondition failed pour if-match et if-unmodified-since, et error 304 : not modified pour if-modified-since et if-none-match.

  • key : Le nom de l’objet dont vous voulez vérifier l’existence.

  • (optionnel) version-id : L’ID de la version de l’objet dont vous voulez vérifier l’existence. Pour en savoir plus, voir Utiliser le bucket versioning.

    Si l’attribut version-id commence par un tiret ("-"), vous devez le spécifier en suivant cette syntaxe :

    --version-id=-qAfAAsAAuA00kclkg0A0AAuAAjaAtA.
  • (optionnel) part-number : Le numéro de la partie de l’objet en cours de lecture (entre 1 et 10000, les deux inclus). Pour en savoir plus, voir Utiliser un dépôt partitionné.

  • endpoint : Le endpoint correspondant à la Région à laquelle vous voulez envoyer la requête. Pour en savoir plus, voir Installer et configurer AWS CLI.

La commande interroge le bucket toutes les 5 secondes jusqu’à ce qu’un état de réussite soit atteint, après quoi la commande ne doit renvoyer aucun résultat.

Néanmoins, après 20 échecs successifs (100 secondes au total), la commande renvoie le message d’erreur suivant :

Exemple de résultat
Waiter ObjectExists failed: Max attempts exceeded. Previously accepted state: Matched expected HTTP status code: 404

Attendre qu’un objet n’existe plus

Pour s’assurer qu’un objet n’existe plus et n’est plus accessible avant d’effectuer d’autres actions, utilisez la commande wait object-not-exists en suivant cette syntaxe :

Exemple de requête
$ aws s3api wait object-not-exists \
    --profile YOUR_PROFILE \
    --bucket BUCKET \
    --if-match "\"12345a6b76656da1b64f287c8627af7\"" \
    --if-modified-since "2024-01-10" \
    --if-none-match "\"12345a6b76656da1b64f287c8627af7\"" \
    --if-unmodified-since "2024-01-10" \
    --key OBJECT \
    --version-id qAfAAsAAuA00kclkg0A0AAuAAjaAtA. \
    --part-number "1" \
    --endpoint https://oos.eu-west-2.outscale.com
  • (optionnel) profile : Le profil nommé que vous voulez utiliser, créé pendant la configuration d’AWS CLI. Pour en savoir plus, voir Installer et configurer AWS CLI.

  • bucket : Le nom du bucket contenant l’objet dont vous voulez attendre qu’il n’existe plus.

  • (optionnel) if-match : Ne demande l’objet que si son ETag correspond à celui que vous avez indiqué pour cet attribut.

  • (optionnel) if-modified-since : Ne demande l’objet que s’il a été modifié après la date (au format ISO 8601) indiquée pour cet attribut.

  • (optionnel) if-none-match : Ne demande l’objet que si son ETag ne correspond pas à celui que vous avez indiqué pour cet attribut.

  • (optionnel) if-unmodified-since : Ne demande l’objet que s’il n’a pas été modifié depuis la date (au format ISO 8601) indiquée pour cet attribut.

  • key : Le nom de l’objet dont vous voulez attendre qu’il n’existe plus.

  • (optionnel) version-id : L’ID de la version de l’objet dont vous voulez vérifier l’existence. Pour en savoir plus, voir Utiliser le bucket versioning.

    Si l’attribut version-id commence par un tiret ("-"), vous devez le spécifier en suivant cette syntaxe :

    --version-id=-qAfAAsAAuA00kclkg0A0AAuAAjaAtA.
  • (optionnel) part-number : Le numéro de la partie de l’objet en cours de lecture (entre 1 et 10000, les deux inclus). Pour en savoir plus, voir Utiliser un dépôt partitionné.

  • endpoint : Le endpoint correspondant à la Région à laquelle vous voulez envoyer la requête. Pour en savoir plus, voir Installer et configurer AWS CLI.

La commande interroge le bucket toutes les 5 secondes jusqu’à ce qu’un état de réussite soit atteint, après quoi la commande ne doit renvoyer aucun résultat.

Néanmoins, après 20 échecs successifs (100 secondes au total), la commande renvoie le message d’erreur suivant :

Exemple de résultat
Waiter ObjectNotExists failed: Max attempts exceeded.

Pages connexes

AWS™ et Amazon Web Services™ sont des marques de commerce d'Amazon Technologies, Inc. ou de ses affiliées aux États-Unis et/ou dans les autres pays.