2013-02-24 33 views
39

Có hỗ trợ tải lên hàng loạt amazon s3 không? Tôi có một công việc cần tải lên mỗi đêm ~ 100 nghìn tệp có thể lên tới 1G nhưng bị lệch mạnh đối với các tệp nhỏ (90% nhỏ hơn 100 byte và 99% nhỏ hơn 1000 byte).Có thể thực hiện tải lên hàng loạt lên amazon s3 không?

API s3 có hỗ trợ tải lên nhiều đối tượng trong một cuộc gọi HTTP không?

Tất cả các đối tượng phải có sẵn trong S3 dưới dạng đối tượng riêng lẻ. Tôi không thể lưu trữ chúng ở bất cứ nơi nào khác (FTP, vv) hoặc ở định dạng khác (Cơ sở dữ liệu, ổ đĩa cục bộ EC2, v.v.). Đó là một yêu cầu bên ngoài mà tôi không thể thay đổi.

+2

câu hỏi rất hay! chỉ tò mò, bạn có thể cho chúng tôi biết tại sao, những gì bạn đang cố gắng làm, những tập tin này là gì? –

+0

tôi có thể hỏi những câu hỏi này không? –

+0

Tôi tự hỏi tại sao yêu cầu đó xuất hiện. Nếu bạn cần thay thế tất cả các tệp cùng một lúc, có thể có cách nào đó để tải chúng lên nhóm tạm thời theo cách thông thường và sau đó thay đổi tên nhóm? –

Trả lời

23

API s3 có hỗ trợ tải lên nhiều đối tượng trong một cuộc gọi HTTP không?

Không, the S3 PUT operation chỉ hỗ trợ tải lên một đối tượng cho mỗi yêu cầu HTTP.

Bạn có thể cài đặt S3 Tools trên máy tính của bạn mà bạn muốn đồng bộ hóa với các xô từ xa, và chạy lệnh sau:

s3cmd sync localdirectory s3://bucket/ 

Sau đó, bạn có thể đặt lệnh này trong một kịch bản và tạo ra một công việc theo lịch trình để chạy lệnh này mỗi đêm.

Điều này sẽ làm những gì bạn muốn.

Công cụ thực hiện đồng bộ hóa tệp dựa trên MD5 băm và kích cỡ, vì vậy va chạm nên hiếm (nếu bạn thực sự muốn bạn chỉ có thể sử dụng lệnh "s3cmd put" để buộc ghi đè lên các đối tượng trong nhóm mục tiêu của bạn).

EDIT: Ngoài ra hãy chắc chắn rằng bạn đọc tài liệu trên trang web tôi liên kết cho S3 Tools - có lá cờ khác nhau cần thiết cho dù bạn muốn tập tin đã xóa tại địa phương để được xóa khỏi thùng hoặc bỏ qua, vv

+7

Phương pháp này vẫn sử dụng các hoạt động đặt riêng lẻ và không nhanh hơn bất kỳ phương thức nào khác. Câu trả lời đã được chấp nhận nhưng có vẻ như tất cả những gì bạn đã làm là chỉ đến một công cụ làm điều tương tự mà anh ta có thể làm trong mã. – bridiver

+0

bạn có thể thực hiện đồng bộ hóa từ nút api - kiểm tra nút s3-client –

+0

s3cmd yêu cầu phải có giấy phép để tiếp tục sử dụng – Adder

28

Ngoài , bạn có thể tải S3 qua AWS CLI tool bằng cách sử dụng lệnh đồng bộ hóa.

AWS s3 sync local_folder s3: // xô-tên

Bạn có thể sử dụng phương pháp này để tải lên tập tin batch để S3 rất nhanh.

+6

như với câu trả lời trước đó, hàm ý ở đây dường như là nếu không được thực hiện với API và tôi không tin đó là trường hợp – bridiver

+0

Tôi hiện đang sử dụng công cụ AWS CLI để đồng bộ hóa giữa một thư mục cục bộ và một thùng S3. Tôi muốn biết nếu có một đối số hoặc tham số có thể được sử dụng để xuất kết quả "tải lên" hoặc đồng bộ hóa vào tệp TXT cục bộ mà tôi có thể gửi email cho ai đó qua blat.exe. Tất cả điều này là để được đưa vào một tập tin thực thi cho một đồng bộ theo lịch trình của hàng ngàn tập tin sẽ được tải xuống bởi các máy chủ khác của chúng tôi. (Sử dụng thùng S3 làm nguồn đám mây để khắc phục sự cố tốc độ tải lên của máy chủ nguồn của chúng tôi) –

0

Một tệp (hoặc một phần của một tập tin) = một yêu cầu HTTP, nhưng API Java bây giờ hỗ trợ hiệu quả upload nhiều file mà không cần phải viết các xử lý đa luồng trên của riêng bạn, bằng cách sử dụng TransferManager

Các vấn đề liên quan