新サービスAWS Transfer for SFTPのDNS設定を使い、任意のホスト名に変更する #reinvent
はじめに
日本時間の2018年11月26日夕方、AWSからマネージドSFTPサーバ"AWS Transfer for SFTP(AWS SFTP)"が発表されました。
こちらのサービスには、いくつかのDNS連携機能が提供されており、SFTPサーバに対してホスト名を任意に設定する事が可能です。今回はその機能を実際に使ってみます。
事前準備
SFTPサーバの起動
基本的な設定方法は、下記エントリをご参照ください。
こちらのエントリでは、東京リージョンでSFTPサーバを起動し、DNSの設定(DNS configuration)はNoneに設定したので、自動生成されたエンドポイント(xxxxx.server.transfer.ap-northeast-1.amazonaws.com)が使われました。ここのホスト名を変更します。
DNS設定を変更する
まず、AWS SFTPの管理画面で、設定を行いたいサーバ名をクリックします。右上のCustome hostnameには何も設定されていません。
右上のEditボタンを押し、DNSの設定を変更します。
DNS設定は、ドロップダウンリストで以下を指定できます。
- None: 使用しない(自動生成されたエンドポイント名を使う)
- Amazon Route53 DNS alias: Route53のエイリアス機能を使う(自動で)
- Other DNS: 既に運用している外部のDNSサービスを使う
Amazon Route53を使用する
DNS configurationに対してAmazon Route53 DNS aliasを設定し、適当なホスト名を設定すると、同じアカウントのRoute53の設定に対し、
- ドメイン名に対応するHosted Zoneの作成
- ホスト名に対するaliasの設定
を自動で行ってくれます。
実際に見てみましょう。SFTPサーバに以下のようにsftp.yokatsuki.netという名前をつけてみます。
Saveボタンを押し保存すると、Custome hostnameにsftp.yokatsuki.netが設定されていることが確認できます。
このエイリアス名はリンクになっています。クリックすると、Route53の対応するHosted Zoneの管理画面に遷移します。
ご覧のような設定が既にできています。ただし、ドメイン名の取得までは行ってくれませんので、そこは別途作業が必要になります。例えば、お名前.com等でドメイン名を取得して、下記のようにドメインが使用するネームサーバをこのRoute53のネームサーバに設定する、という流れになります。
ここまで完了すれば、SFTPクライアントからアクセスができるようになります。
Amazon Route53 DNS aliasを使用する方法は、Route53側の設定を自動化してくれるので、新規にドメインから取得するような場合には便利だと思います。
他のDNSサーバを使用する
もう一つの方法として、既に運用している外部のDNSサービスを使うOther DNSという選択があります。この場合は、Route53を使用しないため、エイリアス名はリンクになりません。
下図は、Other DNSを選択し、sftp.katsuki.classmethod.infoと設定した例になります。
接続確認
接続確認をしてみます。まずはdigコマンドで別名でSFTPサーバが検索できるか確認します。
% dig sftp.katsuki.classmethod.info ; <<>> DiG 9.10.6 <<>> sftp.katsuki.classmethod.info ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26137 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION: ;sftp.katsuki.classmethod.info. IN A ;; ANSWER SECTION: sftp.katsuki.classmethod.info. 23 IN CNAME s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com. s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com. 23 IN A xxx.xxx.xxx.xxx s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com. 23 IN A yyy.yyy.yyy.yyy ;; Query time: 11 msec ;; SERVER: xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx) ;; WHEN: Thu Nov 29 20:52:35 JST 2018 ;; MSG SIZE rcvd: 168
ANSWER SECTIONに、別名に対応するエンドポイント及びIPアドレスが表示されています。"フルマネージドの高可用性サービス"の謳い文句通り、IPアドレスが複数返ってきています。
mac OSのターミナルからSFTPサーバにログインしてみます。
% sftp -i cm-yokatsuki.pem yokatsuki@sftp.katsuki.classmethod.info The authenticity of host 'sftp.katsuki.classmethod.info (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'sftp.katsuki.classmethod.info,xxx.xxx.xxx.xxx' (RSA) to the list of known hosts. Connected to yokatsuki@sftp.katsuki.classmethod.info. sftp>
無事、別名でログインできました。
おわりに
AWS SFTPサーバのホスト名に別名を設定し、ログインまで確認しました。いかがでしょうか。非常に簡単でしたので、みなさんも是非試してみてください。
それでは、また。yokatsukiでした。