Glue Connectorとは
どの役割のConnectorになるかで意味は違ってくるので、今回の要件であるS3からデータを読み取りし、RDSへimportする場合についての意味で説明します。
簡単に言えば、crawlerやjob実行をする上での、dataのimport先のVPCやそのサブネット、セキュリティグループの情報を持って適用してくれるツールのようなものです。
例えば社内システムの場合、セキュリティをしっかり組んでいると思うので、Connectorの設定をしておかないと、接続時に弾かれるエラーが表示されてしまいます。
その接続を担保してくれるものだと認識してください。
Connector自体は作成しなくても、crawlerやJobを実行できるという話もあるのですが、僕は作成した方がいいと思います。
実際Connectorなしで試したのですが、うまくいきませんでした。(原因の追求は深く行なっていませんが)
先の話ですが、Job作成時にコンソール上でもスクリプト上でもVPCまでは設定することができるのですが、サブネットやセキュリティグループまでの設定を行うことができないので、やはり作っておくことをお勧めします。
実際に作成してみよう
・まずはGlueのコンソール画面から、Connections→Create Connectionと進みましょう
Nameに名前入力をし、Connection typeを選択しましょう。
今回はRDSに対して、crawlerでスキャンを行いたいので、JDBC or Amazon RDSを選択しましょう
今回はAmazon RDSを選択します。
〜一言〜
・JDBC = Java Database Connectivity
いろいろなリレーショナルデータベースに接続するために使われ、MySQL,PostgreSQL,Oraacle,SQL Server等に対応をしています。これを選択すると接続設定でデータベースのホスト名、ポート、データベース名等を指定して、接続を行います。
・Amazon RDS
これを指定するとARNを指定して、接続を行います。
どちらを選択しても接続できるので、好きな方を選択して適切な情報を入力してください。
ARNを設定した後に、Database nameを指定します。
一つ困るのが、Credential typeのところです。
AWSを普段から使っている方々からすると、Secrets Managerを使いたいところですが、ここではUsername and passwordの方を選択してください。
ここでSMを選択すると、crawlerは適切に行われるのですが、job実行時にエラーが表示されてしまいます。
あとは右下にあるCreate Connectionを押下すればConnectorの作成ができます。
crawlerでスキャンを行なった時のエラーについて
次の項目でも記述しますが、セキュリティグループで特定のportのみの接続許可を行なっていると、crawler作成→実行時に下記のエラーができることがあります。(今回直面しました)
At least one security group must open all ingress ports.To limit traffic,
the source security group in your inbound rule can be restricted
to the same security group
(Service: AWSGlueJobExecutor; Status Code: 400; Error Code: InvalidInputException;
Request ID: 76433951-299c-400d-92e4-67ba1347526e; Proxy: null)
少なくとも1つのセキュリティグループはすべてのイングレスポートを開放しなければならない。」とのことです。
AWSの知見の深い方に意見をお借りして、今回はGlueConnector用のセキュリティグループを作成するという方向で解決をしました。
次回 crawler作成・実行について