Obtenha todos os arquivos (ou nomes de arquivos) do bucket s3 para uma data específica

Obtenha todos os arquivos (ou nomes de arquivos) do bucket s3 para uma data específica

Preciso pegar todos os arquivos de ontem do bucket s3, sei como fazer isso na CLI quando sei o nome do arquivo: #aws s3 cp s3:{Path}/{FileName} {diretoryToCopyTo}

mas como eu faria isso para arquivos de uma data específica? Apenas obter a lista de nomes de arquivos para uma data específica também funcionaria, de qualquer método, não precisa ser CLI.

A pegada:O balde tem alguns milhões de arquivos, então também estou procurando uma maneira econômica.

Responder1

Se o nome do arquivo contiver a data, você poderá usarincluir e excluir filtros: aws s3 cp s3:{path}/ {directoryToCopyTo} --exclude "*" --include "*2019-09-09*"

Se a data estiver apenas nos metadados do arquivo, não existe atualmente um método de filtragem por data no lado do servidor. Há uma discussão no github ondedeterminação de vontadetem um método usando s3api:

aqui está uma maneira de fazer isso com s3apia função e --query. Isso foi testado no OSX: aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=2016-05-20][].{Key: Key}'você pode filtrar usando jq ou grep para processar com as outras funções s3api. Editar: não sei por que eles não estão aparecendo, mas você precisa usar crases para cercar a data que está consultando

...mas isso não reduz o número de chamadas de API, pois a filtragem é feita no lado do cliente.

informação relacionada