S3 (또는 유사)가 지원하는 SFTP 서버를 설정하는 방법


8

본질적으로 용량이 큰 SFTP 서버를 설정해야합니다. 파트너 중 SFTP 로그인 정보를 서버에 제공하여 수백 테라 바이트에 이르는 수백만 개의 파일을 업로드해야합니다. 그런 다음 선택적이고 이러한 파일 중 일부를 거의 읽지 않습니다. 이것은 유일한 실제 요구 사항이며 모든 기술 선택이 필요합니다.

가장 쉬운 방법은 SFTP 서버를 실행하는 일종의 EC2 인스턴스가 S3에 직접 전송되거나 어떤 종류의 프로세스가 업로드 될 때 새 파일을 발견하여 복사하는 방식으로 일종의 EC2 인스턴스를 갖도록하는 것입니다. S3, 디스크에서 삭제합니다.

이것이 최선의 방법입니까? 본질적으로 "무한하고 마술처럼 증가하는 디스크 공간"을 가진 서버를 얻는 다른 방법이 있습니까?

당신의 도움을 주셔서 감사합니다! 다니엘


3
S3에서 100TB의 데이터 전송은 거의 5,000 달러에 달합니다. "파트너"포르노의 가치는 아마도 그보다 훨씬 낮을 것입니다.
HopelessN00b

2
code.google.com/p/s3fs 가 아마도 가장 좋은 방법 일 것입니다. @ HopelessN00b는 전송 비용 외에도 동일한 100TB의 저장 비용은 $ 3k / 월입니다.
ceejayoz

2
건설적인 의견 @ HopelessN00b에 감사드립니다. 그 아이디어로 대답하지 않은 다른 사람들에게는 ... 우리는 수학을 실행했습니다. 그 양의 정보를 전송하고 보유하는 데는 많은 돈이들 것입니다. 데이터 (확실히 포르노가 아님)를 갖는 것은 우리 사업에 그만한 가치가 있습니다.
Daniel Magliola

1
좋아, 질문은 ...? AWS 인스턴스에 SFTP를 설치하는 방법은 무엇입니까? 파일을 삭제하는 스크립트를 작성하는 방법은 무엇입니까? 뭐? 설득력있는 것은 아니지만,이 "수백"TB의 데이터에 대해 한 달에 수만 달러를 지출하려는 회사는이 시스템을 설치하기 위해 몇 명의 그랜드 컨설턴트를 기꺼이 고용 할 것이라고 생각할 것입니다.
HopelessN00b

2
S3에 직접 업로드하기 위해 무언가를 설치하거나 AWS Storage Gateway와 같은 것을 설치하는 것이 비현실적인 이유에 대한 컨텍스트를 설명 할 수 있습니까? 수백 개의 테라 바이트를 로드하는 경우 스토리지에 직접 액세스 할 수있는 서버에 S3 클라이언트를 설치하는 데 약간의 시간이 소요될 수 있습니다.
thexacre

답변:


10

Stack Overflow에서 동일한 질문에 대답 했습니다 .

s3fs는 실제로 합리적인 해결책이며, 필자의 경우 이론적 / 잠재적 문제에도 불구하고 훌륭한 결과로 proftpd와 결합했습니다.

내가 답변을 썼을 때, 나는 내 컨설팅 고객 중 한 명만을 위해 이것을 설정했지만 ... 그 이후로 나 자신의 쿨 에이드를 마시기 시작했고 내 업무에서 생산에 사용하고 있습니다. Sftp 서버에서 하루 종일 업로드 및 다운로드 파일과 데이터를 교환하는 회사는 모든 것을 S3에 직접 저장합니다. 또한 엑셀 스프레드 시트를 S3에 직접 작성하는 보고서 내보내기 시스템은 보고서를 FTP 서버의 버킷에 직접 넣어서 적절한 메타 데이터와 함께 uid, gid 및 각 파일의 모드. (s3fs는 x-amz-meta-uid, -gid 및 -mode 헤더를 사용하여 파일 시스템 권한을 에뮬레이션합니다). 클라이언트가 서버에 로그온하면 보고서 파일이 바로 그 곳에 있습니다.

