Edited at

Direct Connect経由でAWS Transfer for SFTPを利用する


はじめに

AWS Transfer for SFTP が PrivateLink をサポートしたため、VPCエンドポイントを使用して

インターネットを経由せずにS3へのSFTP転送が可能になりました。

AWS Transfer for SFTP now supports AWS PrivateLink

https://aws.amazon.com/jp/about-aws/whats-new/2019/03/aws-transfer-for-sftp-now-supports-aws-privatelink/


やってみる

最初にVPCコンソールからVPCエンドポイントを作成します。

コンソールからは 2つのサービス名

(com.amazonaws.<region>.transfer と com.amazonaws.<region>.transfer.server )

が確認できるのですが、サーバー作成&接続に必要なのは

com.amazonaws.<region>.transfer.server のエンドポイントです。

com.amazonaws.<region>.transfer はCLI操作等でAPIエンドポイントへの

接続が必要な場合に利用します。

image.png

VPCやサブネット、セキュリティグループを設定してエンドポイントを作成します。

image.png

Transfer for SFTP サーバーの作成は Endpoint configurationで VPC を選択し

最初に作成したVPCエンドポイントのIDを選択すればOK、その他オプションの設定は通常と変わらずです。

image.png

作成後すぐに利用可能になります。

通常のパブリックエンドポイントと比較した注意点としては

カスタムホスト名をサポートしていないくらいかなと思います。

image.png

VPCエンドポイントのDNS名を指定して接続、転送することができました。

$ sftp -i .ssh/id_rsa user@vpce-xxxxxxxxxxxxxxxxx-yyyyyyyy.server.transfer.ap-northeast-1.vpce.amazonaws.com

Connected to user@vpce-xxxxxxxxxxxxxxxxx-yyyyyyyy.server.transfer.ap-northeast-1.vpce.amazonaws.com.
sftp> !ls test.txt
test.txt
sftp> put test.txt
Uploading test.txt to /<bucket_name>/test.txt
test.txt 100% 0 0.0KB/s 00:00
sftp> ls test.txt
test.txt
sftp> bye

エンドポイント作成時にプライベートDNS名を有効にするにチェックを入れていれば、

VPC内やRoute53 Resolverを利用している環境では

server.transfer.ap-northeast-1.amazonaws.com を使用しても名前解決可能です。

$ dig server.transfer.ap-northeast-1.amazonaws.com +short

10.xxx.xxx.xxx
10.xxx.xxx.xxx

Direct Connect経由やVPCに閉じた形でS3へのSFTP転送が可能に

なったことでより使いやすくなったと思います。

簡単ですが、参考になれば幸いです。