Truy cập FTP / SFTP vào Nhóm Amazon S3 [đã đóng]


146

Có cách nào để kết nối với nhóm Amazon S3 bằng FTP hoặc SFTP thay vì giao diện truyền tệp Amazon tích hợp trong bảng điều khiển AWS không? Có vẻ kỳ lạ rằng đây không phải là một lựa chọn có sẵn.


2
AWS phát hành vào tháng 11 năm 2018 Dịch vụ SFTP được quản lý hoàn toàn cho phép chuyển các tệp trực tiếp vào và ra khỏi Amazon S3. Chuyển AWS cho SFTP
mitaka

Câu trả lời:


100

Có ba 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).
  • Hoặc bạn chỉ có thể sử dụng máy khách (GUI) hỗ trợ giao thức S3 (miễn phí).

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

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 (ví dụ Amazon EC2) và sử dụng máy chủ SFTP tích hợp của máy chủ để truy cập nhóm.

  • Cài đặt s3fs
  • Thêm thông tin bảo mật của bạn trong một hình thức access-key-id:secret-access-keyđể/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 .

WinSCP thậm chí còn có kịch bảngiao diện .NET / PowerShell , nếu bạn cần tự động hóa việc chuyển tiền.


2
Có thùng được gắn như là vấn đề rootchuyển sau này permission deniedkhi kết nối với ec2-userqua SFTP. /mnt/<bucket>thư mục được sở hữu bởi rootvà có nhóm rootlà tốt.
elvismdev

1
@elvismdev / other - Mount as ftp user (sử dụng tùy chọn uid / gid) và đảm bảo rằng nó được gắn với allow_other(hoặc -o allow_othernếu gắn từ dòng lệnh s3fs) .. hoạt động với tôi. Bạn cũng nên viết các tệp dưới dạng quyền chỉ đọc (-o default_acl = public-read) trong trường hợp của tôi (trên một thùng riêng).
bshea

66

Cập nhật

S3 hiện cung cấp Dịch vụ Cổng SFTP được quản lý hoàn toàn cho S3 tích hợp với IAM và có thể được quản lý bằng aws-cli.


Có những lý do thực tế và lý thuyết tại sao đây không phải là một giải pháp hoàn hảo, nhưng nó hoạt động ...

Bạn có thể cài đặt dịch vụ FTP / SFTP (chẳng hạn như proftpd) trên máy chủ linux, trong EC2 hoặc trong trung tâm dữ liệu của riêng bạn ... sau đó gắn một thùng vào hệ thống tệp nơi máy chủ ftp được cấu hình để chroot, sử dụng s3fs .

Tôi có một khách hàng phục vụ nội dung ngoài S3 và bên thứ 3 cung cấp cho họ, những người chỉ hỗ trợ đẩy ftp ... vì vậy, với một chút do dự (do sự không khớp giữa trở kháng giữa S3 và hệ thống tệp thực tế) nhưng thiếu Thời gian để viết gói phần mềm máy chủ cổng FTP / S3 thích hợp (mà tôi vẫn dự định thực hiện một trong những ngày này), tôi đã đề xuất và triển khai giải pháp này cho họ vài tháng trước và họ không báo cáo bất kỳ vấn đề nào với hệ thống.

Như một phần thưởng, vì proftpd có thể chroot mỗi người dùng vào thư mục nhà riêng của họ và "giả vờ" (theo như người dùng có thể nói) rằng các tệp do người dùng proftpd sở hữu thực sự thuộc sở hữu của người dùng đã đăng nhập, điều này phân tách từng người dùng ftp vào một "thư mục con" của nhóm và làm cho các tệp của người dùng khác không thể truy cập được.


Có một vấn đề với cấu hình mặc định, tuy nhiên.

Khi bạn bắt đầu nhận được vài chục hoặc hàng trăm tệp, vấn đề sẽ tự biểu hiện khi bạn kéo danh sách thư mục, vì ProFTPd sẽ cố đọc các .ftpaccesstệp này, lặp đi lặp lại và lặp lại, và cho từng tệp trong thư mục, .ftpaccessđược kiểm tra để xem nếu người dùng nên được phép xem nó.

Bạn có thể vô hiệu hóa hành vi này trong ProFTPd, nhưng tôi sẽ đề xuất rằng cấu hình chính xác nhất là định cấu hình các tùy chọn bổ sung -o enable_noobj_cache -o stat_cache_expire=30trong s3fs:

-o stat_cache_expire (mặc định là không hết hạn)

chỉ định thời gian hết hạn (giây) cho các mục trong bộ đệm stat

Nếu không có tùy chọn này, bạn sẽ thực hiện ít yêu cầu hơn cho S3, nhưng bạn cũng sẽ không luôn luôn phát hiện ra các thay đổi được thực hiện cho các đối tượng nếu các quy trình bên ngoài hoặc các phiên bản khác của s3fs cũng đang sửa đổi các đối tượng trong nhóm. Giá trị "30" trong hệ thống của tôi được chọn tùy ý.

