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)

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 "12345" \
    --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 : Demande l’objet seulement si son ETag correspond à l’ETag que vous avez spécifié pour cet attribut. Si l’ETag ne correspond pas, la commande renvoie un message error 412 indiquant precondition failed.

  • (optionnel) if-modified-since : Demande l’objet seulement s’il a été modifié après la date (au format ISO 8601) spécifiée pour cet attribut. S’il n’a pas été modifié après la date spécifiée, la commande renvoie un message error 304 indiquant not modified.

  • (optionnel) if-none-match : Demande l’objet uniquement si son ETag ne correspond pas à celui spécifié pour cet attribut. Si l’ETag ne correspond pas, la commande renvoie un message error 304 indiquant not modified.

  • (optionnel) if-unmodified-since : Demander l’objet uniquement s’il n’a pas été modifié depuis la date (au format ISO 8601) spécifiée pour cet attribut. S’il a été modifié depuis la date spécifiée, la commande renvoie un message error 412 indiquant precondition failed.

  • 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.

  • (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.

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 "12345" \
    --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 : Demande l’objet seulement si son ETag correspond à l’ETag que vous avez spécifié pour cet attribut. Si l’ETag ne correspond pas, la commande renvoie un message error 412 indiquant precondition failed.

  • (optionnel) if-modified-since : Demande l’objet seulement s’il a été modifié après la date (au format ISO 8601) spécifiée pour cet attribut. S’il n’a pas été modifié après la date spécifiée, la commande renvoie un message error 304 indiquant not modified.

  • (optionnel) if-none-match : Demande l’objet uniquement si son ETag ne correspond pas à celui spécifié pour cet attribut. Si l’ETag ne correspond pas, la commande renvoie un message error 304 indiquant not modified.

  • (optionnel) if-unmodified-since : Demander l’objet uniquement s’il n’a pas été modifié depuis la date (au format ISO 8601) spécifiée pour cet attribut. S’il a été modifié depuis la date spécifiée, la commande renvoie un message error 412 indiquant precondition failed.

  • 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.

  • (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.

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.