Làm cách nào tôi có thể thiết lập máy chủ SFTP được hỗ trợ bởi S3 (hoặc tương tự)


8

Tôi cần thiết lập một máy chủ SFTP, về cơ bản, có dung lượng rất lớn. Tôi cần cung cấp cho một trong các chi tiết đăng nhập SFTP của đối tác của chúng tôi đến một máy chủ nơi họ sẽ tải lên hàng triệu tệp, tổng cộng vài trăm Terabyte. Sau đó tôi sẽ chọn lọc và khá hiếm khi đọc một số các tệp này. Đây là yêu cầu thực tế duy nhất, bất kỳ sự lựa chọn công nghệ nào cũng được chấp nhận.

Điều dễ hiểu nhất là cách dễ nhất là có một số thể hiện EC2 chạy máy chủ SFTP theo cách mà bất kỳ thứ gì được tải lên đều được gửi trực tiếp đến S3 hoặc một số quy trình phát hiện ra các tệp mới khi chúng được tải lên, sao chép chúng vào S3 và xóa chúng khỏi đĩa.

Đây có phải là cách tốt nhất? Có cách nào khác để có được một máy chủ về cơ bản có "không gian đĩa phát triển vô hạn và kỳ diệu" không?

Cảm ơn bạn đã giúp đỡ! Daniel


3
100 TB truyền dữ liệu trên S3 sẽ giúp bạn kiếm được gần 5.000 đô la. Giá trị của "đối tác" khiêu dâm của bạn có lẽ ít hơn thế nhiều.
Vô vọngN00b

2
code.google.com/p/s3fs có lẽ là đặt cược tốt nhất của bạn. Ngoài chi phí chuyển khoản @ HoplessN00b chỉ ra, cùng 100 TB sẽ khiến bạn mất 3k đô la / tháng để lưu trữ.
ceejayoz

2
Cảm ơn bình luận mang tính xây dựng của bạn @ HoplessN00b. Đối với bất kỳ ai khác có thể không được phép trả lời bởi ý tưởng đó ... Chúng tôi đã chạy toán, vâng, chuyển và giữ số lượng thông tin đó sẽ tiêu tốn của chúng tôi rất nhiều tiền. Có dữ liệu (chắc chắn không phải là khiêu dâm) là giá trị chi phí cho doanh nghiệp của chúng tôi.
Daniel Magliola

1
Được rồi, vậy câu hỏi của bạn là ...? Làm cách nào để cài đặt SFTP trên phiên bản AWS? Làm thế nào để viết một tập lệnh để xóa các tập tin? Gì? Không phải là không rõ ràng, nhưng bạn nghĩ rằng một công ty muốn chi hàng chục ngàn đô la mỗi tháng cho "vài trăm" TB dữ liệu này sẽ sẵn sàng thuê một nhà tư vấn cho một vài ông lớn để thiết lập hệ thống này cho họ.
HoplessN00b

2
Bạn có thể giải thích bối cảnh là tại sao không thực tế khi họ cài đặt thứ gì đó ở cuối để tải trực tiếp lên S3 hoặc thiết lập một cái gì đó như Cổng lưu trữ AWS không? Nếu bạn đang tải hàng trăm Terabyte thì chắc chắn họ có thể dành một chút thời gian để cài đặt ứng dụng khách S3 trên máy chủ có quyền truy cập trực tiếp vào bộ lưu trữ của họ.
thexacre 20/03/2015

Câu trả lời:


10

Tôi đã trả lời câu hỏi tương tự trên Stack Overflow .

s3fs thực sự là một giải pháp hợp lý, và trong trường hợp của tôi, tôi đã kết hợp nó với proftpd với kết quả tuyệt vời, bất chấp các vấn đề lý thuyết / tiềm năng.

Vào thời điểm tôi viết câu trả lời, tôi chỉ thiết lập điều này cho một trong những khách hàng tư vấn của mình ... nhưng kể từ đó, tôi cũng bắt đầu uống viện trợ kool của riêng mình và đang sử dụng nó trong sản xuất trong công việc hàng ngày. Các công ty chúng tôi trao đổi dữ liệu với các tệp tải lên và tải xuống cả ngày trên máy chủ sftp của tôi, nơi đang lưu trữ mọi thứ trực tiếp trên S3. Như một phần thưởng, hệ thống xuất báo cáo của tôi - viết bảng tính excel trực tiếp lên S3 - có thể xuất báo cáo "sang máy chủ FTP" bằng cách đặt chúng trực tiếp vào nhóm máy chủ ftp, với siêu dữ liệu phù hợp để hiển thị uid, gid và chế độ của từng tập tin. (s3fs sử dụng các tiêu đề x-amz-meta-uid, -gid và -mode để mô phỏng các quyền của hệ thống tập tin). Khi máy khách đăng nhập vào máy chủ, các tệp báo cáo chỉ là ... ở đó.

