はじめに
MWAAのプライベートネットワークアクセスモードで接続する際は、以下に記載があるようにVPNやDX/Linux踏み台サーバー/ロードバランサーを使った方法があると思います。
この中だとまぁ大体の人がロードバランサーを使うと思います。踏み台サーバーは管理が大変なので。
ただ、そうすると以下のコンソール画面からAirflow UIにワンクリックで飛べなくなります。
理由は、このリンク押した時の遷移先がWeb ServerのVPCエンドポイントになってしまっているからですね(以下の画像参照)。せっかくこのVPCエンドポイントの前にロードバランサーを置いたのでそっちに飛んでほしいんですが・・・。
なので、ロードバランサーを置いた場合はAirflowのWebログイントークンを発行して、それを使ったURLを自身で作って接続しないといけないんですよね。ちょっとめんどい。プライベートアクセスでもコンソールからワンクリックでAirflow UIに接続したい!!
なので、第4の方法としてWorkSpacesから接続する、という方法を試してみたいと思います。
VPC内のWorkSpacesからなら、プライベートアクセスで接続できるはず。つまり、コンソールからワンクリックでAirflow UIに接続できるはず!
前提
- Airflowバージョン 2.5.1
- 事前にプライベートアクセスで環境作成済み
- VPCは環境作成する際に自動で作成したもの
- WorkSpacesはWindows10(WindowsServer2016ベース)で作成
やってみる
WorkSpacesを作成する
こちらを参考に、Simple ADを使用して作成しました。
ディレクトリにサブネットを紐づけることが出来るので、MWAAの環境作成するときに作った2つのプライベートサブネットを指定しています。
MWAAのセキュリティグループを修正する ★ポイント
ここがポイントです。
以下の図はWorkSpacesのBlackBeltから引用しています。
WorkSpacesのディレクトリをサブネットに紐づけると、そのサブネットにENIが出来ます。ENIにはセキュリティグループが付与されるので、そのセキュリティグループからMWAAにアクセスできるようにしなければいけません。
WorkSpacesのドキュメント見ると
WorkSpaces のセキュリティグループの名前は、ディレクトリ識別子の後に _workspacesMembers が続きます (たとえば、d-123456fc11_workspacesMembers)。
とあるので、セキュリティグループ名からしてもこいつで間違いなさそうです。
このセキュリティグループを、MWAA側のセキュリティグループのインバウンドで許可してあげたら、WorkSpacesからMWAAのAirflow UIにプライベートアクセスできました!
おわりに
WorkSpacesもMWAAもVPC内に作成したはずなのに最初接続できず、なぜだろうと思っていたのですが、セキュリティグループが問題でした。
「VPC内に作成する」と言っても、実際はENIが作成されてそこが通信もとになっているパターンは他にもありそうなので、注意が必要ですね。