이상적인 솔루션은 아마도 sftp에서 S3 게이트웨이 서비스로의 sftp 일 것이라고 생각하지만,이 솔루션은 실제로 잘 작동하기 때문에 아직 설계하지 않았습니다.

s3fs의 모든 기본값이 정상인 것은 아닙니다. 다음 옵션을 지정하고 싶을 것입니다.

-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

US-Standard 이외의 영역을 사용하는 것이 가장 좋습니다. 왜냐하면 새 개체에 대해 쓰기 후 읽기 일관성을 제공하지 않는 유일한 영역이기 때문입니다. 또는 US 표준을 사용해야하는 your-bucket.s3-external-1.amazonaws.com경우 us-east-1 리전에서 거의 문서화되지 않은 호스트 이름 을 사용하여 요청이 지리적 라우팅되지 않도록하여 일관성을 향상시킬 수 있습니다.

버킷에서 객체 버전 관리를 활성화했는데 s3fs는 완전히 알지 못합니다. 이것의 장점은 파일이 "중단"되어 있어도 "버킷 버전"으로 가서 "덮어 쓰기"파일을 복구 할 수 있다는 것입니다. S3의 객체 버전 관리는 버전 관리를 인식하지 못하는 S3 클라이언트가 비활성화되거나 혼동되지 않는 방식으로 훌륭하게 설계되었습니다. 버전 관리의 개념이 없습니다.

있음을 유의하십시오 데이터 전송 S3하는 무료 데이터 전송 요금. 요청 당 요금 만 지불합니다. 지역 내에서 S3에서 EC2로 데이터를 전송해도 데이터 전송 요금이 없습니다. S3에서 인터넷, Cloudfront 또는 다른 AWS 리전으로 전송 요금을 지불하는 경우에만 가능합니다. 저렴한 저가 중복 스토리지를 사용하려면 s3fs가이를 지원합니다 -o use_rrs.

Ster는 파일 시스템이 아니라 객체 저장소라는 사실 때문에 크기의 실제 계산이 비실용적이기 때문에 256 테라 바이트의 여유 공간을 볼 때 항상 따뜻한 퍼지 느낌을 얻게됩니다. ).

$ 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

물론 버킷을 어디에나 설치할 수 있습니다. 방금 / srv / s3fs에 있습니다.


실제로 묻는 질문에 대답하지는 않지만 S3에로드하려는 테라 바이트의 데이터가 여러 개인 경우 최근에 발표 된 Amazon Import / Export Snowball 은 초기 데이터로드에 대해 고객에게 열심히 노력한 것 입니다. . 50TB SAN이 문에 배송되어로드 한 후 다시 쇼핑하면 Amazon은 데이터 전송 대역폭보다 훨씬 낮은 가격으로 데이터를로드합니다.
Michael-sqlbot

이 FTP 설정에서 웹 기반 GUI를 실행 한 경험이 있습니까? 그렇다면, 무엇이 효과가 있었거나 문제가 있었습니까?
T. Brian Jones

@ T.BrianJones 수동 편집 가능한 구성 파일이 일반적으로 제공하는 명확하고 명확한 동작을 선호하므로 내 성향은 일반적으로 GUI를 피하는 것입니다. 내 설정에는 setupftpuserProFTPd의 ftpasswd유틸리티를 호출 하여 사용자를 만들고 홈 디렉토리를 만들고 권한을 설정 하는 사용자 지정 스크립트 가 있습니다. 또한 변경하기 전에 비밀번호 파일을 백업합니다. 기존 사용자에게 전화를 걸면 사용자가 이미 프로비저닝되었음을 알리고 비밀번호를 변경할 것인지 묻습니다. 본질적으로 동일한 프로세스를 관리하는 GUI이며 잘 작성되어 있으면 괜찮습니다.
Michael-sqlbot 2016

