この記事は朝日新聞社Advent Calendar2024の最終日の記事です。
昨日の記事は加藤さんの【SwiftUI】iOS 15でListのSection上部に余白が生じないようプリミティブに対処するでした。
はじめに
こんにちは。朝日新聞社で紙面ビューアーの開発を担当している新山です。
今回はAWS Transfer Familyを使ったFTPサーバーの構築の際に頭を悩ませた話です。
構成
朝日新聞紙面ビューアーでは電子ブック作成のためのシステムがあります。2024年3月にこのシステムを社内ネットワーク上のオンプレサーバーからAWSへ移管しました。
その際に、構築の時間短縮かつ可用性を保つために自前でFTPサーバーを構築するのではなく、AWSマネージドであるTransfer Familyを使用してFTPサーバーを作成しました。
超ざっくりと以下のような感じです。
問題の発生
動作確認も済ませ、いざ疎通テストの段階で「FTPは繋がる(ログイン等はできる)もののレスポンスが返ってきません」とのことでした。
原因
新聞制作システムで使用されていたFTPクライアントが原因でした。
新聞制作システムからのアクセスはaliasレコードを利用して、2つのNLBにランダムに振り分けられる想定だったため、PassiveIPには0.0.0.0
を記述しておけばいい感じにやってくれると思っていたのですが、Transfer Familyのドキュメントにある、全てのFTPクライアントがサポートしているわけではありません
を都合よく読み飛ばしていたのです。。。
ただし、すべてのFTPクライアントが PassiveIp=0.0.0.0 レスポンスをサポートしているわけではありません。 FileZilla また、WinSCP が対応していることに注意してください。他のクライアントを使用している場合は、そのクライアントが PassiveIp=0.0.0.0 応答をサポートしているかどうかを確認してください。
その上、手元での動作確認の際は新聞制作システムと別のFTPクライアントを使用していたことで発覚が遅れてしまいました。
念の為、新聞制作システムのFTPクライアントを変更できないか聞いてみたものの、もちろん難しいとのことで対応を考える必要がありました。
対応
以下の構成とすることで無理やりマルチAZのNLB×Transfer Familyの組み合わせを実現しました
CloudWatch Insighsを用いてNLBの状態を監視して、これを起点にDNSのフェイルオーバー(フェイルバック)とFTPサーバーのパッシブIPをLambdaで書き換えるという方法をとっています。パワー解決です。
Route53 フェイルオーバールーティングとCloudWatch Insightsに頼って何とか解決できました。
終わりに
今回の経験から以下の事項は改めて意識しておかねばと実感しました。
- ドキュメントはきちんと読むこと
- たとえ手元での動作確認であっても実際の環境に可能な限り近づけること
- クライアントの制約を意識すること
- 新聞制作系システムは比較的古いシステムであること
- ドキュメントはきちんと読むこと
また、AWSマネージドサービスの制約に苦しめられたものの、AWSマネージドサービスに助けられており便利さを実感する形となりました。
以上、朝日新聞社 Advent Calendar 2024 の最終日の記事でした。ご覧いただきありがとうございました。