web-dev-qa-db-ja.com

Amazon S3バケットへのFTP / SFTPアクセス

AWSコンソールの組み込みAmazonファイル転送インターフェイスではなく、FTPまたはSFTPを使用してAmazon S3バケットに接続する方法はありますか?これはすぐに利用可能なオプションではないことを奇妙に思えます。

125
zgall1

3つの選択肢があります。

  • 最近Amazonによって追加されたネイティブの管理されたSFTPサービスを使用することができます(これはセットアップがより簡単です)。
  • あるいは、Linuxサーバー上のファイルシステムにバケットをマウントして、サーバー上の他のファイルと同じようにSFTPを使用してファイルにアクセスすることもできます(これにより、制御性が向上します)。
  • あるいは、ネイティブにS3プロトコルをサポートしている(無料の)(GUI)クライアントを使用することもできます。

マネージドSFTPサービス

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

  • SFTPサーバーページで、新しいSFTPユーザーを追加します。

    • ユーザーのアクセス許可は、IAMサービスで関連付けられているAWSロールによって管理されています(クイックスタートの場合は、AmazonS3FullAccessポリシーを使用できます)。

    • 役割はtransfer.amazonaws.comと信頼関係を持つ必要があります。

詳しくは、私のガイド Amazon S3へのSFTPアクセスの設定 を参照してください。


Linuxサーバへのマウントバケット

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クライアント」でもあり、セットアップする必要はありません。サーバー側で。たとえば、myWinSCP または Cyber​​duck .

WinSCPには スクリプトがあります。NET / PowerShellインターフェース 、転送を自動化する必要がある場合。

74
Martin Prikryl

更新

S3は S3用の完全に管理されたSFTPゲートウェイサービスを提供するようになりました IAMと統合し、aws-cliを使用して管理できます。


これが完璧なソリューションではない理論的および実用的な理由がありますが、機能します...

FTP/SFTPサービス(proftpdなど)をEC2または独自のデータセンターのLinuxサーバーにインストールできます。次に、 s3fsを使用して、ftpサーバーがchrootに設定されているファイルシステムにバケットをマウントします。

S3からコンテンツを提供するクライアントがあり、コンテンツはFTPプッシュのみをサポートするサードパーティから提供されます...そのため、(S3と実際のファイルシステム間のインピーダンスミスマッチによる)ためらいがありません適切なFTP/S3ゲートウェイサーバーソフトウェアパッケージを作成するとき(私はまだ最近のいずれかを行うつもりです)、数か月前にこのソリューションを提案して展開しましたが、システムの問題は報告されていません。

ボーナスとして、proftpdは各ユーザーを自分のホームディレクトリにchrootし、proftpdユーザーが所有するファイルが実際にログインしたユーザーによって所有されていることを「ふり」ができるので、これにより各ftpユーザーはバケットの「サブディレクトリ」であり、他のユーザーのファイルにアクセスできなくなります。


ただし、デフォルトの構成には問題があります。

ProFTPdは.ftpaccessファイルを何度も何度も読み取ろうとするため、ディレクトリリストを取得すると、数十または数百のファイルを取得し始めると、問題が顕在化します。ディレクトリ内のファイル、.ftpaccessがチェックされ、ユーザーに表示を許可するかどうかが確認されます。

ProFTPdでこの動作を無効にすることができますが、最も適切な構成は、s3fsで追加オプション-o enable_noobj_cache -o stat_cache_expire=30を構成することです。

-o stat_cache_expire(デフォルトは無期限です)

statキャッシュ内のエントリの有効期限(秒)を指定します

このオプションを使用しないと、S3へのリクエストが少なくなりますが、外部プロセスまたはs3fsの他のインスタンスもバケット内のオブジェクトを変更している場合、オブジェクトに加えられた変更を常に確実に検出できるとは限りません。私のシステムの値「30」は、いくぶんarbitrarily意的に選択されました。

-o enable_noobj_cache(デフォルトは無効)

存在しないオブジェクトのキャッシュエントリを有効にします。 s3fsは、s3fsが存在しないディレクトリを認識し、その下にファイルまたはサブディレクトリを持っているため、s3fsはオブジェクト(パス)の下にファイル(またはサブディレクトリ)が存在するかどうかを常にチェックする必要があります。 ListBucket要求が増加し、パフォーマンスが低下します。パフォーマンスのためにこのオプションを指定できます。s3fsは、オブジェクト(ファイルまたはディレクトリ)が存在しないことをstatキャッシュに記憶します。

このオプションにより、s3fsは.ftpaccessがなかったことを記憶できます。


上記の変更によって解決されるProFTPdで発生する可能性のあるパフォーマンスの問題とは関係なく、s3fsで-o enable_content_md5を有効にする必要もあります。

-o enable_content_md5(デフォルトは無効)

