%20del%20dep%C3%B3sito%20s3%20para%20una%20fecha%20espec%C3%ADfica.png)
Necesito obtener todos los archivos de ayer del depósito s3, sé cómo hacerlo en la CLI cuando sé el nombre del archivo:
#aws s3 cp s3:{Path}/{FileName} {diretoryToCopyTo}
pero ¿cómo haría esto para archivos de una fecha específica? También sería suficiente obtener la lista de nombres de archivos para una fecha específica, sea cual sea el método, no es necesario que sea CLI.
La captura:El depósito tiene algunos millones de archivos, por lo que también estoy buscando una forma rentable.
Respuesta1
Si el nombre del archivo contiene la fecha, puede utilizarincluir y excluir filtros:
aws s3 cp s3:{path}/ {directoryToCopyTo} --exclude "*" --include "*2019-09-09*"
Si la fecha solo está en los metadatos del archivo, actualmente no existe un método de filtrado por fecha del lado del servidor. Hay una discusión sobre github dondewillstruebingtiene un método usando s3api
:
Aquí hay una manera de hacer esto con
s3api
la función y--query
. Esto se prueba en OSX:aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=2016-05-20][].{Key: Key}'
luego puede filtrar usando jq o grep para realizar el procesamiento con las otras funciones de s3api. Editar: no estoy seguro de por qué no aparecen, pero debes usar comillas invertidas para rodear la fecha que estás consultando.
...pero esto no reduce la cantidad de llamadas a la API, ya que el filtrado se realiza en el lado del cliente.