답변:
세 가지 옵션이 있습니다.
Amazon AWS 콘솔에서 SFTP 용 AWS 전송으로 이동 하여 새 서버를 생성하십시오.
SFTP 서버 페이지에서 새 SFTP 사용자를 추가하십시오.
사용자 권한은 IAM 서비스의 관련 AWS 역할에 의해 관리됩니다 (빠른 시작을 위해 AmazonS3FullAccess 정책을 사용할 수 있음 ).
역할은와 (과)의 신뢰 관계가 있어야합니다 transfer.amazonaws.com
.
자세한 내용은 내 가이드 Amazon S3에 대한 SFTP 액세스 설정을 참조하십시오 .
s3fs
파일 시스템 (또는 이와 유사한)을 사용하여 버킷을 Linux 서버 (예 : Amazon EC2)에 마운트하고 서버의 내장 SFTP 서버를 사용하여 버킷에 액세스하십시오.
s3fs
access-key-id:secret-access-key
에 보안 자격 증명 추가/etc/passwd-s3fs
버킷 마운팅 엔트리를 fstab
다음에 추가하십시오 .
<bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
자세한 내용은 내 가이드 Amazon S3에 대한 SFTP 액세스 설정을 참조하십시오 .
또는 "S3 클라이언트" 인 무료 "FTP / SFTP 클라이언트" 를 사용하고 서버 측에 아무것도 설정하지 않았습니다. 예를 들어, 내 WinSCP에 또는 Cyberduck .
WinSCP에는 전송을 자동화해야하는 경우 스크립팅 및 .NET / PowerShell 인터페이스도 있습니다.
root
하면 나중에 전송 permission denied
문제가 발생합니다 ec2-user
. /mnt/<bucket>
폴더는 소유 root
하고 그룹 root
도 가지고 있습니다.
allow_other
(또는 -o allow_other
s3fs 명령 줄에서 마운트하는 경우). 필자의 경우 (개인 버킷에서) 파일을 읽기 전용 권한 (-o default_acl = public-read)으로 작성하는 것이 좋습니다.
최신 정보
S3는 이제 IAM과 통합되고 aws-cli를 사용하여 관리 할 수있는 S3 용 완전 관리 SFTP 게이트웨이 서비스를 제공합니다 .
이것이 완벽한 해결책이 아닌 이론적이고 실용적인 이유가 있지만 효과가 있습니다 ...
EC2 또는 자체 데이터 센터에서 Linux 서버에 FTP / SFTP 서비스 (예 : proftpd)를 설치 한 다음 s3fs를 사용하여 ftp 서버가 chroot로 구성된 파일 시스템에 버킷을 마운트하십시오 .
S3에서 콘텐츠를 제공하는 클라이언트가 있으며 ftp 푸시 만 지원하는 타사에서 콘텐츠를 제공합니다 ... S3과 실제 파일 시스템 간의 임피던스 불일치로 인해 약간의 망설임이 있지만 적절한 FTP / S3 게이트웨이 서버 소프트웨어 패키지를 작성하는 시간 (여전히이 중 하나를 수행 할 계획 임)은 몇 개월 전에이 솔루션을 제안하고 배포했으며 시스템에 아무런 문제도보고하지 않았습니다.
보너스로, proftpd는 각 사용자를 자신의 홈 디렉토리에 chroot 할 수 있고 proftpd 사용자가 소유 한 파일이 실제로 로그인 한 사용자가 소유하고 있다고 "척"할 수 있기 때문에 각 ftp 사용자를 버킷의 "하위 디렉토리"이며 다른 사용자의 파일에 액세스 할 수 없게합니다.
그러나 기본 구성에 문제가 있습니다.
수십 또는 수백 개의 파일을 얻기 시작하면 디렉토리 목록을 가져올 때 문제가 나타납니다. ProFTPd는 .ftpaccess
디렉토리의 각 파일에 대해 반복 해서 파일 을 읽고 시도하기 때문에 , .ftpaccess
사용자가 볼 수 있는지 확인합니다.
ProFTPd에서이 동작을 비활성화 할 수 있지만 가장 올바른 구성은 -o enable_noobj_cache -o stat_cache_expire=30
s3fs에서 추가 옵션을 구성하는 것입니다 .
-o stat_cache_expire
(기본값은 만료되지 않음)통계 캐시의 항목에 만료 시간 (초)을 지정하십시오.
이 옵션을 사용하지 않으면 S3에 대한 요청이 줄어들지 만 외부 프로세스 또는 s3fs의 다른 인스턴스가 버킷의 객체를 수정하는 경우 객체에 대한 변경 사항을 항상 안정적으로 발견 할 수는 없습니다. 내 시스템에서 "30"값이 임의로 선택되었습니다.
-o enable_noobj_cache
(기본값은 비활성화입니다)존재하지 않는 오브젝트에 대해 캐시 항목을 사용 가능하게하십시오. s3fs가 존재하지 않는 디렉토리를 인식하고 파일 또는 서브 디렉토리 자체를 가지고 있기 때문에 s3fs가 일부 명령을 수행 할 때 s3fs는 항상 파일 (또는 서브 디렉토리)이 오브젝트 (경로) 아래에 있는지 확인해야합니다. ListBucket 요청이 증가하고 성능이 저하됩니다. 성능을 위해이 옵션을 지정할 수 있습니다. s3fs는 오브젝트 (파일 또는 디렉토리)가 존재하지 않는 통계 캐시에 기억합니다.
이 옵션은 s3fs가 .ftpaccess
존재하지 않았 음을 기억하도록 합니다.
위의 변경 사항으로 해결되는 ProFTPd에서 발생할 수있는 성능 문제와 관련이없는 경우 s3fs에서도 활성화해야합니다 -o enable_content_md5
.
-o enable_content_md5
(기본값은 비활성화입니다)content-md5 헤더로 멀티 파트없이 업로드 된 데이터를 확인합니다. 멀티 파트 게시없이 객체를 업로드 할 때 "Content-MD5"헤더를 보낼 수 있습니다. 이 옵션을 사용하면 작은 객체를 업로드 할 때 s3fs의 성능에 영향을 미칩니다. s3fs는 큰 객체를 업로드 할 때 항상 MD5를 확인하기 때문에이 옵션은 큰 객체에 영향을 미치지 않습니다.
이 옵션은 절대 옵션이 아니어야했던 옵션입니다.이 옵션을 사용하지 않으면 성능에 대한 무시할만한 이점에 대한 중요 무결성 검사를 무시하므로 항상 활성화해야합니다. Content-MD5:
헤더 를 사용하여 객체를 S3에 업로드하면 S3 는 체크섬의 유효성을 검사하고 전송 중에 손상된 객체를 거부합니다. 그러나 그렇지 않을 수도 있지만이 안전 점검을 비활성화하는 것은 근시안적인 것 같습니다.
인용문은 s3fs의 맨 페이지에서 제공됩니다. 문법 오류는 원문에 있습니다.
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
했습니다. 일단 마운트 된 S3 폴더의 폴더에 대한 권한을 만든 후에는 권한을 변경할 수 없습니다.
저에게 투표를 한 사람들에 대한 2014 년 답변 :
S3는 FTP가 아닙니다. 그러나 S3를 지원하는 많은 클라이언트가 있습니다.
OS X에서 주목할만한 FTP 클라이언트는 모두 Transmit 및 Cyberduck을 포함하여 지원 됩니다.
Windows를 사용하는 경우 Cyberduck 또는 CloudBerry를 살펴보십시오 .
2019 년 업데이트 된 답변 :
AWS는 최근 AWS Transfer for SFTP 서비스 를 출시했으며 원하는 서비스를 수행 할 수 있습니다.
또는 업로드 된 파일을 Amazon S3 버킷에 저장하는 AWS 인프라에서 SFTP 게이트웨이 용 Linux 인스턴스를 스핀 하십시오.
Thorntech에서 지원
먼저 S3 액세스 권한이있는 AWS 사용자에게 "액세스 키 ID"가 생성되어 있는지 확인하십시오. "비밀 액세스 키"도 알아야합니다. 액세스 키는 IAM 관리 콘솔의 사용자 페이지에서 생성 및 관리됩니다.
새 사이트 노드가 선택되어 있는지 확인하십시오.
새 사이트 노드에서 Amazon S3 프로토콜을 선택하십시오.
AWS 사용자 액세스 키 ID 및 비밀 액세스 키를 입력하십시오
저장 버튼을 사용하여 사이트 설정을 저장하십시오.
로그인 버튼을 사용하여 로그인하십시오.
Amazon은 S3 용 SFTP 서비스를 출시했지만 SFTP (FTP 또는 FTPES는 아님) 만 수행하며 상황에 따라 비용이 많이들 수 있습니다.
저는 DocEvent.io 의 창립자이며 서버를 가동 시키거나 인프라에 대해 걱정할 필요없이 S3 버킷에 FTP / S 게이트웨이를 제공합니다.
소프트웨어 구성을 통해 S3 버킷에 연결할 수있는 월별 지불 독립형 FTP 서버를 제공하는 다른 회사도 있습니다 (예 : brickftp.com) .
마지막으로 도움이 될 수있는 AWS Marketplace 앱도 있습니다 ( 여기 검색 링크 참조) . 자체 인프라에서 이러한 스핀 업 인스턴스의 대부분은 시간이 지남에 따라 유지 관리 및 구성이 어려운 인스턴스를 직접 관리하고 업그레이드해야 함을 의미합니다.
다른 포스터가 지적했듯이 AWS Transfer for SFTP 서비스에는 몇 가지 제한 사항이 있습니다. 요구 사항을 밀접하게 조정해야합니다. 예를 들어, 할당량, 화이트리스트 / 블랙리스트, 파일 유형 제한이 없으며 키 기반이 아닌 액세스에는 외부 서비스가 필요합니다. 사용자 관리 및 IAM과 관련하여 일정한 오버 헤드가 있으며, 이로 인해 규모가 커질 수 있습니다.
우리는 고객을 위해 약 5 년 동안 SFTP S3 프록시 게이트웨이 를 운영해 왔습니다 . 핵심 솔루션은 Docker 서비스 모음에 싸여 있으며 온 프레미스 또는 로컬 개발 서버 등 필요한 모든 컨텍스트에 배포됩니다. 솔루션이 데이터 처리 및 파이프 라인과 파일 공유에 중점을 두므로 사용 사례는 약간 다릅니다. Salesforce 예제에서 고객은 SFTP를 사용하여 SFTP / S3 enpoint에 이메일, 구매 ... 데이터를 전송하는 전송 방법으로 사용합니다. 이것은 S3에서 객체 키로 매핑됩니다. 도착하자마자 데이터가 수집, 처리, 라우팅 및 창고로로드됩니다. 또한 AWS의 Cloudwatch 로그가 직접 제공하지 않는 각 전송마다 상당히 중요한 감사 요구 사항이 있습니다.
다른 사람들이 언급했듯이 자신의 롤링도 옵션입니다. AWS Lightsail을 사용하면 Route 53 또는 ELB를 사용하여 $ 10 2GB 인스턴스 4 개로 클러스터를 설정할 수 있습니다.
일반적으로 AWS가이 서비스를 제공하는 것이 좋으며 시간이지나면서 성숙해지기를 기대합니다. 그러나 사용 사례에 따라 대체 솔루션이 더 적합 할 수 있습니다.