[英]How to use AWS S3 CLI to dump files to stdout in BASH?
我正在啟動一個 bash 腳本,它將采用 S3 中的路徑(如ls命令指定的那樣)並將所有文件對象的內容轉儲到stdout
。 基本上我想復制cat /path/to/files/*
除了S3,例如s3cat '/bucket/path/to/files/*'
。 我查看選項的第一個傾向是使用cp
命令到一個臨時文件,然后cat
。
有沒有人試過這個或類似的,或者已經有一個我沒有找到的命令?
將所有文件對象的內容轉儲到標准輸出。
如果您通過-
for destination of aws s3 cp
命令,您可以完成此操作。 例如, $ aws s3 cp s3://mybucket/stream.txt -
。
你想要做的是這樣的事情? ::
#!/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
如果您使用的 AWS CLI 版本不支持復制到“-”,您還可以使用 /dev/stdout:
$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout
您可能還需要--quiet
標志來防止將如下所示的摘要行附加到您的輸出中:
下載:s3://mybucket/stream.txt 到 ../../dev/stdout
您可以嘗試使用s3streamcat ,它也支持 bzip、gzip 和 xz 格式。
安裝
sudo pip install s3streamcat
用法:
s3streamcat s3://bucketname/dir/file_path
s3streamcat s3://bucketname/dir/file_path | more
s3streamcat s3://bucketname/dir/file_path | grep something
如果您希望使用 BASH 完成此操作,則必須調用外部應用程序,例如AWS 命令行界面(CLI)。 它沒有 CAT 等效項,因此您需要在本地復制文件,然后對其進行 CAT。
或者,您可以使用/編寫直接調用 AWS 開發工具包的應用程序,該應用程序可用於 Python、PHP、Java 等語言。 通過使用 SDK,可以在內存中檢索文件內容,然后將其發送到 stdout。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.