-o enable_noobj_cache (mặc định là vô hiệu hóa)

cho phép các mục bộ đệm cho đối tượng không tồn tại. s3fs luôn phải kiểm tra xem tệp (hoặc thư mục con) có tồn tại dưới đối tượng (đường dẫn) hay không khi s3fs thực hiện một số lệnh, vì s3fs đã nhận ra một thư mục không tồn tại và có tệp hoặc thư mục con bên dưới. Nó làm tăng yêu cầu ListBucket và làm cho hiệu suất kém. Bạn có thể chỉ định tùy chọn này cho hiệu suất, s3fs ghi nhớ trong stat cache mà đối tượng (tệp hoặc thư mục) không tồn tại.

Tùy chọn này cho phép s3fs nhớ rằng .ftpaccesskhông có ở đó.


Không liên quan đến các vấn đề hiệu suất có thể phát sinh với ProFTPd, được giải quyết bằng các thay đổi ở trên, bạn cũng cần bật -o enable_content_md5trong s3fs.

-o enable_content_md5 (mặc định là vô hiệu hóa)

xác minh dữ liệu đã tải lên mà không cần nhiều phần tử theo tiêu đề content-md5. Cho phép gửi tiêu đề "Content-MD5" khi tải lên một đối tượng mà không cần đăng nhiều trang. Nếu tùy chọn này được bật, nó có một số ảnh hưởng đến hiệu suất của s3fs khi tải lên đối tượng nhỏ. Vì s3fs luôn kiểm tra MD5 khi tải lên đối tượng lớn, tùy chọn này không ảnh hưởng đến đối tượng lớn.

Đây là một tùy chọn không bao giờ nên là một tùy chọn - nó phải luôn được bật, bởi vì không thực hiện điều này bỏ qua kiểm tra tính toàn vẹn quan trọng chỉ vì lợi ích hiệu suất không đáng kể. Khi một đối tượng được tải lên S3 bằng một Content-MD5:tiêu đề, S3 sẽ xác nhận tổng kiểm tra và từ chối đối tượng nếu nó bị hỏng trong quá trình vận chuyển. Tuy nhiên, điều đó dường như không thể xảy ra, có vẻ như thiển cận để vô hiệu hóa kiểm tra an toàn này.

Trích dẫn từ trang người đàn ông của s3fs. Lỗi ngữ pháp là trong văn bản gốc.


4
bạn có thể giải thích lý do tại sao giải pháp này không lý tưởng?
fernio

2
@MarcoMarsala các bản sửa lỗi cho các thư mục lớn đã được thêm vào câu trả lời.
Michael - sqlbot 18/2/2015

1
@ Michael-sqlbot bạn đã thử sử dụng chỉ thị "AllowOverride off" trong cấu hình ProFTPd để làm cho nó ngừng cố gắng đọc hoàn toàn các tệp ".ftpaccess" chưa?
Greg Dubicki

1
Tôi đã thử mọi thứ và chỉ có thể đặt người dùng: nhóm / quyền ở cấp thư mục nơi thùng S3 được gắn kết. Sau đó, các quyền đó truyền xuống mọi thư mục trên S3. Tôi đã thử nhiều thứ bao gồm nhiều biến thể trong lệnh S3FS này sudo s3fs bucket-name /local-mount-folder-name/ -o iam_role=sftp-server -o allow_other -o umask=022 -o uid=501 -o gid=501- Tôi không thể thay đổi bất kỳ quyền nào trên các thư mục trong thư mục Mounted S3 khi nó được tạo.
T. Brian Jones

1
@Sverre Tôi vẫn sử dụng giải pháp này trong sản xuất. Nó không cho tôi bất kỳ vấn đề.
Michael - sqlbot

24

Trả lời từ năm 2014 cho những người bỏ phiếu cho tôi:

Chà, S3 không phải là FTP. Tuy nhiên, có rất nhiều khách hàng hỗ trợ S3.

Khá nhiều ứng dụng khách FTP đáng chú ý trên OS X đều có hỗ trợ, bao gồm cả TransmitCyberduck .

Nếu bạn đang ở trên Windows, hãy xem Cyberduck hoặc Cloud BlackBerry .

Cập nhật câu trả lời cho năm 2019:

AWS gần đây đã phát hành dịch vụ AWS Transfer cho SFTP , có thể làm những gì bạn đang tìm kiếm.


2
Cyberduck hoạt động cực kỳ dễ dàng nếu bạn là người mới sử dụng máy chủ như tôi. Chỉ cần nhấp vào Mở kết nối, chọn S3 từ danh sách thả xuống và nhập thông tin đăng nhập của tôi. Dễ dàng hơn nhiều so với một số tùy chọn được đề cập ở trên!
Marquizzo

7

