한 S3 계정에서 다른 계정으로 파일을 직접 이동 하시겠습니까?


90

아주 기본적인 질문이지만 답을 찾지 못했습니다. Transit을 사용하여 한 AWS 계정의 한 S3 버킷에서 다른 AWS 계정의 다른 S3 버킷으로 파일을 "이동"할 수 있지만 실제로하는 일은 첫 번째 파일에서 파일을 다운로드 한 다음 두 번째 버킷으로 업로드하는 것입니다.

파일을 다운로드하지 않고 한 S3 계정에서 다른 계정으로 직접 파일을 이동할 수있는 방법이 있습니까?

답변:


22

준비된 솔루션을 찾고 있다면이를 수행 할 수있는 몇 가지 솔루션이 있습니다. Bucket Explorer 는 Mac과 Windows에서 작동하며 Cloudberry S3 ExplorerS3 Browser 와 마찬가지로 계정간에 복사 할 수 있지만 Windows 전용이므로 작동하지 않을 수 있습니다.

AWS 콘솔 이 적절한 권한 설정으로도이를 수행 할 수 있다고 생각 하지만 테스트하지는 않았습니다.

대상 버킷에 대한 쓰기 권한 을 사용중인 AWS 계정에 부여한 경우 AWS API 를 사용하여 수행 할 수도 있습니다 .


Bucket Explorer의 경우 +1입니다. 계정 간 버킷 복사를 위해 AWS 관리 콘솔 또는 s3cmd보다 훨씬 쉽습니다. : 방향의 두 번째 세트는 무료 평가판과 나를 위해 일한 bucketexplorer.com/documentation/...
LennonR

Cloudberry는 갈 길입니다. 무료이며, 더 쉬운 설정 후 쉽게 드래그 앤 드롭 할 수 있습니다. 그리고 아니, 나는 거기에서 일하지 않는다 :)
skidadon

3
Bucket Explorer는 데이터를 다운로드하고 다시 업로드합니까? 아니면 Amazon 서버간에 데이터를 직접 이동합니까?
Wouter

Cloudberry 평가판 (최소 버전 5.0.0.32)에는 5GB 전송 제한이 있습니다!
DarthPablo

123

예, 방법이 있습니다. 찾기 어렵지만 꽤 간단합니다. 8)

예를 들어 첫 번째 계정 사용자 이름이 acc1@gmail.com이고 두 번째 계정이 acc2@gmail.com이라고 가정합니다.

열기 AWS 관리 콘솔 ACC1있다. Amazon S3 버킷 속성으로 이동하여 "권한"탭에서 "권한 추가"를 클릭합니다. 그런 다음 "인증 된 사용자"에 대한 목록 및보기 권한을 추가합니다.

다음으로, acc2의 AWS IAM (콘솔 탭에서 액세스 가능)에서 S3 버킷에 대한 전체 액세스 권한이있는 사용자를 생성합니다 (보안을 강화하기 위해 정확한 권한을 설정할 수 있지만 전송을위한 임시 사용자 생성을 선호합니다). 삭제).

그런 다음 s3cmd (acc2에서 새로 생성 된 사용자의 자격 증명 사용)를 사용하여 다음과 같은 작업을 수행 할 수 있습니다.

s3cmd cp s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive

모든 전송은 Amazon 측에서 이루어집니다.


9
좋은 팁! 또한 전체 버킷 동기화를 위해을 rsync사용할 수 있습니다 s3cmd sync s3://acc1_bucket s3://acc2_bucket.
lllllll

6
대상에서 호스트로 파일을 복사 할 때 403 AccessDenied에 문제가있는 경우이 게시물을 참조하십시오. 다른 방법이있을 수 있지만 여기의 결과는 저에게 효과적이었습니다. alfielapeter.com/posts/…
crlane

다소 큰 버킷은 어떻습니까? 50GB 영역에서 말하면 문제가 있습니까?
ianstarz 2014

4
s3cmdhomebrew와 함께 설치할 수도 있습니다. fyi
ianstarz 2014

3
대상 버킷이 파일을 공개적으로 제공하는 것을 의미하는 경우 .. --acl-public그렇지 않으면 모든 파일이 비공개입니다 (적어도 명령을 수행 할 때 나에게 해당됨). 비공개 파일이 너무 많아서 버킷에 정책을 추가하여 모든 파일을 다시 공개해야했습니다
choonkeat

58

사용 AWS의 CLI를 (I 14 EC2 인스턴스 우분투를 사용) 바로 다음 명령을 실행합니다 :

aws s3 sync s3://bucket1 s3://bucket2

하나에 대한 계정 세부 정보를 지정하고 다른 하나에 대한 공개 쓰기 액세스 또는 공개 읽기 액세스 권한이 있어야합니다.

이렇게하면 두 버킷이 동기화됩니다. 나중에 동일한 명령을 다시 사용하여 빠르게 동기화 할 수 있습니다. 가장 좋은 점은 대역폭이 필요하지 않은 것 같습니다 (예 : 파일이 로컬 컴퓨터를 통과하지 않음).


3
아주 큰 양동이에서 나는 이것으로 더 좋은 행운을 얻었습니다. s3cmd가 첫 번째 버킷의 파일 목록 생성을 중단하는 것처럼 보였습니다. 끝났을 지 모르지만 참을성이 없어졌습니다.
overthink

2
저도 같은 경험을했습니다. 어떤 이유에서, aws s3 sync보다 빠른 진도의 순서에 대해 실행하는 것 같다 s3cmd cp.
pix0r

