web-dev-qa-db-fra.com

Comment utiliser l'AWS S3 CLI pour vider des fichiers sur la sortie standard dans BASH?

Je commence un script bash qui prend un chemin dans S3 (comme spécifié dans la commande ls ) et vide le contenu de tous les objets de fichier dans stdout. Essentiellement, j'aimerais répliquer cat /path/to/files/* à l'exception de S3, par exemple. s3cat '/bucket/path/to/files/*'. Ma première tendance à examiner les options consiste à utiliser la commande cp dans un fichier temporaire, puis à cat.

Quelqu'un a-t-il essayé ceci ou quelque chose de similaire ou existe-t-il déjà une commande que je ne trouve pas qui la fait?

65
Neil C. Obremski

vide le contenu de tous les objets de fichier sur stdout.

Vous pouvez y parvenir si vous passez - pour la destination de la commande aws s3 cp. Par exemple, $ aws s3 cp s3://mybucket/stream.txt -.

Qu'est-ce que vous essayez de faire, c'est quelque chose comme ça? ::

#!/bin/bash

BUCKET=YOUR-BUCKET-NAME
for key in `aws s3api list-objects --bucket $BUCKET --prefix bucket/path/to/files/ | jq -r '.Contents[].Key'`
do
  echo $key
  aws s3 cp s3://$BUCKET/$key - | md5sum
done
98
quiver

Si vous utilisez une version de l'AWS CLI qui ne prend pas en charge la copie vers "-", vous pouvez également utiliser/dev/stdout:

$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout

Vous pouvez également souhaiter que l'indicateur --quiet empêche l'ajout à votre sortie d'une ligne de résumé semblable à celle-ci:

télécharger: s3: //mybucket/stream.txt to ../../dev/stdout

27
Drew

Vous pouvez essayer d’utiliser s3streamcat , il prend également en charge les formats bzip, gzip et xz.

Installer avec

Sudo pip install s3streamcat

Utilisation:

s3streamcat s3://bucketname/dir/file_path
s3streamcat s3://bucketname/dir/file_path | more
s3streamcat s3://bucketname/dir/file_path | grep something
0
samarth