Di chuyển tệp trực tiếp từ tài khoản S3 này sang tài khoản S3 khác?


90

Câu hỏi khá cơ bản nhưng tôi vẫn chưa thể tìm ra câu trả lời. Sử dụng Transit, tôi có thể "di chuyển" các tệp từ một nhóm S3 trên một tài khoản AWS sang một nhóm S3 khác trên một tài khoản AWS khác, nhưng những gì nó thực sự làm là tải xuống các tệp từ tệp đầu tiên rồi tải chúng lên tệp thứ hai.

Có cách nào để di chuyển tệp trực tiếp từ tài khoản S3 này sang tài khoản S3 khác mà không cần tải chúng xuống giữa các tệp không?

Câu trả lời:


22

Nếu bạn chỉ đang tìm kiếm một giải pháp được tạo sẵn, có một số giải pháp có thể làm được điều này. Bucket Explorer hoạt động trên Mac và Windows và có thể sao chép trên nhiều tài khoản cũng như Cloudberry S3 ExplorerS3 Browser nhưng chúng chỉ dành cho Windows nên có thể không hoạt động với bạn.

Tôi nghi ngờ bảng điều khiển AWS cũng có thể làm điều đó với thiết lập quyền thích hợp nhưng tôi chưa thử nghiệm điều này.

Bạn cũng có thể làm điều đó bằng cách sử dụng API AWS miễn là bạn đã cấp cho tài khoản AWS mà bạn đang sử dụng quyền ghi vào nhóm đích.


+1 cho Bucket Explorer. Dễ dàng hơn nhiều so với bảng điều khiển quản lý AWS hoặc s3cmd để sao chép nhóm giữa các tài khoản. Tập hợp hướng dẫn thứ hai phù hợp với tôi khi dùng thử miễn phí: bucketexplorer.com/documentation/…
LennonR

Cloudberry là con đường để đi. Miễn phí, cộng với việc kéo và thả dễ dàng sau khi thiết lập thậm chí còn dễ dàng hơn. Và không, tôi không làm việc ở đó :)
skidadon

3
Bucket Explorer có tải xuống và tải lên lại dữ liệu hay nó di chuyển dữ liệu trực tiếp giữa các máy chủ Amazon không?
Wouter

Lưu ý rằng phiên bản dùng thử của Cloudberry (tối thiểu là phiên bản 5.0.0.32) có giới hạn chuyển 5GB!
DarthPablo

123

Vâng, đó là một cách. Và nó khá đơn giản, mặc dù rất khó để tìm thấy nó. số 8)

Ví dụ: giả sử tên người dùng tài khoản đầu tiên của bạn là acc1@gmail.com và thứ hai là acc2@gmail.com.

Mở Bảng điều khiển quản lý AWS dưới dạng tài khoản 1. Truy cập thuộc tính nhóm Amazon S3 và trong tab "Quyền", hãy nhấp vào "Thêm các quyền khác". Sau đó thêm Danh sách và Quyền xem cho "Người dùng đã xác thực".

Tiếp theo, trong AWS IAM (có thể truy cập từ các tab bảng điều khiển) của acc2, hãy tạo người dùng có toàn quyền truy cập vào nhóm S3 (để an toàn hơn, bạn có thể thiết lập các quyền chính xác, nhưng tôi muốn tạo người dùng tạm thời để chuyển và sau đó xóa nó).

Sau đó, bạn có thể sử dụng s3cmd (sử dụng thông tin đăng nhập của người dùng mới được tạo trong acc2) để thực hiện một số việc như:

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

Mọi chuyển khoản sẽ được thực hiện bên phía Amazon.


8
Mẹo hay! Ngoài ra để đồng bộ hóa toàn bộ nhóm rsync, bạn có thể sử dụng s3cmd sync s3://acc1_bucket s3://acc2_bucket.
sẽ