2
이것은 나를 위해 일했습니다. 권한 문제가 발생하면 --grants옵션을 사용해보십시오 . 문서의 추가 정보 : docs.aws.amazon.com/cli/latest/reference/s3/sync.html
findzen

3
동기화 할 때 권한이 복사되지 않으므로을 지정해야 --grants합니다. 엄청난 양의 데이터를 복사 한 후이를 배웠고 새 버킷으로 동기화를 다시 실행해야했습니다. --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers공용 사용자에 대한 읽기 권한을 설정합니다.
Dan Sandland

이것은 s3cmd나 보다 약 10 배 더 빠르게 실행되었으며 나중에 명령을 다시 실행해야 할 경우 모든 것을 다시 복사하는 대신 변경 파일을 동기화 할 수 있습니다.
nfm

5

boto 가 잘 작동합니다. 이 스레드를 참조하십시오 . boto를 사용하면 객체를 로컬 머신에 다운로드하고 다른 버킷에 업로드하는 대신 한 버킷에서 다른 버킷으로 직접 복사합니다.


OP가 한 AWS 계정에서 다른 계정으로 복사하는 것에 대해 구체적으로 묻기 때문에 링크 된 토론은 질문을 해결하지 않는 것 같습니다.
TolkienWASP

3

Mac OS XI에서는 Panic의 Transmit 앱을 사용했습니다. 각 S3 계정에 대해 하나의 창을 열었습니다 (API 키 및 암호 사용). 그런 다음 한 창의 한 버킷에서 다른 창의 다른 버킷으로 드래그 할 수 있습니다. 먼저 로컬에서 파일을 다운로드 할 필요가 없습니다 .

Andrew가 맞습니다. Transmit은 파일을 로컬로 다운로드 한 다음 파일을 업로드합니다.


2
나는 Transmit을 가지고 있으며 설명하는 전송이 파일을 임시 폴더에 다운로드 한 다음 다른 서버에 업로드한다고 99 % 확신합니다. 파일이 컴퓨터를 통해 흐르지 않았다고 확신합니까?
Andrew

1
누구든지 이것을 확인할 수 있습니까?
David Mauricio

2
확인합니다. 다운로드 및 업로드를 전송합니다. 이로 인해 상황이 매우 느려지지만 올바른 소유자 아래에 복사 된 콘텐츠를 저장하는 큰 이점이 있습니다.
Fabio Russo

3

한 계정에서 다른 계정으로 S3 파일 이동

두 개의 계정 소스 계정과 대상 계정이 있다고 가정 해 보겠습니다. 그리고 두 개의 버킷 source-bucketdestination bucket. 모든 파일을 source-bucket에서 destination-bucket. 다음 단계로 수행 할 수 있습니다.

  1. aws configure
    • 자격 증명 또는 IAM 역할을 사용하여 대상 계정을 구성합니다.
  2. 대상 계정 사용자에 대한 사용자 정책을 만듭니다.
  3. 소스 버킷 정책을 수정하고 여기에 대상 계정 사용자 정책을 추가하여 대상 사용자에게 소스 버킷에 대한 액세스 권한을 부여하십시오. 이렇게하면 대상 사용자가 소스 버킷에 액세스 할 수 있습니다.
  4. aws s3 ls s3://source-bucket/
    • 그러면 대상 계정에 소스 버킷에 대한 액세스 권한이 있는지 확인합니다. 확인을 위해 이렇게하십시오.
  5. aws s3 cp s3://source-bucket s3://destination-bucket --recursive
    • 그러면 소스 버킷의 모든 파일이 대상 버킷에 복사됩니다. 모든 파일은 --recursive 플래그를 사용하여 복사됩니다.
  6. aws s3 mv s3://source-bucket s3://destination-bucket --recursive
    • 그러면 모든 파일이 소스 버킷에서 대상 버킷으로 이동합니다.

또는 sync 명령을 사용할 수 있습니다. aws s3 sync s3://source-bucket s3://detination-bucket

더 나은 설명을 위해 링크를 따르십시오


2

CrossFTP 는 S3 파일을 다운로드하지 않고도 한 버킷에서 다른 버킷으로 직접 복사 할 수 있습니다. Windows, Mac 및 Linux에서 작동하는 GUI S3 클라이언트입니다.


4
이것은 유료 버전에서만 가능합니다. 무료 솔루션이 아닙니다.
Michael Brook

2

Cyberduck (오픈 소스)을 사용할 수 있습니다.


Windows 스토어에서는 다운로드 비용을 청구하지만 웹 사이트에서 무료로받을 수 있습니다. AWS 액세스 키 ID와 보안 액세스 키를 생성 한 후 S3 스토리지에 연결할 수있었습니다. 아직 아무것도 복사하지 않았지만 작동 할 것 같습니다.
Wouter

1

새로 생성 된 파일 (기존 객체 아님)의 경우 AWS의 새로운 기능을 활용할 수 있습니다. 교차 리전 복제입니다 (S3 버킷의 "버전 관리"아래). 새 객체를 다른 계정의 버킷에 복제 할 수있는 정책을 생성 할 수 있습니다.

기존 객체의 경우 향후 AWS에서 이에 대한 기본 기능을 도입하지 않는 한 다른 방법을 사용하여 객체를 복사해야합니다.


0

다음을 실행하여 그렇게 할 수 있습니다.

aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive

  1. 소스 계정의 소스 버킷에 버킷 정책을 연결합니다.

  2. AWS Identity and Access Management (IAM) 정책을 대상 계정의 사용자 또는 역할에 연결합니다.

  3. 대상 계정에서 IAM 사용자 또는 역할을 사용하여 교차 계정 이동을 수행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.