はじめに
こんにちは、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公式の動画から引用させていただきます。
どれくらい簡単なのか、ちょっとやってみたいと思います。
①まずはサービスのコンソール画面から、「サーバーの作成」ボタンをクリックします。
②次にプロトコルを選択します。
ここで気づくと思いますが、先述したFTPやFTPSも作成可能です。
ただしセキュリティには注意が必要です。
③次はIDプロバイダの選択です。
「IDプロバイダ」とは、該当するサーバーにアクセスするユーザーを管理する仕組みを指しています。
ここで「サービスマネージド」を選択すると、Transfer Familyのサービス内でユーザーの管理が完結します。
他の2つは外部で管理することができる、というオプションです。
要件で指定が無い、もしくは事前に用意したものが無ければ、そのまま次へ進んでもらって大丈夫なはずです。
④次はエンドポイントです。
本項ではSFTPサーバーの公開方法を指定します。
「パブリックアクセス可能」とした場合は、インターネットから直接アクセスできます。「VPCでホスト」を選択した場合は、セキュリティグループでアクセス元を制限することができます。どちらを選択するかは、要件に合わせて要検討かもしれないですね。
⑤ドメインも選択できます。
今回のドメインは、SFTPサーバーを介してファイルを管理する対象のストレージを指します。
S3対象にもEFS対象にも作れるのです。便利。
⑥次は諸々オプションの選択です。
後で追加変更できる部分もあるので、一旦次へ進みます。
⑦最後に確認したら、完了です。
⑧こうして、マウスクリックだけでできてしまうのです。
キーボード使っていません。簡単すぎる。
この後利用するにあたってユーザーの登録や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のユーザーガイドをよく見ると「短縮版が使えるのは古いやつだけだよ」と記載があったのです。
なんと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 マネージドワークフローというものがありまして、一言で表すと「ファイルの設置に反応して色々処理してくれる」という機能です。
できることは(見た目だけだと)全部で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!