Cách di chuyển xô S3 đến vị trí khác


20

Chúng tôi sử dụng S3 để lưu trữ hàng triệu mục trong ứng dụng web của mình, bây giờ chúng tôi chuyển toàn bộ sang máy chủ EC2, EU và chúng tôi cũng muốn chuyển dữ liệu S3 đó sang EU. Nhưng cái xô chúng tôi sử dụng là ở Mỹ và dường như không có công cụ nào để chuyển toàn bộ nội dung của thùng sang các thùng khác nhau.

Ngoài ra còn có vấn đề về cách đồng bộ hóa dữ liệu sau này khi chúng tôi chuyển sang nhóm EU, dữ liệu sẽ được tạo trong khi di chuyển đang chạy.

Câu trả lời:


18

AWS CLI chính thức mới hỗ trợ hầu hết các chức năng của s3cmd.

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2

Bạn có thể tìm thấy một danh sách các tên khu vực ở đâu?
bart

Bạn có thể tìm thấy các khu vực S3 tại đây: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region Chúng gần như giống hệt với các khu vực EC2 bạn nhận được aws ec2 describe-regions, nhưng us-east-1còn được gọi là Tiêu chuẩn Hoa Kỳ cho S3 và hơi khác nhau vì lý do lịch sử.
AB

5

Tôi đoán, bạn có thể chạy:

s3cmd --recursive cp s3://oldbucket/ s3://newbucket

Nó nên sao chép nó trực tiếp.


CLI nói: "command not found"
bart

3

Tôi không biết về một giải pháp đóng gói để làm điều này, nhưng về cơ bản nó chỉ là một DANH SÁCH xô và sau đó PUT sao chép từng đối tượng từ xô Mỹ sang xô EU. API sao chép PUT hỗ trợ "if-Sửa đổi-từ" và "if-none-match", do đó bạn có thể chạy nó nhiều lần mà không cần nhân đôi nỗ lực: http://docs.amazonwebservice.com/AmazonS3/2006-03-01/ API / index.html? RESTObjectCOPY.html

Đối với một cuộc di cư trực tiếp, tôi sẽ đề xuất cách tiếp cận sau:

  1. Bước đầu tiên tùy chọn: Nếu bạn có một lượng dữ liệu khổng lồ để di chuyển, hãy xem xét sử dụng AWS Nhập / Xuất để chụp ảnh chụp nhanh đầu tiên của dữ liệu trên thiết bị vật lý ở Hoa Kỳ và gửi dữ liệu đó đến EU. Điều này có thể giúp bạn tiết kiệm thời gian và tiền bạc.
    • Thiết lập tập lệnh để di chuyển dữ liệu từ Hoa Kỳ sang EU bằng cách sử dụng if-Sửa đổi-kể từ hoặc nếu không phù hợp như mô tả ở trên. Làm cho nó đủ thông minh để không ghi đè dữ liệu mới của EU với dữ liệu cũ của Hoa Kỳ (một khi bạn đến bước 5 bên dưới). Chạy nó liên tục trong một vòng lặp cho đến khi hai thùng ở trạng thái gần như nhau.
    • Sửa đổi ứng dụng web của bạn thành PUT dữ liệu cho cả xô Mỹ và EU cùng một lúc, trong khi tiếp tục NHẬN dữ liệu độc quyền từ Hoa Kỳ.
    • Tiếp tục chạy tập lệnh di chuyển của bạn cho đến khi bạn tự tin rằng các thùng ở trạng thái chính xác như nhau (hoặc gần nhất có thể, với sự nhất quán cuối cùng).
    • Sửa đổi ứng dụng web một lần nữa để NHẬN dữ liệu độc quyền từ nhóm EU.
    • Bây giờ bạn có thể tắt tập lệnh di chuyển của bạn.
    • Tìm kiếm sự bất thường nhất quán cuối cùng và làm sạch chúng.
    • Sửa đổi ứng dụng web để dừng PUTting dữ liệu vào nhóm US.
    • XÓA mọi thứ trong xô Mỹ.

Bạn có thể muốn sử dụng Lưu trữ dự phòng giảm S3 trên thùng EU trong quá trình di chuyển để có tốc độ dữ liệu rẻ hơn và thời gian phản hồi nhanh hơn, vì dữ liệu chỉ là bản sao của dữ liệu Hoa Kỳ.



0

Tôi đã thực hiện một số lượng công việc khá lớn với S3 và chưa bao giờ bắt gặp một công cụ nào sẽ thực hiện việc này một cách tự nhiên. Tuy nhiên, sẽ không quá khó để sử dụng một vài tập lệnh đồng bộ hóa s3cmd để giữ hai nhóm đồng bộ với nhau.


vâng, điều đó sẽ hoạt động, nhưng yêu cầu chúng tôi tải xuống mọi thứ cục bộ, trong khi API S3 hỗ trợ di chuyển / sao chép các mục mà không cần tải xuống.
skrat
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.