Je démarre un script bash qui prendra un chemin dans S3 (comme spécifié à la commande ls ) et videra le contenu de tous les objets de fichier dans stdout
. Essentiellement, je voudrais répliquer cat /path/to/files/*
sauf pour S3, par exemple s3cat '/bucket/path/to/files/*'
. Ma première inclinaison en regardant les options est d'utiliser la cp
commande dans un fichier temporaire et ensuite cat
cela.
Quelqu'un a-t-il essayé ceci ou similaire ou y a-t-il déjà une commande que je ne trouve pas qui le fait?
bash
amazon-web-services
amazon-s3
aws-cli
Neil C. Obremski
la source
la source
Réponses:
Vous pouvez accomplir cela si vous passez
-
pour la destination de laaws s3 cp
commande. Par exemple$ aws s3 cp s3://mybucket/stream.txt -
,.Ce que vous essayez de faire est quelque chose comme ça? ::
la source
aws --version
:aws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40
)Si vous utilisez une version de l'AWS CLI qui ne prend pas en charge la copie vers "-", vous pouvez également utiliser / dev / stdout:
Vous pouvez également souhaiter que l'
--quiet
indicateur empêche une ligne de résumé comme celle-ci d'être ajoutée à votre sortie:la source
Vous pouvez essayer d'utiliser s3streamcat , il prend également en charge les formats bzip, gzip et xz.
Installer avec
sudo pip install s3streamcat
Usage:
la source
Ah ha!
https://pypi.python.org/pypi/s3cat/1.0.8
J'écris plus de caractères pour satisfaire l'exigence de longueur.
la source
Si vous souhaitez accomplir cela à l'aide de BASH, vous devrez appeler une application externe telle que l' AWS Command-Line Interface (CLI). Il n'a pas d'équivalent CAT, vous devez donc copier le fichier localement, puis le CAT.
Vous pouvez également utiliser / écrire une application qui appelle directement le kit AWS SDK, qui est disponible pour des langages tels que Python, PHP, Java. En utilisant le SDK, le contenu du fichier peut être récupéré en mémoire, puis envoyé à stdout.
la source