6
Nếu bạn gặp sự cố với AccessDenied 403 khi sao chép tệp từ đích sang máy chủ, hãy xem bài đăng này. Có thể có một cách khác để làm điều đó, nhưng kết quả ở đây đã hiệu quả với tôi. alfielapeter.com/posts/…
crlane

những gì về những cái xô hơi lớn? nói trong khu vực 50gb, nó có cho bạn vấn đề gì không?
ianstarz

4
s3cmdcó thể được cài đặt với homebrew cũng có, FYI
ianstarz

3
nếu nhóm đích của bạn là để cung cấp các tệp công khai .. bạn có thể muốn thêm --acl-publiccách khác, tất cả các tệp là riêng tư (ít nhất là đối với tôi khi tôi thực hiện lệnh). với rất nhiều tập tin cá nhân, tôi đã phải thêm một chính sách trong xô để làm cho họ tất cả công chúng một lần nữa
choonkeat

58

Sử dụng cli aws (tôi đã sử dụng phiên bản ec2 ubuntu 14) và chỉ cần chạy lệnh sau:

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

Bạn sẽ cần chỉ định chi tiết tài khoản cho một tài khoản và có quyền truy cập ghi công khai hoặc quyền truy cập đọc công khai đối với tài khoản kia.

Thao tác này sẽ đồng bộ hóa hai nhóm. Bạn có thể sử dụng lại lệnh tương tự sau để đồng bộ hóa nhanh chóng. Phần tốt nhất là nó dường như không yêu cầu bất kỳ băng thông nào (ví dụ: các tệp không đi qua máy tính cục bộ).


3
Trên một cái thùng rất lớn, tôi may mắn hơn với cái này. s3cmd dường như đã ngừng tạo danh sách tệp trong nhóm đầu tiên. Nó có thể đã hoàn thành, nhưng tôi đã mất kiên nhẫn.
overthink

2
Tôi đã có kinh nghiệm tương tự; vì bất cứ lý do gì, aws s3 syncdường như chạy nhanh hơn một bậc lớn hơn s3cmd cp.
pix0r

2
Điều này đã làm việc cho tôi. Nếu bạn gặp sự cố về quyền, hãy thử sử dụng --grantstùy chọn. Thông tin thêm trong tài liệu: docs.aws.amazon.com/cli/latest/reference/s3/sync.html
findzen

3
Quyền không được sao chép khi bạn đồng bộ hóa, vì vậy bạn sẽ phải chỉ định --grants. Tôi học được điều này sau khi sao chép hàng tấn dữ liệu và sau đó phải thực hiện lại quá trình đồng bộ hóa sang một nhóm mới. --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsersđặt quyền đọc cho người dùng công khai.
Dan Sandland

Điều này chạy nhanh hơn s3cmdtôi khoảng 10 lần và cũng có thể đồng bộ hóa các tệp thay đổi thay vì sao chép lại mọi thứ nếu bạn cần chạy lại lệnh trong tương lai - tốt hơn nhiều!
nfm

5

boto hoạt động tốt. Xem chủ đề này . Sử dụng boto, bạn sao chép các đối tượng trực tiếp từ nhóm này sang nhóm khác, thay vì tải chúng xuống máy cục bộ và tải chúng lên nhóm khác.


3

Trên Mac OS XI đã sử dụng ứng dụng Truyền từ Panic. Tôi đã mở một cửa sổ cho mỗi tài khoản S3 (sử dụng Khóa API và bí mật). Sau đó, tôi có thể kéo từ một nhóm trong cửa sổ này sang nhóm khác trong cửa sổ khác. Trước tiên, không cần tải xuống tệp cục bộ .

Andrew đúng, Truyền tải xuống cục bộ các tệp sau đó tải tệp lên.


2
Tôi có Truyền và tôi 99% khẳng định rằng quá trình chuyển mà bạn đang mô tả có tải các tệp xuống một thư mục tạm thời và sau đó tải lên máy chủ khác. Bạn có khẳng định rằng các tệp không chảy qua máy tính của bạn không?
Andrew

1
bất cứ ai có thể xác nhận điều này?
David Mauricio

2
Tôi xác nhận. Truyền tải xuống và tải lên. Điều này làm cho mọi thứ chậm kinh khủng nhưng có lợi thế rất lớn là lưu trữ nội dung được sao chép dưới quyền chủ sở hữu.
Fabio Russo,

3

Di chuyển tệp S3 từ tài khoản này sang tài khoản khác

Hãy xem xét có hai tài khoản tài khoản nguồn và tài khoản đích. Và hai xô source-bucketdestination bucket. Chúng tôi muốn di chuyển tất cả các tệp từ source-bucketsang destination-bucket. Chúng ta có thể thực hiện theo các bước sau:

  1. aws configure
    • Định cấu hình tài khoản đích của bạn bằng thông tin xác thực hoặc vai trò IAM.
  2. Tạo chính sách người dùng cho người dùng tài khoản đích.
  3. Cấp cho người dùng đích quyền truy cập vào nhóm nguồn bằng cách sửa đổi chính sách nhóm nguồn và thêm chính sách người dùng tài khoản đích vào đó. Bằng cách này, người dùng đích sẽ có quyền truy cập vào nhóm nguồn.
  4. aws s3 ls s3://source-bucket/
    • điều này sẽ kiểm tra xem tài khoản đích có quyền truy cập vào nhóm nguồn hay không. Chỉ để xác nhận làm điều này.
  5. aws s3 cp s3://source-bucket s3://destination-bucket --recursive
    • điều này sẽ sao chép nguồn-nhóm tất cả các tệp vào nhóm đích. Tất cả các tệp được sao chép bằng cờ --recursive.
  6. aws s3 mv s3://source-bucket s3://destination-bucket --recursive
    • điều này sẽ di chuyển tất cả các tệp từ nhóm nguồn sang nhóm đích.

Ngoài ra, bạn có thể sử dụng lệnh đồng bộ - aws s3 sync s3://source-bucket s3://detination-bucket

Để có giải thích tốt hơn, hãy làm theo liên kết


2

CrossFTP có thể sao chép các tệp S3 trực tiếp từ nhóm này sang nhóm khác mà không cần tải chúng xuống. Nó là một ứng dụng khách GUI S3 hoạt động trên Windows, Mac và Linux.


4
Cần lưu ý rằng điều này chỉ có thể thực hiện được với phiên bản trả phí. Nó không phải là một giải pháp miễn phí.
Michael Brook

2

Bạn có thể sử dụng Cyberduck (mã nguồn mở)


Trong cửa hàng Windows, họ tính phí một thứ để tải nó xuống, nhưng từ trang web của họ, bạn có thể tải nó miễn phí. Sau khi tạo ID khóa truy cập AWS và Khóa truy cập bí mật, tôi đã quản lý để kết nối với bộ nhớ S3 của mình. Chưa kiểm tra việc sao chép bất kỳ thứ gì, nhưng có vẻ như nó có thể hoạt động.
Wouter

1

Đối với các tệp mới được tạo (KHÔNG phải đối tượng hiện có), bạn có thể tận dụng chức năng mới từ AWS. Đó là Sao chép xuyên khu vực (trong "Phiên bản" cho nhóm S3). Bạn có thể tạo một chính sách cho phép bạn sao chép các đối tượng mới vào một nhóm trong một tài khoản khác.

Đối với các đối tượng hiện có, bạn sẽ vẫn cần sao chép các đối tượng của mình bằng phương pháp khác - trừ khi AWS giới thiệu chức năng gốc cho đối tượng này trong tương lai.


0

Người ta có thể làm như vậy với cách chạy sau:

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

  1. Đính kèm chính sách nhóm vào nhóm nguồn trong Tài khoản nguồn.

  2. Đính kèm chính sách AWS Identity and Access Management (IAM) cho người dùng hoặc vai trò trong Tài khoản đích.

  3. Sử dụng người dùng IAM hoặc vai trò trong Tài khoản đích để thực hiện di chuyển nhiều tài khoản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.