簡體   English   中英

如何使用 AWS S3 CLI 將文件轉儲到 BASH 中的標准輸出?

[英]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

啊哈!

https://pypi.python.org/pypi/s3cat/1.0.8

我正在編寫更多字符以滿足長度要求。

如果您希望使用 BASH 完成此操作,則必須調用外部應用程序,例如AWS 命令​​行界面(CLI)。 它沒有 CAT 等效項,因此您需要在本地復制文件,然后對其進行 CAT。

或者,您可以使用/編寫直接調用 AWS 開發工具包的應用程序,該應用程序可用於 Python、PHP、Java 等語言。 通過使用 SDK,可以在內存中檢索文件內容,然后將其發送到 stdout。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM