S3(または同様のもの)によってサポートされているSFTPサーバーを設定するにはどうすればよいですか?


8

基本的に容量が非常に大きいSFTPサーバーをセットアップする必要があります。パートナーの1人に、数百テラバイトのファイルをアップロードするサーバーへのSFTPログイン詳細を提供する必要があります。次に、選択的で、これらのファイルの一部を読み取ることはほとんどありません。これが唯一の実際の要件であり、どのテクノロジーを選択するかは自由です。

最も簡単な方法として頭に浮かぶのは、アップロードされたものが直接S3に送信されるように、または何らかのプロセスがアップロードされたときに新しいファイルを検出してそれらをS3、それらをディスクから削除します。

これは最善の方法ですか?基本的に「無限で魔法のように増大するディスク領域」を持つサーバーを取得する他の方法はありますか?

ご協力いただきありがとうございます!ダニエル


3
S3での100 TBのデータ転送では、ほぼ5,000ドルが実行されます。あなたの「パートナー」のポルノの価値はおそらくそれよりはるかに少ないでしょう。
HopelessN00b

2
code.google.com/p/s3fsがおそらく最善の策です。転送コストに加えて、@ HopelessN00bが指摘するように、その同じ100 TBは、保存に月額$ 3kかかります。
ceejayoz 2015年

2
あなたの建設的なコメント@ HopelessN00bをありがとう。その考えに答えることを思いとどまらせたかもしれない他の誰にとっても...私たちは数学を実行しました、はい、その量の情報を転送して保持することは私たちに多くのお金を要します。データ(確かにポルノではない)を持っていることは、私たちのビジネスにとってそのコストの価値があります。
Daniel Magliola、2015年

1
さて、あなたの質問は...?AWSインスタンスにSFTPをインストールするにはどうすればよいですか?ファイルを削除するスクリプトを作成する方法は?何?細心の注意を払う必要はありませんが、この「数百」TBのデータに1か月に数万ドルを費やしたいと考えている企業は、このシステムを設定するためにコンサルタントを雇うことをいとわないでしょう。
HopelessN00b

2
S3に直接アップロードするためにエンドに何かをインストールするか、AWS Storage Gatewayのようなものをセットアップするのが非現実的である理由についてコンテキストを説明できますか?数百テラバイトのデータをロードしている場合は、ストレージに直接アクセスできるサーバーにS3クライアントをインストールするのに少しの時間を費やす余裕があります。
thexacre 2015年

回答:


10

私は答えたスタックオーバーフローにこの同じ質問を

s3fsは確かに合理的な解決策であり、私の場合、理論的/潜在的な問題にもかかわらず、私はそれをproftpdと組み合わせて優れた結果を得ました。

回答を書いた時点では、これはコンサルティングクライアントの1つにのみ設定していたのですが、それ以来、自分のクールエイドを飲み始め、日常業務で本番環境で使用しています。S3にすべてを直接保存している私のsftpサーバーで、アップロードファイルやダウンロードファイルと1日中データを交換している会社。おまけとして、Excelスプレッドシートを直接S3に書き込むレポートエクスポートシステムは、レポートをFTPサーバーのバケットに直接配置するだけで、uid、gid、および各ファイルのモード。(s3fsは、x-amz-meta-uid、-gid、および-modeヘッダーを使用して、ファイルシステムのアクセス許可をエミュレートします)。クライアントがサーバーにログオンすると、レポートファイルはただそこにあります。

理想的なソリューションはおそらくsftpからS3へのゲートウェイサービスだと思いますが、このソリューションは非常にうまく機能するため、まだ設計していません...もちろん、いくつかの注意点があります:

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-Standardを使用する必要がある場合は、ほとんど文書化されていないホスト名your-bucket.s3-external-1.amazonaws.comをus-east-1リージョンから使用して、リクエストがジオルーティングされるのを防ぎ、一貫性を向上させることができます。)

バケットでオブジェクトのバージョニングを有効にしていますが、s3fsでは完全に認識されません。これの利点は、ファイルが「踏みにじられる」必要がある場合でも、いつでもバケットのバージョン管理に移動して「上書きされた」ファイルを回復できることです。S3のオブジェクトのバージョニングは、バージョニングを認識しないS3クライアントが決して無効になったり混乱したりしないように見事に設計されています。バージョニングを認識するREST呼び出しを行わない場合、S3が返す応答は、バージョン管理の概念はありません。

