こんにちは。技術ブログ担当アイダです。突然ですが、皆さんはファイル交換する際どんなサービスやプロトコルで行ってますか?最近ではGoogleドライブやiCloud等のクラウドストレージサービス、S3に代表されるオブジェクトストレージを利用されている方も多いと思います。
一方、インターネット初期の頃から用されているファイル転送プロトコルといえば FTP(File Transfer Protocol)となりますね。
しかしFTPは通信が暗号化されていないことからリスクが伴います。そこで、インターネット上で安全にファイル転送できるように生まれたプロトコルが、Secure Shell (SSH) File Transfer Protocol、SFTPです。
File Transfer Protocol - Wikipedia
今回はこのSFTPサーバを簡単に構築できるAWSサービスについて、リサーチテクノロジー本部リサーチシステム1部のSさんにご紹介いただきます。
■はじめに
- S3バケットへのファイル転送、バケットからのファイル取得をSFTPで実行したい
- GUIで簡単に設定、運用したい
- Linuxでのgoofys(S3のバケットをLinuxのファイルシステムにマウントするソフトウェア)は面倒
という場合、AWSのお勧めのサービスに「SFTPサービス」があります。
■SFTPサービスとは
2018年のre:Inventで発表された、フルマネージド型のサービスです。
当初は「AWS Transefr for SFTP」というサービス名でしたが2020年に、AWS Transfer for FTPS(※)と AWS Transfer for FTPが発表され「AWS Transfer Family」というサービス名で新たに提供されています。
※ File Transfer Protocol over SSL
今回は、AWS Transefr for SFTP のお話しになります。
■実際に業務で実装した事
では、SFTPサーバーを作ってみましょう
事前準備
- S3バケットの作成
- IAMポリシーの作成
- IAMポリシーをアタッチする、IAMサービスロールの作成
IAMポリシー:
例.該当のバケットへの、List,Get権限のみを許可する場合
IAMロール:
SFTPサーバーの作成
サービスメニューから「AWS transfer Family」を選択
SFTPを選択
<サーバー作成画面の設定>
エンドポイントタイプ
Public、VPCから選択可能
- Publicだとインターネットに公開。
- VPCの場合は、DirectConnect/VPN 経由のプライベートネットワークでも利用が可能。 どのタイプのエンドポイントを使用した方が良いか迷ったら、以下を参考にして下さい。
参考URL:https://aws.amazon.com/jp/premiumsupport/knowledge-center/aws-sftp-endpoint-type/
エンドポイントタイプ以外は、デフォルト設定のままで普通に使えます。
設定する上での参考URL:
https://engineer.retty.me/entry/aws-transfer-for-sftp
https://dev.classmethod.jp/articles/try-aws-transfer-for-sftp/
<ユーザー作成>
サーバーができたら、ユーザを作成します。
SFTPログイン時に利用する、SSHキーペアの公開鍵を設定します。
SSHキー生成については、下記参照
https://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/sshkeygen.html
以上で、SFTPの設定は完了です。
サポートされているクライアント
- OpenSSH(Mac、Linux)
- WinSCP(Windows)
- Cyberduck(Windows、Mac、Linux)
- FileZilla(Windows、Mac、Linux)
■まとめ
〇メリット
- 設定が簡単。初めてでも1、2日程度で設定できる。
- ストレージが不要。S3のみで構築できるため大容量ファイルに対応可能。
- 可用性の高い完全マネージド型
〇デメリット
- 最低月額料金が高い
1ヶ月サービスを立ち上げているだけで、$216 です。goofysなどで構築した場合のEC2のスペックやストレージの大きさにもよりますが損益分岐点は要検討です。またSFTPを使った場合、S3のアップロードにも料金がかかります。この点も注意です。
一度、お試しあれ。ご覧頂き有難うございました。