Tôi nghĩ rằng giải pháp lý tưởng có lẽ sẽ là một dịch vụ cổng sftp cho S3, nhưng tôi vẫn chưa có ý định thiết kế một giải pháp, vì giải pháp này hoạt động rất tốt ... dĩ nhiên là có một số cảnh báo:

Không phải tất cả các giá trị mặc định cho s3fs là lành mạnh. Bạn có thể sẽ muốn chỉ định các tùy chọn sau:

-o enable_noobj_cache   # s3fs has a huge performance hit for large directories without this enabled
-o stat_cache_expire=30 # the ideal time will vary according to your usage
-o enable_content_md5   # it's beyond me why this safety check is disabled by default

Có lẽ tốt nhất là sử dụng một khu vực khác ngoài US-Standard, bởi vì đó là khu vực duy nhất không cung cấp tính nhất quán đọc sau khi viết trên các đối tượng mới. (Hoặc, nếu bạn cần sử dụng US-Standard, bạn có thể sử dụng tên máy chủ gần như không có giấy tờ your-bucket.s3-external-1.amazonaws.comtừ khu vực us-East-1 để ngăn các yêu cầu của bạn được định tuyến địa lý, điều này có thể cải thiện tính nhất quán.)

Tôi đã kích hoạt phiên bản đối tượng trên nhóm, điều mà s3fs hoàn toàn không biết. Lợi ích của việc này là ngay cả khi một tệp sẽ bị "dậm chân", tôi luôn có thể chuyển sang phiên bản xô để khôi phục tệp "bị ghi đè". Phiên bản đối tượng trong S3 được thiết kế tuyệt vời theo cách mà các máy khách S3 không biết về phiên bản không bị vô hiệu hóa hoặc nhầm lẫn, bởi vì nếu bạn không thực hiện các cuộc gọi REST nhận biết phiên bản, các phản hồi trả về S3 tương thích với các máy khách có không có khái niệm về phiên bản.

Cũng lưu ý rằng việc truyền dữ liệu vào S3 không phải trả phí truyền dữ liệu. Bạn chỉ trả giá theo yêu cầu. Chuyển dữ liệu ra khỏi S3 vào EC2 trong một khu vực cũng không phải trả phí chuyển dữ liệu. Chỉ khi bạn chuyển từ S3 sang Internet, tới Cloudfront hoặc tới một khu vực AWS khác mà bạn phải trả phí chuyển khoản. Nếu bạn muốn sử dụng bộ lưu trữ dự phòng giảm giá thấp hơn, s3fs hỗ trợ điều đó với -o use_rrs.

Là một điều thú vị, bạn sẽ luôn có cảm giác mờ ấm khi nhìn thấy 256 terabyte dung lượng trống (và 0 được sử dụng, vì một phép tính thực tế về kích thước là không thực tế vì thực tế S3 là một kho lưu trữ đối tượng, không phải là hệ thống tệp ).

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  1.4G  6.2G  18% /
s3fs            256T     0  256T   0% /srv/s3fs/example-bucket

Tất nhiên, bạn có thể gắn thùng ở bất cứ đâu. Tôi chỉ tình cờ có nó trong / srv / s3fs.


Mặc dù nó không trả lời được câu hỏi thực sự được hỏi, nhưng nếu tôi có nhiều terabyte dữ liệu mà tôi muốn tải vào S3, Quả cầu tuyết xuất / nhập Amazon được công bố gần đây sẽ là thứ khiến khách hàng khó khăn trong việc tải dữ liệu ban đầu . Một SAN 50 TB được vận chuyển đến cửa của họ, tải nó lên, mua lại, Amazon tải dữ liệu, với giá thấp hơn nhiều so với băng thông để truyền dữ liệu.
Michael - sqlbot

Bạn có bất kỳ kinh nghiệm nào khi chạy GUI dựa trên web trên thiết lập FTP này không? Nếu có, những gì đã làm việc hoặc có vấn đề?
T. Brian Jones

@ T.BrianJones thiên hướng của tôi thường là để tránh GUI vì tôi thích hành vi rõ ràng và rõ ràng mà các tệp cấu hình có thể chỉnh sửa thủ công thường cung cấp. Đối với các thiết lập của tôi, tôi có một tập lệnh tùy chỉnh được setupftpusergọi là ftpasswdtiện ích của ProFTPd để tạo người dùng, tạo thư mục gốc và đặt quyền. Nó cũng sao lưu tập tin mật khẩu trước khi thực hiện thay đổi. Nếu được gọi trên một người dùng hiện tại, nó sẽ cho bạn biết người dùng đã được cung cấp và hỏi bạn có muốn thay đổi mật khẩu không. Một GUI quản lý về cơ bản cùng một quy trình và sẽ ổn nếu nó được viết tốt.
Michael - sqlbot

