AWS Transfer Familyを使ってみた

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

S3等へのファイルアップロード方法はいくつかありますが、AWS Transfer Familyを利用すると簡単にSFTP等でのアップロードが行なえます。
今回は以下のような設定内容でAWS Transfer Familyの利用を開始してみようと思います。

・SFTPでの接続
・認証方法は鍵認証
・インターネット経由でアクセス可
・セキュリティグループでアクセス制御をできるようにする

なお、今回はシンプル構成でとりあえず使ってみることを目標に設定していきます。
実際に利用する場合にはセキュリティポリシー上問題ないかを十分に検討して導入してください。

AWS Transfer Familyを使ってみる

事前準備

Transfer Familyの立ち上げを行う前に、事前準備をしておきます。

アップロード先のS3バケットを作成します。

EIPを発行しておきます。

鍵ペアの生成を行います。今回は手元のLINUX環境で実施しました。

事前準備は以上となります。

AWS Transfer Familyの設定

続いてAWS Transfer Familyの設定を行っていきます。

AWSコントロールパネルより、Transfer Familyのサービス画面を開く
「サーバーを作成」をクリック

今回はSFTPを利用するため、「SFTP」のみにチェックを入れて「次へ」

「サービスマネージド」を選択し「次へ」

「VPCでホスト」を選択
アクセスにて「インターネット向け」を選択
VPCにてTransfer Familyのサーバーを配置するVPCを選択
アベイラビリティーゾーンにて、予めEIPの発行を行った「ap-northeast-1a」を選択
IPv4アドレスにて予め発行したEIPを選択

今回、セキュリティグループは事前に作っていないので「セキュリティグループを作成」から新たに作成し、作成したセキュリティグループを選択
全て入力したら「次へ」

今回はS3へのアップロードを想定しているため「Amazon S3」を選択し「次へ」

今回は特に触らずに「次へ」

確認画面なので、設定内容に間違いがないかを確認し「サーバーを作成」

画面上部にメッセージが表示されるため、作成が完了するまで待つ

Transfer Familyサーバーが立ち上がりました。
次に、ログインを行うためのユーザーを作成していきます。

サーバーID「s-***~」をクリック

「ユーザーを追加」をクリック

ユーザー名に任意のユーザー名を入力 今回は「sftp_user」とします
ロールにてS3へのアクセスIAMロールを指定
 ※環境により変わるため、以下ドキュメントなどを参考にロールなどの設定を行ってください
 https://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/requirements-roles.html#iam-role-procedure
今回は細かいポリシー設定は割愛するので、ポリシーにて「なし」を選択
ホームディレクトリにてS3バケットを選択し、必要に応じてディレクトリ名を記載 今回は「sftp_user_dir」とします
SSHパブリックキーにて、生成した公開鍵を入力
全て入力したら「追加」

Transfer Familyサーバーに、ユーザーが追加されました。

ファイルのアップロードをしてみる

SFTP接続が可能なクライアントソフトでファイルのアップロードと試してみます。
以下の情報を参考にログインを行います。

接続先ホスト:エンドポイント(s-***~amazonaws.com)
ユーザー名:作成したユーザー名 今回なら「sftp_user」
パスワード:空白
秘密鍵:生成した秘密鍵

「test_file.txt」というファイルをアップロードしてみます。

想定通りS3バケット内の「sftp_user_dir/」配下に「test_file.txt」ファイルがアップロードされました。
以上でTransfer Familyの設定は終了です。

終わりに

AWS Transfer Familyを利用してS3バケットへファイルのアップロードが行える構成を立ち上げてみました。
普段AWSのコンソールやAPIを使い慣れていない人でもファイルのやり取りが簡単に行えるようになるので非常に便利なサービスだと思います。

投稿者プロフィール

matsuno
基本を大事にしていきたいサーバーエンジニアです。