ことにも注意してくださいデータを転送する S3は無料で、データ転送料の。リクエストごとの料金のみを支払います。S3からEC2にリージョン内でデータを転送する場合も、データ転送料金はかかりません。転送料金を支払うのは、S3からインターネット、Cloudfront、または別のAWSリージョンに転送する場合のみです。低価格の冗長性の低いストレージを使用する場合、s3fsはでサポートし-o use_rrsます。

おかしなことに、256テラバイトの空き領域(および0が使用されていることがわかります)は、S3がファイルシステムではなくオブジェクトストアであるため、実際のサイズの計算が非現実的であるため、常に温かみのあるぼやけた感じになります。 )。

$ 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にロードしたかったことを、データの複数のテラバイトを持っていた場合、尋ねられた質問に答えていませんが、最近発表されたアマゾンのインポート/エクスポート]スノーボールは、私は、クライアントを売り込むだろう何だろうハードの初期データロードのために。50 TBのSANがドアに出荷され、ロードされ、購入されます。Amazonは、データを転送する帯域幅よりもはるかに低い価格でデータをロードします。
マイケル-sqlbot 2015年

このFTPセットアップの上でWebベースのGUIを実行した経験はありますか?はいの場合、何が機能しているか、問題がありますか?
T.ブライアンジョーンズ

@ T.BrianJones手動で編集可能な構成ファイルが通常提供する明確で明白な動作を好むため、私の傾向は通常GUIを回避することです。私のセットアップでは、setupftpuserProFTPdのftpasswdユーティリティを呼び出してユーザーを作成し、ホームディレクトリを作成し、権限を設定するというカスタムスクリプトを使用しています。また、変更を行う前にパスワードファイルをバックアップします。既存のユーザーで呼び出された場合、そのユーザーはすでにプロビジョニングされていることを通知し、パスワードを変更するかどうかを尋ねます。基本的に同じプロセスを管理するGUIであり、適切に記述されていれば問題ありません。
マイケル-sqlbot 2016

5

AWS MarketplaceでSFTPゲートウェイを確認してください。

s3fsで信頼性の問題が発生したため、この目的専用のカスタムソリューションを開発しました。私たちは問題なく数年間本稼働で使用しており、最近AWSマーケットプレイスにリリースしました。


これは一方向であることに注意してください(sftpにアップロードするとファイルがs3に保存されますが、ファイルをsftpからダウンロードできなくなります)。また、ファイルをs3に配置しても、sftpを介してそれらを使用できるようにはなりません。
Vincent De Smet 2017

明確にするために... SFTPゲートウェイには、S3からsftpサーバーに同期する「ダウンロード」ディレクトリもあります。アップロードとダウンロードを別々にしておくことで、管理者は、ユーザーがアップロードおよびダウンロードできる内容を完全に制御できます。
ジェフ

これは新しく追加された機能ですか?このコメントが1年ほど前に投稿されたときには、確かに存在していませんでした
Vincent De Smet

はい、それはこの元の投稿の後に追加された機能でした。私たちは積極的にそれを維持し、サーバー側の暗号化サポートや共有ダウンロードなどの新機能を追加し続けています。
Jeff

1

2つのオプションがあります。最近Amazonによって追加されたネイティブのマネージドSFTPサービスを使用できます(セットアップが簡単です)。または、バケットをLinuxサーバー上のファイルシステムにマウントし、サーバー上の他のファイルと同様にSFTPを使用してファイルにアクセスすることもできます(これにより、制御が強化されます)。

マネージドSFTPサービス

  • Amazon AWSコンソールで、AWS Transfer for SFTPに移動し、新しいサーバーを作成します。

  • 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クライアントを使用

または、無料の「FTP / SFTPクライアント」を使用します。これは「S3クライアント」でもあり、サーバー側で何もセットアップしていません。たとえば、私の WinSCPCyber​​duckです。


0

AWSは、AWS Transfer For SFTPと呼ばれるSFTP over S3サービスを提供するようになりました。S3(耐久性が高く、利用可能な分散ストレージ)と、よく知られ確立されているSFTPプロトコルを組み合わせた利点があります。

デフォルトでは、ユーザーは秘密鍵と公開鍵のペアを使用して認証し、IAMポリシーを使用して、S3バケットでSFTPユーザーのアクセス許可を設定できます。AWS API GatewayとAWS Lambdaに独自の機能を実装することで、認証スキームを追加できます。

AWS FTP Transfer for SFTPは、SFTP To Goと呼ばれるHerokuアドオンにラップされており、柔軟な認証スキームと低いTCOの両方を提供します(サービスエンドポイントはAWSで固定コストですが、セキュリティなしで多くのユーザーと共有できます。パフォーマンスの妥協。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.