5

AWS Marketplace 에서 SFTP 게이트웨이를 확인하십시오 .

우리는 s3fs와 관련된 신뢰성 문제를 겪었으므로이 목적을 위해 특별히 맞춤형 솔루션을 개발했습니다. 우리는 몇 년 동안 프로덕션 환경에서 문제없이 사용해 왔으며 최근에 AWS Marketplace에 배포했습니다.


이는 단방향입니다 (sftp로 업로드하면 파일을 s3에 저장하지만 더 이상 sftp에서 파일을 다운로드 할 수 없음). 또한 s3에 파일을 넣어도 sftp를 통해 사용할 수 없습니다.
Vincent De Smet

SFTP 게이트웨이에는 "다운로드"디렉토리가 있으며 S3에서 sftp 서버로 다시 동기화됩니다. 업로드 및 다운로드를 별도로 유지함으로써 관리자는 사람들이 업로드 및 다운로드 할 수있는 항목을 완전히 제어 할 수 있습니다.
Jeff

새로 추가 된 기능입니까? 이 코멘트가 거의 1 년 전에 게시되었을 때 확실히 존재하지 않았습니다
Vincent De Smet

예, 원래 게시물 이후에 추가 된 기능이었습니다. 우리는 적극적으로 유지 관리하고 서버 측 암호화 지원 및 공유 다운로드와 같은 새로운 기능을 계속 추가하고 있습니다.
Jeff

1

두 가지 옵션이 있습니다. Amazon에서 최근에 추가 한 기본 관리 SFTP 서비스를 사용할 수 있습니다 (설정하기가 더 쉽습니다). 또는 버킷을 Linux 서버의 파일 시스템에 마운트하고 SFTP를 서버의 다른 파일로 사용하여 파일에 액세스 할 수 있습니다.

관리 SFTP 서비스

  • Amazon AWS 콘솔에서 SFTP 용 AWS 전송으로 이동 하여 새 서버를 생성하십시오.

  • SFTP 서버 페이지에서 새 SFTP 사용자를 추가하십시오.

    • 사용자 권한은 IAM 서비스의 관련 AWS 역할에 의해 관리됩니다 (빠른 시작을 위해 AmazonS3FullAccess 정책을 사용할 수 있음 ).

    • 역할은와 (과)의 신뢰 관계가 있어야합니다 transfer.amazonaws.com.

자세한 내용은 내 가이드 Amazon S3에 대한 SFTP 액세스 설정을 참조하십시오 .

Linux 서버에 버킷 마운트

@Michael이 이미 응답 했으므로 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 클라이언트 사용

또는 "S3 클라이언트" 인 무료 "FTP / SFTP 클라이언트" 를 사용하고 서버 측에 아무것도 설정하지 않았습니다. 예를 들어, WinSCP에 또는 Cyberduck .


0

AWS는 이제 AWS Transfer For SFTP 라는 SFTP over S3 서비스를 제공합니다 . 잘 알려진 SFTP 프로토콜과 결합 된 S3 (고 내구성, 가용성, 분산 스토리지)의 이점이 있습니다.

기본적으로 사용자는 프라이빗 / 퍼블릭 키 페어를 사용하여 인증하고 IAM 정책을 사용하여 S3 버킷에서 SFTP 사용자에 대한 권한을 설정할 수 있습니다. AWS API Gateway 및 AWS Lambda에서 자체 기능을 구현하여 인증 체계를 추가 할 수 있습니다.

우리는 SFTP To Go 라는 Heroku 애드온에 SFTP 용 AWS Transfer를 래핑 하여 유연한 인증 체계와 낮은 TCO를 제공합니다 (서비스 엔드 포인트는 AWS에 고정 비용이 있지만 보안 또는 성능 저하.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.