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.
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.
Câu trả lời:
Có ba lựa chọn.
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 .
Chỉ cần gắn thùng bằng s3fs
hệ 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.
s3fs
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 .
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ản và giao diện .NET / PowerShell , nếu bạn cần tự động hóa việc chuyển tiền.
root
chuyển sau này permission denied
khi kết nối với ec2-user
qua SFTP. /mnt/<bucket>
thư mục được sở hữu bởi root
và có nhóm root
là tốt.
allow_other
(hoặc -o allow_other
nế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).
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 .ftpaccess
tệ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=30
trong 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 .ftpaccess
khô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_md5
trong 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.
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.
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ả Transmit và Cyberduck .
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.
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
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.
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.
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.
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.