Si encuentras algo que no comprendes puedes dejarlo en la sección de comentarios y trataremos de ayudarte rápidamente.
Solución:
La última vez que vi comparaciones de rendimiento getObjectMetadata
fue la forma más rápida de comprobar si existe un objeto. Usando el cli de AWS que sería el head-object
método, ejemplo:
aws s3api head-object --bucket www.codeengine.com --key index.html
que devuelve:
"AcceptRanges": "bytes",
"ContentType": "text/html; charset=utf-8",
"LastModified": "Sun, 08 Jan 2017 22:49:19 GMT",
"ContentLength": 38106,
"ContentEncoding": "gzip",
"ETag": ""bda80810592763dcaa8627d44c2bf8bb"",
"StorageClass": "REDUCED_REDUNDANCY",
"CacheControl": "no-cache, no-store",
"Metadata":
Siguiendo las respuestas de @DaveMaple y @MichaelGlenn, esta es la condición que estoy usando:
aws s3api head-object --bucket --key || not_exist=true
if [ $not_exist ]; then
echo "it does not exist"
else
echo "it exists"
fi
Tenga en cuenta que “aws s3 ls” no funciona del todo, aunque se aceptó la respuesta. Busca por prefixno por un objeto específico key. Descubrí esto de la manera difícil cuando alguien cambió el nombre de un archivo agregando un ‘1’ al final del nombre del archivo, y la verificación de existencia aún devolvería True.
(Intenté agregar esto como un comentario, pero aún no tengo suficientes representantes).
Si eres capaz, tienes el poder dejar un post acerca de qué le añadirías a este post.