2017-10-06 2 views
0

Je sais qu'il existe une méthode doesObjectExist pour vérifier si un objet existe dans un compartiment spécifié, mais comment puis-je vérifier si un objet comporte un objet spécifique? la version existe-t-elle dans un compartiment S3?AWS Java SDK: vérifier si un objet existe avec une version spécifique dans un compartiment S3

Je veux appeler doesObjectExist(bucketName, objectName, s3Version).

Y a-t-il un moyen de le faire, ou dois-je d'abord appeler listVersions et vérifier si la version existe en utilisant le VersionListing? Cette approche semble beaucoup plus verbeuse.

Répondre

1

Il n'y a pas de vérification en une étape dans l'API en cours. Vous pouvez essayer d'utiliser quelque chose comme

s3Client.getObjectMetadata(
    new GetObjectMetadataRequest(bucketName, key, versionId) 
) 

Mais je ne vois aucun moyen fiable de savoir quand cet objet n'existe pas (parce qu'il n'y a pas «n'existe pas objet » une exception spéciale pour ce cas) . Donc, après l'échec, vous devriez vérifier que cet objet existe avec doesObjectExist. Ou d'une autre manière: vérifier qu'elle existe, puis interroger les métadonnées avec la version, si elle existe mais que la demande de métadonnées échoue, cette version de l'objet n'existe pas.