Tải xuống một tập dữ liệu lớn trên web trực tiếp vào AWS S3


12

Có ai biết nếu có thể nhập một tập dữ liệu lớn vào Amazon S3 từ một URL không?

Về cơ bản, tôi muốn tránh tải xuống một tệp lớn và sau đó tải lại lên S3 thông qua cổng web. Tôi chỉ muốn cung cấp URL tải xuống cho S3 và đợi họ tải xuống hệ thống tập tin của họ. Nó có vẻ là một điều dễ dàng để làm, nhưng tôi không thể tìm thấy tài liệu về nó.


Câu hỏi tuyệt vời.
Pramit

Câu trả lời:


10

Vì bạn rõ ràng sở hữu tài khoản AWS, tôi khuyên bạn nên như sau:

  • Tạo một thể hiện EC2 (mọi kích thước)
  • Sử dụng wget (hoặc curl) để tìm nạp (các) tệp đến phiên bản EC2 đó. Ví dụ : wget http://example.com/my_large_file.csv.
  • Cài đặt s3cmd
  • Sử dụng s3cmdđể tải tệp lên S3. Ví dụ:s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv

Do các kết nối được thực hiện giữa các dịch vụ AWS khác nhau thúc đẩy mạng nội bộ của AWS, nên việc tải lên từ phiên bản EC2 lên S3 khá nhanh. Nhanh hơn nhiều so với tải lên từ máy tính của bạn. Cách này cho phép bạn tránh tải tệp xuống máy tính của mình và tiết kiệm thời gian đáng kể để tải tệp qua giao diện web.


Cảm ơn bạn. Tôi đang suy nghĩ về một cái gì đó như thế này, nhưng tôi muốn hỏi xung quanh để xem có cách nào dễ dàng hơn không. Cảm ơn đã chỉ ra tất cả các bước quá. Rất hữu ích
Will Stedden

@Daniel Zohar Nếu URL động thì sao? Sử dụng wget không tải xuống tệp mà chỉ có trang có liên kết này: cms.unov.org/UNCorpus/en/Doad?file=UNv1.0.en-zh.tar.gz.00
echan00

3
  1. Khởi chạy một thể hiện EC2 với đủ dung lượng lưu trữ

  2. ssh đến ví dụ

  3. Lấy lệnh curl tương ứng với tải xuống từ máy cục bộ của bạn. Bạn có thể sử dụng các tùy chọn nhà phát triển trong Google chrome -> tab mạng -> sao chép -> sao chép dưới dạng cuộn tròn (bước này là cần thiết cho một số trang web yêu cầu xác thực như kaggle)

  4. Từ terminal terminal, chạy curllệnh (nối -o output_filevào lệnh). Điều này sẽ tải xuống và lưu tập tin

  5. Định cấu hình thông tin đăng nhập aws để kết nối thể hiện với s3 (một cách là sử dụng lệnh aws config, cung cấp Id khóa truy cập AWS và bí mật),

  6. Sử dụng lệnh này để tải tệp lên s3:

    aws s3 cp path-to-file s3://bucket-name/
    

2

Tham khảo tài liệu Aws: http://aws.amazon.com/code có các thư viện có sẵn cho hầu hết các ngôn ngữ lập trình. Vì vậy, bạn có thể tạo một nhóm và định cấu hình trong mã của mình để tìm nạp dữ liệu từ url và ghi vào nhóm này trong s3

ví dụ như trong python:

from boto.s3.key import Key
k = Key(bucket)
k.key = 'foobar'
k.set_contents_from_string(url_data)

Tham chiếu: https://boto.readthedocs.org/en/latest/s3_tut.html


Tôi không nghĩ rằng điều này là hoàn toàn đúng. Tôi có một chút không rõ ràng về việc url_data sẽ đến từ đâu. Từ tài liệu này, k.set_contents_from_opes () dường như hoàn toàn đặt nội dung của tệp 'foobar' thành bất cứ thứ gì có trong chuỗi đó. Tôi muốn nội dung tại url đó được đẩy trực tiếp lên s3 mà không cần phải tải xuống cục bộ.
Will Stedden

1

Bạn có thể gắn thùng s3 của mình vào thể hiện ec2 và sau đó cd vào / path / to / s3_mounted_on_a_folder, ở đó bạn chỉ cần sử dụng lệnh:

wget https://your.download.url/

để gắn s3 vào ec2 của bạn, hãy sử dụng s3fs.

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.