how - ¿Cómo usar AWS S3 CLI para volcar archivos a stdout en BASH?
instalar aws cli (5)
Estoy comenzando un script bash que tomará una ruta en S3 (como se especifica al comando ls ) y volcará el contenido de todos los objetos del archivo a stdout
. Básicamente me gustaría replicar cat /path/to/files/*
excepto para S3, por ejemplo s3cat ''/bucket/path/to/files/*''
. Mi primera inclinación al mirar las opciones es usar el comando cp
en un archivo temporal y luego hacerlo con eso.
¿Alguien ha intentado esto o similar o ya hay un comando que no estoy encontrando que lo hace?
volcar el contenido de todos los objetos de archivo a stdout.
Puede hacerlo si pasa -
para el destino del comando aws s3 cp
. Por ejemplo, $ aws s3 cp s3://mybucket/stream.txt -
.
Lo que estás tratando de hacer es algo como esto? ::
#!/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
¡Ah, ja!
https://pypi.python.org/pypi/s3cat/1.0.8
Estoy escribiendo más caracteres para satisfacer el requisito de longitud.
Puede intentar usar s3streamcat , también es compatible con los formatos bzip, gzip y xz.
Instalar con
sudo pip install s3streamcat
Uso:
s3streamcat s3://bucketname/dir/file_path
s3streamcat s3://bucketname/dir/file_path | more
s3streamcat s3://bucketname/dir/file_path | grep something
Si desea lograr esto usando BASH, tendrá que llamar a una aplicación externa como la interfaz de línea de comandos de AWS (CLI). No tiene un equivalente CAT, por lo que necesitaría copiar el archivo localmente y luego CAT.
Alternativamente, puede usar / escribir una aplicación que llame directamente al AWS SDK, que está disponible para lenguajes como Python, PHP, Java. Al usar el SDK, el contenido del archivo puede recuperarse en la memoria y luego enviarse a stdout.
Si está utilizando una versión de la CLI de AWS que no admite la copia en "-" también puede usar / dev / stdout:
$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout
También puede querer el --quiet
para evitar que se --quiet
a su salida una línea de resumen como la siguiente:
descargar: s3: //mybucket/stream.txt a ../../dev/stdout