Estoy iniciando un script bash que tomará una ruta en S3 (como se especifica en el comando ls ) y volcará el contenido de todos los objetos de archivo en 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 cp
comando en un archivo temporal y luego cat
eso.
¿Alguien ha probado esto o algo similar o ya hay un comando que no encuentro que lo hace?
bash
amazon-web-services
amazon-s3
aws-cli
Neil C. Obremski
fuente
fuente
Respuestas:
Puede lograr esto si pasa
-
por destino deaws s3 cp
comando. Por ejemplo$ aws s3 cp s3://mybucket/stream.txt -
,.¿Qué estás intentando 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
fuente
aws --version
:aws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40
)Si está utilizando una versión de la AWS CLI que no admite la copia en "-", también puede utilizar / dev / stdout:
También puede querer que la
--quiet
bandera evite que una línea de resumen como la siguiente se agregue a su salida:fuente
Puede intentar usar s3streamcat , también es compatible con los formatos bzip, gzip y xz.
Instalar con
sudo pip install s3streamcat
Uso:
fuente
¡Ah, ja!
https://pypi.python.org/pypi/s3cat/1.0.8
Estoy escribiendo más caracteres para satisfacer el requisito de longitud.
fuente
Si desea lograr esto usando BASH, deberá llamar a una aplicación externa como la AWS Command-Line Interface (CLI). No tiene un equivalente CAT, por lo que deberá 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 se puede recuperar en la memoria y luego enviarlo a la salida estándar.
fuente