content-md5ヘッダーによるマルチパートなしのアップロードされたデータの検証。マルチパート投稿なしでオブジェクトをアップロードするときに「Content-MD5」ヘッダーを送信できるようにします。このオプションが有効になっている場合、小さなオブジェクトをアップロードするときのs3fsのパフォーマンスにいくつかの影響があります。 s3fsはラージオブジェクトをアップロードするときに常にMD5をチェックするため、このオプションはラージオブジェクトには影響しません。

これは決してオプションではないはずのオプションです。これを行わないと、パフォーマンス上のメリットが無視できるほど重要な整合性チェックをバイパスするため、常に有効にする必要があります。 Content-MD5:ヘッダーを使用してオブジェクトがS3にアップロードされると、S3はチェックサムを検証し、オブジェクトが転送中に破損している場合は拒否します。しかし、そうではないかもしれませんが、この安全性チェックを無効にすることは近視眼的のようです。

引用はs3fsのmanページからです。文法エラーは元のテキストにあります。

63

S3はFTPではありません。ただし、S3をサポートするクライアントはたくさんあります。

送信 および サイバーダック を含む、OS X上のほとんどすべての注目すべきFTPクライアントがサポートしています - ).

Windowsをお使いの場合は、 Cyber​​duck または CloudBerry をご覧ください。 。

20
Ryan Parman

または、AWSインフラストラクチャで SFTP Gateway のLinuxインスタンスをスピンして、アップロードしたファイルをAmazon S3バケットに保存します。

Thorntech でサポートされています

7
mitaka

Filezillaはちょうど彼らのFTPクライアントの Proバージョン をリリースしました。それは経験のように合理化されたFTPでS3バケットに接続します。私はそれを自分で使っています(所属は一切ありません)。

3
petezurich

他のポスターが指摘しているように、AWS Transfer for SFTPサービスにはいくつかの制限があります。要件を厳密に調整する必要があります。たとえば、クォータ、ホワイトリスト/ブラックリスト、ファイルタイプの制限はなく、キーベース以外のアクセスには外部サービスが必要です。ユーザー管理とIAMに関連した一定のオーバーヘッドもあり、これは規模の面で大きな問題になる可能性があります。

お客様のために、約5年間 SFTP S3プロキシゲートウェイ を運営しています。コアソリューションは、Dockerサービスのコレクションにラップされており、オンプレミスまたはローカルの開発サーバーであっても、必要なあらゆるコンテキストで展開されます。私たちのソリューションはデータ処理とパイプライン対ファイル共有に焦点を当てているので、私たちのユースケースは少し異なります。 Salesforceの例では、顧客は電子メール、購入などのデータをSFTP/S3エンポイントに送信する転送方法としてSFTPを使用します。これはS3のオブジェクトキーにマッピングされます。到着すると、データはピックアップされ、処理され、ルーティングされて倉庫にロードされます。また、CloudwatchのAWSのログには直接記載されていない、転送ごとにかなり重要な監査要件もあります。

他の人が述べたように、あなた自身を転がすことも選択肢です。 AWS Lightsailを使用すると、Route 53またはELBのいずれかを使用して、$ 10 2GBインスタンスのクラスター(4つなど)をセットアップできます。

一般的に、AWSがこのサービスを提供しているのを見るのは素晴らしいことです。ただし、ユースケースによっては、代替ソリューションが適している場合があります。

1
Thomas Spicer

WinSCpはS3プロトコルをサポートするようになりました

まず、S3のアクセス権限を持つAWSユーザーに「アクセスキーID」が作成されていることを確認してください。また、「秘密のアクセスキー」を知っておく必要があります。アクセスキーはIAM管理コンソールの[ユーザー]ページで作成および管理されます。

[新しいサイトノード]が選択されていることを確認してください。

[New site]ノードで、[Amazon S3 protocol]を選択します。

AWSユーザーのアクセスキーIDとシークレットアクセスキーを入力してください

保存ボタンを使用してサイト設定を保存します。

ログインボタンを使用してログインします。

1
Subrata Fouzdar

AmazonはS3用のSFTPサービスをリリースしましたが、それらはSFTPのみを行い(FTPやFTPESはしません)、それらはあなたの状況次第で法外な費用がかかる可能性があります。

私は DocEvent.io の創設者です、そして私たちはあなたのS3バケットのためにFTP/Sゲートウェイを提供します。

ソフトウェアの設定を通じてS3バケットに接続できる、月ごとに支払うスタンドアロンFTPサーバーを提供している会社もあります。 brickftp.com .

最後に、役に立つことができるAWSマーケットプレイスのアプリもいくつかあります。 ここに検索リンクがあります 。これらの多くはあなた自身のインフラの中でインスタンスをスピンアップします - これはあなたがインスタンスを自分で管理しアップグレードしなければならないことを意味します。

0
Mariusz