新サービスAWS Transfer for SFTPのDNS設定を使い、任意のホスト名に変更する #reinvent

AWS re:Invent 2018において発表された、AWS S3用の完全マネージド型SFTPサービス"AWS Transfer for SFTP"のDNS設定を変更して、SFTPサーバに別名を与え、ログインしてみます。
2018.11.29

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

はじめに

日本時間の2018年11月26日夕方、AWSからマネージドSFTPサーバ"AWS Transfer for SFTP(AWS SFTP)"が発表されました。

“AWS Transfer for SFTP”発表!S3がSFTPで連携可能に!! #reinvent

こちらのサービスには、いくつかのDNS連携機能が提供されており、SFTPサーバに対してホスト名を任意に設定する事が可能です。今回はその機能を実際に使ってみます。

事前準備

SFTPサーバの起動

基本的な設定方法は、下記エントリをご参照ください。

新サービスAWS Transfer for SFTPを使って、WinSCPからS3へアクセスする #reinvent

こちらのエントリでは、東京リージョンで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でした。