5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NTTテクノクロスAdvent Calendar 2024

Day 20

AWS Transfer Family の勘所

Last updated at Posted at 2024-12-19

はじめに

こんにちは、NTTテクノクロスでAWSの開発エンジニアをやらせていただいています。だはです。
元教員として、初心者目線から色々な記事を書かせていただいています。
今回はNTTテクノクロスアドベントカレンダーシリーズ2の20日目となります。
業務的にはIaC (Infrastructure as Code)に近い技術を触ることが多いのですが、細かなサービスごとの差異に着目してみたり、便利な使い方をメモに残してみたりしようと思っています。
今回は第四弾として、「AWS Transfer Family の勘所」を書いてみようと思います。

目次

1.概要
2.ハマりどころや推せるポイント
 2-1.SFTPサーバーを簡単に作れる
 2-2.SSHキーの取り扱い
 2-3.とても便利な機能
3.まとめ
4.あとがき

1.概要

ここでお伝えしたいのは、大きく分けて3点です。

どんなサービスなのか

まず今回の主題であるサービスをご紹介します。
AWSには"Transfer Family"というサービスがあります。「ストレージとストレージの間でファイルを運んでくれるサービス」だと私は解釈しています。
興味のある方は公式のリファレンスを閲覧することで、どんなことができるかは確認できるかと思います。

どんなことをしてきたのか

これからこのサービスを使いたい、というお客様向けに

  • どんな事ができるのか
  • (お客様の)想定通りに使えるのか
  • 安全に使えるのか

という観点で様々調査しました。
その過程で「このサービス面白いなあ」と思ったので、記事にしようと思い立ちました。

どんな話をしたいのか

「はじめに」でもご紹介したように、今回は「AWS Transfer Family の勘所」を書いていきます。
目次で大まかな内容は想像がつくかと思いますが、実際にサービスを利用していくにあたって「ここは苦戦したから残しておきたいな」「こう使うと便利だな」と感じた部分を書きました。

(目次へ)

2.ハマりどころや推せるポイント

2-1.SFTPサーバーを簡単に作れる

まず大前提として「これ便利だよ!」と声を大にしたいのが、このサービスはお手軽にSFTPサーバーを作成することができます。

ここで、一部「SFTPって何?」という人も出てくるかと思います。
ざっくり書くと、「SSHを使ってセキュアにしたFTP」です。
FTPは元々ファイル共有プロトコルとして歴史があるものですが、そこにSSHの仕組みを利用してセキュリティを強化したものがSFTPです。
SSHキーによる認証を挟むため、設定に一手間一工夫入るのがミソです。後述しますが、私はこの点で躓きました。
ちなみにSSL/TLSを利用したFTPS、というものも存在します。ややこしい。

より詳しく知りたい方は、下記のページがわかりやすくて良いと思います。
DevelopersIOブログ:イラストで理解するSFTP

話を戻しますが、上記の仕組みを数クリックで簡単に作れるのが本サービスの魅力なのです。当然AWSサービスなので、ユーザー認証認可はばっちりです。
図解として、AWS公式の動画から引用させていただきます。
transfer family①.png

どれくらい簡単なのか、ちょっとやってみたいと思います。


①まずはサービスのコンソール画面から、「サーバーの作成」ボタンをクリックします。
transfer family②.png


②次にプロトコルを選択します。
ここで気づくと思いますが、先述したFTPやFTPSも作成可能です。
ただしセキュリティには注意が必要です。
transfer family③.png


③次はIDプロバイダの選択です。

「IDプロバイダ」とは、該当するサーバーにアクセスするユーザーを管理する仕組みを指しています。
ここで「サービスマネージド」を選択すると、Transfer Familyのサービス内でユーザーの管理が完結します。
他の2つは外部で管理することができる、というオプションです。

要件で指定が無い、もしくは事前に用意したものが無ければ、そのまま次へ進んでもらって大丈夫なはずです。
transfer family④.png


④次はエンドポイントです。
本項ではSFTPサーバーの公開方法を指定します。
「パブリックアクセス可能」とした場合は、インターネットから直接アクセスできます。「VPCでホスト」を選択した場合は、セキュリティグループでアクセス元を制限することができます。どちらを選択するかは、要件に合わせて要検討かもしれないですね。
transfer family⑤.png


⑤ドメインも選択できます。

今回のドメインは、SFTPサーバーを介してファイルを管理する対象のストレージを指します。

S3対象にもEFS対象にも作れるのです。便利。
transfer family⑥.png


⑥次は諸々オプションの選択です。
後で追加変更できる部分もあるので、一旦次へ進みます。
transfer family⑦.png


⑦最後に確認したら、完了です。
transfer family⑧.png


⑧こうして、マウスクリックだけでできてしまうのです。
キーボード使っていません。簡単すぎる。
transfer family⑨.png

この後利用するにあたってユーザーの登録やSSHキーの設定など諸々ありますが、とにかく作成だけならクリックだけで完了します。便利。

Transfer Familyについてより詳しく知りたい方は、是非こちらもご覧ください。
slideshare:AWS Transfer Family SFTP and FTPS

2-2.各種キーの取り扱い

ここからは少し踏み込んで、サービスを使い始めた人向けの内容になるかと思います。
まず私が躓いたのは、キーの設定です。
Transfer Familyでは二種類のキー認証があります。

  • SSHキー
    ⇒ユーザー認証
  • PGPキー
    ⇒格納ファイルの複合

