BeeX Tech blog

BeeXではクラウドネイティブアプリ開発、企業の基幹クラウド基盤構築、システム移行、運用保守を行っています。

WinSCPを用いてTransfer Family→S3にSFTPでファイル転送する手順 ~➀基本編~


BeeXの榊原です。今回はタイトル内容の環境を構築する手順をまとめます。本記事ではTransfer Family for SFTPにフォーカスを当て、基本的な下記リソースの構築手順は省略します。

・VPC
・サブネット
・ルートテーブル
・SFTPエンドポイント用セキュリティグループ(SFTPサーバーにアクセスするIPを絞る)
・EIP(SFTPサーバー用)
・S3バケット
・SFTPユーザー用IAMロール(S3へのPutができればOK)
・SFTPサーバー用のCloudWatchロググループ(これだけは構築中に作成できるので事前になくても可)

SFTP通信用のSSH鍵の作成手順も今回は省略します。自分はPuTTYgenで作成しました。

また、今回はWinSCPを使用していますが、Transfer Familyは下記のクライアントに対応しています。

・SFTP プロトコルのバージョン 3 をサポートしています。
・OpenSSH (macOS および Linux)
・WinSCP (Microsoft Windows のみ)
・サイバーダック (Windows、macOS、Linux)
・FileZilla (Windows、macOS、Linux)
(参考URL)クライアントを使用してサーバーエンドポイント経由でファイルを転送する

構成図

構築手順

SFTPサーバー作成

AWSコンソールからTransfer Familyの画面を開き、「サーバーを作成」を押下します。

今回はSFTPで通信するので「SFTP」を選択後、「次へ」を押下します。

IDプロバイダーは「サービスマネージド」のまま「次へ」を押下します。

エンドポイントのタイプですが、今回は通信元を絞りたいかつ、インターネットからでもSFTPサーバーにアクセスできるようにしたいため、エンドポイントタイプは「VPCでホスト」、アクセスは「インターネット向け」を選択します。エンドポイントごとの特徴について知りたい方はAWSのre:Post記事をご覧ください。その後事前に用意したVPC、サブネット、EIP、セキュリティグループはここで入力します。全て入力したら「次へ」を押下します。

今回はS3にアクセスするのでS3のままで「次へ」を押下します。

ロググループは用意したものを選択しても、この画面で新規作成してもどちらでも構いません。マネージドワークフローは今回設定しません。

暗号化アルゴリズムのオプション、サーバーホストキー、最適化されたディレクトリについてはデフォルトのままです。タグはNameタグだけつけました。

WinSCPを用いたファイル転送では、本ケースではsetstatエラーが発生するため、追加設定のSetStatオプションを有効化しています。詳しくはAWSドキュメントをご覧ください。

一部のSFTPファイル転送クライアントは、ファイルのアップロードSETSTAT時などのコマンドを使用して、タイムスタンプやアクセス許可など、リモートファイルの属性を変更しようとします。ただし、これらのコマンドは Amazon S3 などのオブジェクトストレージシステムと互換性がありません。この非互換性が原因で、これらのクライアントからファイルをアップロードする際に、ファイルが正常にアップロードされた場合でもエラーが発生する可能性があります

その他の値はデフォルトのままで「次へ」を押下します。

画面は省略しますが、確認画面が出るので内容に問題がなければ「サーバーを作成」を押下します。しばらく待つと下記画面のようにファイルサーバーが表示されます。状態がオンラインになれば構築完了です。

次にこのSFTPサーバーにアクセスするためのユーザーを作成します。

ユーザー作成

作成したSFTPサーバーの画面から「ユーザーを追加」を押下します。この画面で表示される、エンドポイントの値は後で使うのでメモしましょう

任意のユーザー名、ユーザー用のIAMロール、アクセスしたいS3バケットとディレクトリを選択します。SSHパブリックキーはPuTTYgenで鍵を作成した場合は、作成時に貼り付け用のテキストが出るので、それを貼り付けます。詳しくはこちらの記事をご参照ください。全て入力を終えたら「追加」を押下します。

画面のようにユーザー情報が登録されたらユーザー作成完了です。

ここから実際にWinSCPでS3にファイルを転送します。

S3へのデータ転送

WinSCPをダウンロードしていない方はこちらからダウンロードしてください。WinSCPを立ち上げたら転送プロトコルをSFTP、ホスト名に先ほどメモしたエンドポイントを、ポート番号は22を、ユーザ名は先ほど作成したユーザ名を入力し、「設定」を押下します。

画面が切り替わりますのでサイドバーから「認証」を押下し、「...」を押下します。ここで作成した秘密鍵を選択します。その後「OK」を押下します。


その後「ログイン」を押下します。


画面が切り替わるので、「承認」を選択します。


その後鍵を作成した際のパスフレーズを入力し、「OK」を押下します。


その後左にローカル環境、右にS3環境のディレクトリが表示されます。あとは転送したいファイルをドラッグアンドドロップすれば、簡単にファイルを送信できます。


手順は以上です。

最後に

今回はTransfer Familyを用いてSFTPでS3にローカルからファイルを送信する手順について解説しました。ただ、送信したいファイルを1つ1つ手作業でやるのは手間であるケースが多くあることでしょう。そこで次回記事ではファイルを一括送信する方法について解説します。ここまでお読みいただきありがとうございました。

www.beex-inc.com