私は答えたスタックオーバーフローにこの同じ質問を。
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に置いています。