【AWS】S3でFTPが使える!AWS Transfer Familyを使ってみる!

AWS AWS

※この記事にはプロモーションが含まれています。

S3にSFTPでファイルを転送したかったので調べてみると「AWS Transfer Family」というサービスがあったので早速使ってみました。

「AWS Transfer Family」を使う事でかなり簡単にSFTPの環境を構築する事ができたので説明してみたいと思います。

構成としてはこのような構成です、今回はSFTPを行うサービスとして「AWS Transfer Family」、FTPユーザーの管理として「AWS Secrets Manager」を使います。
ユーザー認証処理を行うために、間に「Lambda」を使用します。

構成図

一見複雑そうな構成ですが、こちらの一通りの構成を「Cloud Formation」を使う事で簡単に構築できます。

それでは順番に構築していきます。

スポンサーリンク

S3にバケットを作成する

まずはS3にバケットを作成します。
好きなバケット名で何も変更せずバケットを作成してください。

S3でバケットを作成

Cloud Formationで一気に構築

Cloud Formationでスタックの作成を行います。

Cloud Formationでスタックの作成

「スタックの作成」ボタンでスタックの作成画面を開いたら、テンプレートの指定のテンプレートソースで「Amazon S3 URL」を選択して、その下の「Amazon S3 URL」を入力する欄にこちらのURLを指定して、「次へ」をクリック

”https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-secrets-manager-lambda.template.yml”

テンプレートの指定

「スタック名」に好きな名前を入力して「次へ」をクリック

スタックの詳細を指定

次のスタックオプションの設定画面とその次のレビュー画面は次へ次へで進んでください。

すると必要なサービスを構築が始まります。
それなりに時間がかかるのでしばらくお待ちください。

スタック作成中

完了すると、スタックの部分が「CREATE_COMPLETE」になります。

スタックCREATE_COMPLETE

完了すると「AWS Transfer Family」「Lambda」に新しく作成されていると思います。

AWS Secrets Managerでユーザー管理

次はFTPユーザーを管理するための「AWS Secrets Manager」を設定します。

その前に、AWS Secrets Managerで使用するIAMロールを作成します。
ユースケースは「Transfer」を選びます。

IAMロールを作成

追加するポリシーは「AmazonS3FullAccess」の権限を持ったロールを作成しておきます。

ポリシーの指定

そしたら「AWS Secrets Manager」に戻って新しくシークレットを作成します。
「新しいシークレットを保存する」をクリック

AWS Secrets Manager

シークレットのタイプを選択する画面になるので、「その他のシークレットのタイプ」を選択。
キー/値のペアで「Password」「Role」「HomeDirectory」の3つを作成します。
それぞれ、

Password:FTPユーザーのパスワード
Role:先ほど作成したIAMロールのARN
HomeDirectory:FTPでのファイル保存先のS3バケットのkey

を指定して「次へ」

シークレットタイプを選択

次のシークレットを設定画面で名前を付けます。
この名前の命名規則が重要で、

”aws/transfer/” + [AWS Transfer Familyに作成されたサーバーのID] + ”/” + [FTPユーザー名]

で名前を付けます。
最後のFTPユーザー名はFTPログインするときに使うユーザーをここで初めて指定します。
そのあとは次へ次へで保存します。

シークレット名を設定

ここまで設定すると、作成した「AWS Transfer Family」のエンドポイントをホスト名に、ユーザー、パスワードは「AWS Secrets Manager」で設定したシークレット名とパスワードを使ってSFTPでS3に接続できるようになります。

ホスト:「AWS Transfer Family」のエンドポイント
ユーザー:「AWS Secrets Manager」のシークレット名の最後の部分(Ftp-User)
パスワード:「AWS Secrets Manager」に設定したPassword(123456789)

簡単なので、S3でSFTPが使いたいという言う場合は試してみてください。

コメント

タイトルとURLをコピーしました