Recupere a última versão de um artefato no S3

Supondo que você tenha um build CI carregando seus artefatos de implantação para S3, você teria uma estrutura de pastas semelhante a:

  • meu balde
  • -Projeto 1
  • – my-war-1.war
  • – my-war-2.war
  • – my-war-3.war
  • – projeto2
  • – my-scripts-1.tar.gz
  • – my-scripts-2.tar.gz
  • – my-scripts-3.tar.gz

Você pode ter um cenário em que precisa recuperar a versão mais recente carregada. Isso pode ser facilmente alcançado com uma combinação de AWS CLI e jq .

Instale o AWS CLI e jq primeiro

# Run as root
yum
-y install python-pip
pip install
--upgrade awscli

wget http
://stedolan.github.io/jq/download/linux64/jq
mv jq
/usr/bin/
chmod
755 /usr/bin/jq

Em seguida, use o comando ListObjects para recuperar a lista de artefatos que correspondem ao padrão project2 / my-scripts e processá-la com jq para retornar o último elemento ordenado por data de modificação:

MY_SCRIPTS=`aws s3api list-objects --bucket my-bucket 
--prefix project2/my-scripts

| jq '.Contents | sort_by(.LastModified)

| reverse | .[0] | .Key' | tail -1 | sed 's/"//g'`


aws s3api get
-object --bucket my-bucket
--key ${MY_SCRIPTS} ~/my-scripts.tar.gz

Onde o comando list-objects retorna algo semelhante a

{
""CommonPrefixes"": []