の、二種類です。SSHキーに関しては私も僅かながら経験があったのですが、PGPキーについては初耳だったのでかなり勉強させてもらいました。
一番困ったところだけ取り上げると、PGPキーには短縮版と完全版の二種類あることです。
私は当初「PGPキーが必要なんだな!なるほど!」ということで、"PGP"や"GPG(PGPキーを生成するソフト)"でググってコマンドを調べていました。
そうすると、大体はgpg --gen-keyというコマンドが出てくるのです。
しかしこれではダメだったようで、何度もエラーが起きて進めずにいました。

日を跨いでAWSのユーザーガイドをよく見ると「短縮版が使えるのは古いやつだけだよ」と記載があったのです。
transfer family⑩.png
なんとGPGのキー生成には短縮版と完全版の二種類あったというオチでした。

必要な部分だけざっくり取り上げると、

  • PGP キーのアルゴリズムとして、RSA、Elgamal、ECC(NIST、BrainPool)が利用可能
  • GnuPG のバージョン 2.3.0 以降で --gen-keyオプションのデフォルトアルゴリズムである ECC(Curve25519)はサポートされていない
  • --full-gen-keyオプションを使って、サポートされているアルゴリズムを指定する必要がある
  • GnuPGのバージョンが2.3.0より前であれば、RSAがデフォルトの暗号化であるため、gpg --gen-keyでも利用可能

先に進むまで何時間もかかりましたが、gpg --full-gen-keyでやり直すことで、あっさり解消しました。
これで学んだのは、ユーザーガイドちゃんと読むのが大事ということですね。当たり前だ。

より詳しく知りたい方は、下記をご参照ください。
「AWS Transfer Family ユーザーガイド:キーの管理」

また当然ですが、キーはそれぞれ一回生成すると二度と表示されないので、どちらのキーもしっかり管理しておくことを推奨します。人間では覚えきれないやつです。パソコン様々ですね。

2-3.とても便利な機能

この記事でお伝えしたいことの3点目は、便利機能のご紹介です。
AWS Transfer Family マネージドワークフローというものがありまして、一言で表すと「ファイルの設置に反応して色々処理してくれる」という機能です。
transfer family⑪.png
できることは(見た目だけだと)全部で5種類あります。それぞれ

  • ファイルコピー
  • ファイルにタグ付け
  • ファイル削除
  • Lambda呼び出し
  • 自動的に復号(2-2で取り上げたPGPキーを利用)

の、5つです。
これらを組み合わせることもできるので、
①ファイルの設置に反応して、別のフォルダにファイルコピー
②コピー元のファイルを削除
と組み合わせれば、自動的にファイル移動の仕組みを作ることも可能です。
更にLambdaを呼び出せば、おおよそやりたいことは実現できるんじゃないでしょうか。
ただし、いくつか制限があるので注意は必要です。

ファイルコピーはリソースを跨げません。
ex.)S3⇒S3のコピーは可能、S3⇒EFSのコピーは不可能

Lambdaと連携するには、別途IAM権限の整備が必要です。

ただAWSを使い慣れている人ならば一般的とも言える範囲の制約なので、あまり違和感は感じませんでした。

あと私はあまり深く触れていないので取り上げませんが、アカウントを跨ぐ機能もあるようです。ほんとに何でもできますね。

3.まとめ

3-1.お手軽にファイル共有サーバーを作成

とにかく今回大きく取り上げたいのは、「簡単にSFTPサーバーを作れるよ!」 という点に尽きるかと思います。クリックだけでサーバーの作成まではいけます。ユーザー作成もそこまで難しくなく、SSHキーの作成さえ自前でなんとかすればササッとファイル共有サーバーを作れてしまえるのです。
社内や身内向けにプライベートなサーバーを作るのであれば、FTPやFTPSの選択肢も上がるかと思います。特に思い当たる利用シーンとしては、ファイルを共有したいけども

  • AWSアカウントは共有したくない
  • S3バケットを公開したくない
  • EFS環境を整える手間をかけたくない

なんて時には、「AWS Transfer Family」の利用を検討しても良いのではないでしょうか。

3-2.アレンジしがいのあるワークフロー

もう一つお伝えしたいのは、ワークフローという機能です。お好きなステップを組み合わせることで、ファイルの設置に反応して色々なことができてしまいます。
多くの方は、S3バケットにオブジェクト設置⇒EventBridgeで反応⇒他のサービスで処理、なんてアーキテクチャをざっくり作ったことがあるかと思いますが、Transfer Familyはそれが1つのサービス内で完結するのが魅力だと感じました。
無限、とまではいきませんが可能性に溢れた機能だと思います。是非触ってみてください。

4.あとがき

今回はTransfer Familyの使い易さ使い辛さを残していくことで、技術的なノウハウを残す記事を書いてみました。これからTransfer Familyを触る方の一助になれば幸いです。
正直なところ、技術のことに踏み込んで記事を書くのは結構勇気がいりました。
しかし、先日「Systems Manager Automation Runbookの勘所」に挑戦することで、段々書く勇気が出ました。
アウトプットに挑戦してみるのは大事ですね。

以上NTTテクノクロスアドベントカレンダーの20日目、だはがお送りしました。
弊社に興味を持っていただけた方は、こちらをご覧ください。
明日は@ko_suganmさんの記事「AWS re:Invent 2024に現地参加してみた」になります。どうぞお楽しみに!Merry Christmas!

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?