Estou iniciando um script bash que pegará um caminho no S3 (conforme especificado para o comando ls ) e despejará o conteúdo de todos os objetos de arquivo em stdout
. Essencialmente, gostaria de replicar, cat /path/to/files/*
exceto para S3, por exemplo s3cat '/bucket/path/to/files/*'
. Minha primeira inclinação ao olhar as opções é usar o cp
comando para um arquivo temporário e depois cat
isso.
Alguém já tentou isso ou algo semelhante ou já existe um comando que não estou encontrando qual é?
bash
amazon-web-services
amazon-s3
aws-cli
Neil C. Obremski
fonte
fonte
Respostas:
Você pode fazer isso se passar
-
por destino deaws s3 cp
comando. Por exemplo$ aws s3 cp s3://mybucket/stream.txt -
,.O que você está tentando fazer é algo assim? ::
fonte
aws --version
:aws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40
)Se você estiver usando uma versão do AWS CLI que não suporta a cópia para "-", você também pode usar / dev / stdout:
Você também pode querer que o
--quiet
sinalizador evite que uma linha de resumo como a seguinte seja anexada à sua saída:fonte
Você pode tentar usar s3streamcat , ele suporta os formatos bzip, gzip e xz também.
Instale com
sudo pip install s3streamcat
Uso:
fonte
Ah ha!
https://pypi.python.org/pypi/s3cat/1.0.8
Estou escrevendo mais caracteres para satisfazer o requisito de comprimento.
fonte
Se desejar fazer isso usando o BASH, você terá que chamar um aplicativo externo, como a AWS Command-Line Interface (CLI). Ele não tem um equivalente CAT, então você precisaria copiar o arquivo localmente e então fazer o CAT.
Como alternativa, você pode usar / escrever um aplicativo que chama diretamente o SDK da AWS, que está disponível para linguagens como Python, PHP, Java. Usando o SDK, o conteúdo do arquivo pode ser recuperado na memória e enviado para stdout.
fonte