5

Kiểm tra Cổng SFTP trên Thị trường AWS .

Chúng tôi gặp vấn đề về độ tin cậy với s3fs, vì vậy chúng tôi đã phát triển một giải pháp tùy chỉnh dành riêng cho mục đích này. Chúng tôi đã sử dụng nó trong sản xuất trong vài năm mà không có vấn đề gì và gần đây đã phát hành nó cho AWS Marketplace.


lưu ý rằng đây là một chiều (tải lên sftp lưu tệp vào s3, nhưng tệp không còn có thể được tải xuống từ sftp). Ngoài ra, việc đặt các tệp trong s3 không làm cho chúng có sẵn thông qua sftp.
Vincent De Smet

Chỉ cần làm rõ ... SFTP Gateway cũng có thư mục "tải xuống" đồng bộ hóa từ S3 trở lại máy chủ sftp. Bằng cách giữ riêng các tải lên và tải xuống, bạn với tư cách là quản trị viên, có toàn quyền kiểm soát những gì mọi người có thể tải lên và tải xuống.
Jeff

Đây có phải là một tính năng mới được thêm vào? Chắc chắn không tồn tại khi bình luận này đã được đăng cách đây một năm
Vincent De Smet

Vâng, đó là một tính năng được thêm vào sau bài viết gốc này. Chúng tôi đang tích cực duy trì nó và tiếp tục thêm các tính năng mới như hỗ trợ mã hóa phía máy chủ và tải xuống được chia sẻ.
Jeff

1

Có hai lựa chọn. Bạn có thể sử dụng dịch vụ SFTP được quản lý riêng do Amazon thêm gần đây (dễ cài đặt hơn). Hoặc bạn có thể gắn thùng vào hệ thống tệp trên máy chủ Linux và truy cập các tệp bằng SFTP như bất kỳ tệp nào khác trên máy chủ (giúp bạn kiểm soát tốt hơn).

Dịch vụ SFTP được quản lý

  • Trong Bảng điều khiển AWS của Amazon, hãy chuyển đến AWS Transfer cho SFTP và tạo một máy chủ mới.

  • Trong trang máy chủ SFTP, thêm người dùng SFTP mới (hoặc người dùng).

    • Quyền của người dùng bị chi phối bởi vai trò AWS được liên kết trong dịch vụ IAM (để bắt đầu nhanh, bạn có thể sử dụng chính sách AmazonS3FullAccess ).

    • Vai trò phải có mối quan hệ tin cậy transfer.amazonaws.com.

Để biết chi tiết, hãy xem hướng dẫn của tôi Thiết lập quyền truy cập SFTP vào Amazon S3 .

Gắn thùng vào máy chủ Linux

Như @Michael đã trả lời , chỉ cần gắn thùng bằng s3fshệ thống tệp (hoặc tương tự) với máy chủ Linux (Amazon EC2) và sử dụng máy chủ SFTP tích hợp của máy chủ để truy cập nhóm.

Dưới đây là hướng dẫn cơ bản:

  • Cài đặt s3fs
  • Thêm thông tin bảo mật của bạn dưới dạng access-key-id:secret-access-keyvào/etc/passwd-s3fs
  • Thêm một mục gắn gầu vào fstab:

    <bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
    

Để biết chi tiết, hãy xem hướng dẫn của tôi Thiết lập quyền truy cập SFTP vào Amazon S3 .

Sử dụng máy khách S3

Hoặc sử dụng bất kỳ "ứng dụng khách FTP / SFTP" miễn phí nào , đó cũng là "ứng dụng khách S3" và bạn không thiết lập bất cứ điều gì ở phía máy chủ. Ví dụ: WinSCP hoặc Cyberduck của tôi .


0

AWS hiện cung cấp dịch vụ SFTP qua S3 có tên AWS Transfer For SFTP . Nó có những lợi ích của S3 (lưu trữ phân tán, có sẵn, độ bền cao) kết hợp với giao thức SFTP nổi tiếng và được thiết lập.

Theo mặc định, người dùng xác thực bằng cặp khóa riêng / chung và sử dụng các chính sách IAM, bạn có thể thiết lập quyền cho người dùng SFTP trên các thùng S3. Bạn có thể thêm các lược đồ xác thực bằng cách triển khai chức năng của riêng mình trên AWS API Gateway và AWS Lambda.

Chúng tôi đã gói AWS Transfer cho SFTP trong tiện ích bổ sung Heroku có tên SFTP To Go để cung cấp các sơ đồ xác thực linh hoạt và TCO thấp hơn (vì điểm cuối dịch vụ có chi phí cố định trên AWS, nhưng có thể được chia sẻ bởi nhiều người dùng mà không cần bảo mật hoặc thỏa hiệp hiệu suất.

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.