AWS Transfer for SFTP ローカルとS3間をSFTPでやり取りする


初めに

以前投稿したこちらの記事は、プロトコルは HTTPS でした。SFTP でやり取りしたかったので良いサービスがないか探してみたところ、Transfer for SFTP というサービスによって実現できることがわかりました。こちらのサーバー作成から接続手順について書きました。

Transfer for SFTP

  • AWS ストレージサービスとの間でファイルを転送するためのセキュアな転送サービス

  • 以下の AWS ストレージサービスとの間でデータの転送をサポート

    • S3
    • EFS
  • 次のプロトコルによるデータ転送をサポート

    • SFTP
    • FTPS
    • FTP

サーバー作成手順

SFTP を選択します。

「サービスマネジメント」を選択します。

「パブリックアクセス可能」を選択します。

「Amazon S3」を選択します。

ログ記録用に「新しいロールの作成」を選択します。暗号化アルゴリズムはデフォルトのものを選択します。

「サーバーホストキー」は空のまま「次へ」を選択します。

以下のようにサーバーが立ち上がりました。

ユーザー作成手順

サーバーにユーザーを登録します。今立ち上げたサーバーを選択し「ユーザーを追加」を選択します。

次のような画面に遷移しますので、別タブでこのユーザーの IAM ロールを作成します。

ユースケースには「Transfer」を選択します。

ポリシーは 「AmazonS3FullAccess」を選択し、ロールを作成します。

先ほどのユーザー作成画面に戻り、任意のユーザー名を入力し、「ロール」には先ほど作成したロールを選択します。ユーザーに適用する「ポリシー」は「なし」を選択します。ログイン後のホームディレクトリは接続したい S3 バケットを選択します。オプションでログイン後のフォルダを選択することができます。今回は空のまま進めます。

SSH で接続するための公開鍵と秘密鍵を作成するために EC2 インスタンスを起動します。鍵が作成できればよいので、ローカルマシンでも構いません。以下のコマンドを実行します。

ssh-keygen -P "" -m PEM -f transfer_key

transfer_key という秘密鍵と transfer_key.pub という公開鍵がカレントディレクトリに作成されます。秘密鍵には pem という拡張子を付けておき、ローカルフォルダに格納します。秘密鍵は作成したSFTP サーバーにログインする際に必要になります。

mv transfer_key transfer_key.pem

公開鍵の中身を丸ごとコピーします。

コピーした公開鍵の中身を「SSH パブリックキー」に貼り付けます。その後「追加」を選択するとユーザー作成完了です。

SSH 接続手順

サーバーのエンドポイントをコピーします。

winSCP を起動し、コピーしたエンドポイントを「ホスト名」に貼り付けます。「ユーザー名」には作成したユーザー名を入力します。パスワードは空のままにします。「設定」を選択します。

ローカルフォルダに保存した秘密鍵を選択します。鍵の変換には「OK」を選択します。

以下の確認ポップアップ画面が出ますが、「はい」を選択します。

以下の警告が出ますが、「はい」を選択します。

接続に成功しました。

参考記事