아주 기본적인 질문이지만 답을 찾지 못했습니다. Transit을 사용하여 한 AWS 계정의 한 S3 버킷에서 다른 AWS 계정의 다른 S3 버킷으로 파일을 "이동"할 수 있지만 실제로하는 일은 첫 번째 파일에서 파일을 다운로드 한 다음 두 번째 버킷으로 업로드하는 것입니다.
파일을 다운로드하지 않고 한 S3 계정에서 다른 계정으로 직접 파일을 이동할 수있는 방법이 있습니까?
답변:
준비된 솔루션을 찾고 있다면이를 수행 할 수있는 몇 가지 솔루션이 있습니다. Bucket Explorer 는 Mac과 Windows에서 작동하며 Cloudberry S3 Explorer 및 S3 Browser 와 마찬가지로 계정간에 복사 할 수 있지만 Windows 전용이므로 작동하지 않을 수 있습니다.
AWS 콘솔 이 적절한 권한 설정으로도이를 수행 할 수 있다고 생각 하지만 테스트하지는 않았습니다.
대상 버킷에 대한 쓰기 권한 을 사용중인 AWS 계정에 부여한 경우 AWS API 를 사용하여 수행 할 수도 있습니다 .
예, 방법이 있습니다. 찾기 어렵지만 꽤 간단합니다. 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 측에서 이루어집니다.
rsync
사용할 수 있습니다 s3cmd sync s3://acc1_bucket s3://acc2_bucket
.
s3cmd
homebrew와 함께 설치할 수도 있습니다. fyi
--acl-public
그렇지 않으면 모든 파일이 비공개입니다 (적어도 명령을 수행 할 때 나에게 해당됨). 비공개 파일이 너무 많아서 버킷에 정책을 추가하여 모든 파일을 다시 공개해야했습니다
사용 AWS의 CLI를 (I 14 EC2 인스턴스 우분투를 사용) 바로 다음 명령을 실행합니다 :
aws s3 sync s3://bucket1 s3://bucket2
하나에 대한 계정 세부 정보를 지정하고 다른 하나에 대한 공개 쓰기 액세스 또는 공개 읽기 액세스 권한이 있어야합니다.
이렇게하면 두 버킷이 동기화됩니다. 나중에 동일한 명령을 다시 사용하여 빠르게 동기화 할 수 있습니다. 가장 좋은 점은 대역폭이 필요하지 않은 것 같습니다 (예 : 파일이 로컬 컴퓨터를 통과하지 않음).
aws s3 sync
보다 빠른 진도의 순서에 대해 실행하는 것 같다 s3cmd cp
.
--grants
옵션을 사용해보십시오 . 문서의 추가 정보 : docs.aws.amazon.com/cli/latest/reference/s3/sync.html
--grants
합니다. 엄청난 양의 데이터를 복사 한 후이를 배웠고 새 버킷으로 동기화를 다시 실행해야했습니다. --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
공용 사용자에 대한 읽기 권한을 설정합니다.
s3cmd
나 보다 약 10 배 더 빠르게 실행되었으며 나중에 명령을 다시 실행해야 할 경우 모든 것을 다시 복사하는 대신 변경 파일을 동기화 할 수 있습니다.
Mac OS XI에서는 Panic의 Transmit 앱을 사용했습니다. 각 S3 계정에 대해 하나의 창을 열었습니다 (API 키 및 암호 사용). 그런 다음 한 창의 한 버킷에서 다른 창의 다른 버킷으로 드래그 할 수 있습니다. 먼저 로컬에서 파일을 다운로드 할 필요가 없습니다 .
Andrew가 맞습니다. Transmit은 파일을 로컬로 다운로드 한 다음 파일을 업로드합니다.
두 개의 계정 소스 계정과 대상 계정이 있다고 가정 해 보겠습니다. 그리고 두 개의 버킷 source-bucket
과 destination bucket
. 모든 파일을 source-bucket
에서 destination-bucket
. 다음 단계로 수행 할 수 있습니다.
aws configure
aws s3 ls s3://source-bucket/
aws s3 cp s3://source-bucket s3://destination-bucket --recursive
aws s3 mv s3://source-bucket s3://destination-bucket --recursive
또는 sync 명령을 사용할 수 있습니다. aws s3 sync s3://source-bucket s3://detination-bucket
더 나은 설명을 위해 링크를 따르십시오
CrossFTP 는 S3 파일을 다운로드하지 않고도 한 버킷에서 다른 버킷으로 직접 복사 할 수 있습니다. Windows, Mac 및 Linux에서 작동하는 GUI S3 클라이언트입니다.
Cyberduck (오픈 소스)을 사용할 수 있습니다.
새로 생성 된 파일 (기존 객체 아님)의 경우 AWS의 새로운 기능을 활용할 수 있습니다. 교차 리전 복제입니다 (S3 버킷의 "버전 관리"아래). 새 객체를 다른 계정의 버킷에 복제 할 수있는 정책을 생성 할 수 있습니다.
기존 객체의 경우 향후 AWS에서 이에 대한 기본 기능을 도입하지 않는 한 다른 방법을 사용하여 객체를 복사해야합니다.
다음을 실행하여 그렇게 할 수 있습니다.
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
소스 계정의 소스 버킷에 버킷 정책을 연결합니다.
AWS Identity and Access Management (IAM) 정책을 대상 계정의 사용자 또는 역할에 연결합니다.
대상 계정에서 IAM 사용자 또는 역할을 사용하여 교차 계정 이동을 수행합니다.