【AWS】AWS Transfer Famiryを利用してWinSCPでSFTPデータ転送をする方法
はじめに
こんにちは。DXソリューション営業本部の後藤です。
本記事では、AWS Transfer Famiryを利用してWinSCPでSFTPデータ転送をする方法についてご説明したいと思います。
AWS Transfer Famiryとは
AWS Transfer Family は、フルマネージド型のサービスです。SFTP、FTPS、FTP、および AS2 経由で AWS ストレージサービスと直接ファイル転送できます。クライアント側の既存の認証、アクセス、ファイアウォールの設定を維持することで、File Transfer ワークフローをシームレスに移行、自動化、モニタリングできます。引用元:https://aws.amazon.com/jp/aws-transfer-family/features/?nc=sn&loc=2&dn=1
今回行いたいこと&構成図
今回行いたいこと
・Transfer Famiryを利用してSFTPプロトコルでAmazon S3へデータ転送する環境を構築する
構成図
事前準備
Transfer Famiryを作成する前にAmazon S3とIAMロール、そしてSSHキー(公開鍵、秘密鍵)を準備しておきましょう。
まずはファイル転送先となるAmazon S3を作成しましょう。
続いてTransfer Famiry用のIAMロールを作成していきましょう。今回はIAMロールに「S3FullAccess」をアタッチしました。後ほど説明しますが、Transfer Famiryのユーザーを作成する際にユーザーごとにアクセス制限をかけることが可能です。
SFTP接続のためSSHキー(公開鍵、秘密鍵)のペアを作成していきます。OpenSSLを使ってSSHキーを作成していきたいと思います。OpenSSLがインストールされていない場合はインストールが必要となります。今回はWindows環境でOpenSSLのバージョン3.1.5を使用しています。
まずはコマンドプロンプトで【管理者として実行】をクリック。<ssh-keygen>というコマンドを入力してください。キーの保存先の指定やパスフレーズの設定などができますが、今回は何も変えずEnterを押していきます。
実行完了後、エクスプローラーより保存先のフォルダを確認すると「id_rsa」(秘密鍵)と「id_rsa.pub」(公開鍵)が作成されているのを確認できました。
Transfer Famiryの作成
Transfer Famiryのサーバーを作成する
では実際にTransfer Famiryのサーバーを作成していきます。Transfer Famiryの画面から【サーバーを作成】をクリック。
SFTPにチェックを入れて【次へ】
IDプロバイダーにはサービスマネージドを選択して【次へ】
続いてエンドポイントの設定ですが、インターネット経由でのパブリックアクセスとVPCエンドポイントを利用したプライベートアクセスが選択可能です。今回は検証なので「パブリックアクセス可能」を選択します。カスタムホスト名はなしで「FIPSの有効化」もチェックなしで設定します。
保存先にAmazon S3を選択して【次へ】
追加の詳細は「新しいロググループを作成」を選択して、他はデフォルト設定で【サーバーを作成】をクリックしてください。
サーバーの作成が開始され、しばらく待つとステータスが「オンライン」状態になりました。
ユーザーを作成する
続いてユーザーの作成をしていきましょう。Transfer Famiryの画面から右上の【ユーザーを追加】をクリック。先ほど作成したIAMロールを選択して、ポリシーはなしで作成します。ホームディレクトリには作成したS3を選択、自動でユーザー名のディレクトリが設定されます。ここで【制限付き】にチェックを入れてください。
<【制限付き】について>
【制限付き】にチェックを入れるとログイン時にホームディレクトリ名が非表示になり、ホームディレクトリから移動できなくなります。これにより強制的にログインユーザーをホームディレクトリ内での操作のみに制限することが可能になります。
SSHパブリックキーに作成したSSHキーの「xx.pub」(公開鍵)の内容を貼り付けてください。貼り付けたら【追加】をクリックしてください。ユーザーが作成されます。
動作確認
では実際にSFTPでファイル転送してみましょう。今回はWinSCPを使ってファイル転送していきたいと思います。
WinSCPを起動してログイン画面で情報を入力します。ホスト名には、Transfer Famiryのエンドポイントを入力します。ユーザー名には先ほど作成したTransfer Famiryのユーザー名を入力してください。
パスワードは下にある【設定】をクリックして、SSH⇒認証に進み「エージェントの転送を許可する」にチェックを入れます。次に秘密鍵をアップロードしてください。秘密鍵がPuTTY形式でない場合、以下のメッセージが表示されます。PuTTY形式の鍵を使用する必要があるので「OK」を選択します。
パスワードが設定出来たら、【ログイン】をクリックします。するとWinSCPでログインすることが出来ました。【制限付き】にチェックをいれたのでディレクトリ名が「/」になっており非表示になっていることが確認できます。また他のディレクトリに移動できないことも確認できました。
では試しに新規ファイルをホームディレクトリに作成してみます。右クリックをして新規作成からテキストファイルを作成、保存しました。ホームディレクトリ内にテキストファイルが保存されているのが確認できます。
マネジメントコンソールに戻ってAmazon S3を確認してみましょう。指定したS3バケットに「/ユーザー名」でプレフィクスが作成され、その配下にテキストファイルがアップロードされているのを確認できました。
まとめ
最後までお読みいただきありがとうございます。
今回はAWS Transfer Famiryを利用してSFTPプロトコルでAmazon S3へデータ転送する方法をご紹介しました。Transfer Famiryはフルマネージドサービスのため、ファイルサーバーの構築や管理の手間が軽減され簡単にクラウド上に実装することが可能になります。
最後に「このサービスについて知りたい」「AWS環境の構築、移行」などのリクエストがございましたら、弊社お問合せフォームまでお気軽にご連絡ください! のちほど当ブログにてご紹介させていただくか、複雑な内容に関するお問い合わせの内容の場合には直接営業からご連絡を差し上げます。
※Amazon Web Services、”Powered by Amazon Web Services”ロゴ、およびブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。