Hoặc quay phiên bản Linux cho SFTP Gateway trong cơ sở hạ tầng AWS của bạn để lưu các tệp đã tải lên vào nhóm Amazon S3 của bạn.

Được hỗ trợ bởi Thorntech


2
Chúng tôi đã sử dụng Cổng SFTP trong sản xuất cho các dự án lớn trong vài năm. Chúng tôi đã tìm thấy nó đáng tin cậy hơn s3fs
Jeff

3

Filezilla vừa phát hành phiên bản Pro của máy khách FTP của họ. Nó kết nối với các thùng S3 trong trải nghiệm FTP được sắp xếp hợp lý. Tôi sử dụng nó cho mình (không liên kết gì) và nó hoạt động rất tốt.


3

WinSCp hiện hỗ trợ giao thức S3

Trước tiên, hãy đảm bảo rằng người dùng AWS của bạn có quyền truy cập S3 có ID Truy cập ID ID được tạo. Bạn cũng phải biết khóa truy cập Secret Secret. Các khóa truy cập được tạo và quản lý trên trang Người dùng của Bảng điều khiển quản lý IAM.

Đảm bảo nút trang web mới được chọn.

Trên nút Trang web mới, chọn giao thức Amazon S3.

Nhập ID khóa truy cập người dùng AWS của bạn và Khóa truy cập bí mật

Lưu cài đặt trang web của bạn bằng nút Lưu.

Đăng nhập bằng nút Đăng nhập.


2

Amazon đã phát hành dịch vụ SFTP cho S3, nhưng họ chỉ thực hiện SFTP (không phải FTP hoặc FTP) và chúng có thể bị cấm chi phí tùy thuộc vào hoàn cảnh của bạn.

Tôi là người sáng lập của DocEvent.io và chúng tôi cung cấp Cổng FTP / S cho nhóm S3 của bạn mà không phải quay vòng máy chủ hoặc lo lắng về cơ sở hạ tầng.

Ngoài ra còn có các công ty khác cung cấp một máy chủ FTP độc lập mà bạn phải trả theo tháng có thể kết nối với nhóm S3 thông qua cấu hình phần mềm, ví dụ như brickftp.com .

Cuối cùng, cũng có một số ứng dụng AWS Marketplace có thể trợ giúp, đây là liên kết tìm kiếm . Nhiều trong số các trường hợp này trong cơ sở hạ tầng của riêng bạn - điều này có nghĩa là bạn sẽ phải tự mình quản lý và nâng cấp các phiên bản có thể khó bảo trì và định cấu hình theo thời gian.


DocEvents có vẻ tốt nhưng có quá nhiều hạn chế đối với gói miễn phí ... Tôi thậm chí không thể thử dịch vụ này ...
D.Dimitrioglo

1

Như các áp phích khác đã chỉ ra, có một số hạn chế với dịch vụ AWS Transfer cho dịch vụ SFTP. Bạn cần phải sắp xếp chặt chẽ các yêu cầu. Ví dụ: không có hạn ngạch, danh sách trắng / danh sách đen, giới hạn loại tệp và truy cập không dựa trên khóa yêu cầu các dịch vụ bên ngoài. Ngoài ra còn có một chi phí nhất định liên quan đến quản lý người dùng và IAM, có thể gây khó khăn ở quy mô.

Chúng tôi đã chạy Cổng Proxy SFTP S3 được khoảng 5 năm cho khách hàng của chúng tôi. Giải pháp cốt lõi được gói gọn trong một tập hợp các dịch vụ Docker và được triển khai trong bất kỳ bối cảnh nào là cần thiết, ngay cả các máy chủ phát triển tại chỗ hoặc tại chỗ. Trường hợp sử dụng đối với chúng tôi hơi khác một chút vì giải pháp của chúng tôi là tập trung xử lý dữ liệu và đường ống so với chia sẻ tệp. Trong ví dụ về Salesforce, một khách hàng sẽ sử dụng SFTP làm phương thức vận chuyển gửi email, mua ... dữ liệu đến một điểm dừng SFTP / S3. Đây là ánh xạ một khóa đối tượng trên S3. Khi đến nơi, dữ liệu được chọn, xử lý, định tuyến và tải vào kho. Chúng tôi cũng có các yêu cầu kiểm toán khá quan trọng đối với mỗi lần chuyển, một điều mà Cloudwatch ghi lại cho AWS không trực tiếp cung cấp.

Như những người khác đã đề cập, lăn của riêng bạn cũng là một lựa chọn. Sử dụng AWS Lightsail, bạn có thể thiết lập một cụm, ví dụ 4, trong số 10 đô la 2 GB phiên bản bằng cách sử dụng Tuyến 53 hoặc ELB.

Nói chung, thật tuyệt khi thấy AWS cung cấp dịch vụ này và tôi hy vọng nó sẽ trưởng thành theo thời gian. Tuy nhiên, tùy thuộc vào trường hợp sử dụng của bạn, các giải pháp thay thế có thể phù hợp hơ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.