AWS S3 CLI를 사용하여 BASH의 stdout에 파일을 덤프하는 방법은 무엇입니까?


93

S3 ( ls 명령에 지정된대로)에서 경로를 사용하고 모든 파일 객체의 내용을 .NET Framework에 덤프 하는 bash 스크립트를 시작하고 있습니다 stdout. 본질적 cat /path/to/files/*으로 S3를 제외하고 복제 하고 싶습니다 s3cat '/bucket/path/to/files/*'. 옵션을 보는 첫 번째 경향은 cp명령을 임시 파일 에 사용하는 것 cat입니다.

누구든지 이것을 시도했거나 비슷한 것을 시도했거나 이미 찾지 못하는 명령이 있습니까?


비슷한 작업을 수행하기 위해 PHP와 Services_Amazon_S3 클래스를 사용합니다.
오해

답변:


152

모든 파일 객체의 내용을 stdout에 덤프합니다.

명령의 -대상 을 통과하면이를 수행 할 수 있습니다 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

5
그러나 stdout의 자리 표시자인 '-'는 모든 버전의 awscli에서 작동하지 않습니다. 예를 들어, 우분투 LTS 14.04.2와 함께 제공되는 버전 1.2.9는이를 지원하지 않습니다.
antoniob

그것도 마찬가지입니다. Ubuntu 12.x에 있으며 bash의 인스턴스에서 작동하지 않습니다.
Kode Charlie 2015

이 문제는 특정 버전의 파일을 가져올 수 없다는 것입니다.
Eamorr 2016

중 맥 OS 높은 시에라 10.13.6 작동하지 ( aws --version: aws-cli/1.15.40 Python/3.6.5 Darwin/17.7.0 botocore/1.10.40)
MichaelChirico

이 답변은 파일 내용이 전체적으로 복사되지 않고 터미널로 스트리밍된다는 장점도 있습니다. 더 많은 참조 loige.co/aws-command-line-s3-content-from-stdin-or-to-stdout/...
코아

47

"-"로의 복사를 지원하지 않는 AWS CLI 버전을 사용하는 경우 / dev / stdout을 사용할 수도 있습니다.

$ aws s3 cp --quiet s3://mybucket/stream.txt /dev/stdout

--quiet다음과 같은 요약 줄이 출력에 추가되지 않도록 플래그를 지정할 수도 있습니다 .

다운로드 : s3 : //mybucket/stream.txt to ../../dev/stdout


1

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


-3

BASH를 사용하여이 작업을 수행하려면 AWS 명령 줄 인터페이스 (CLI) 와 같은 외부 앱을 호출해야합니다 . CAT에 해당하는 파일이 없으므로 파일을 로컬로 복사 한 다음 CAT로 복사해야합니다.

또는 Python, PHP, Java와 같은 언어로 제공되는 AWS SDK를 직접 호출하는 앱을 사용 / 작성할 수 있습니다. SDK를 사용하면 파일 내용을 메모리에서 검색 한 다음 stdout으로 보낼 수 있습니다.


위의 답변은 '-'와 함께 'cp'를 두 번째 파일 인수로 사용하여 파일을 stdout으로 출력하도록 할 수 있습니다.
Asfand Qazi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.