2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GlueからRDSへの接続に関する注意喚起

Last updated at Posted at 2025-07-22

事象

GlueからVPC内のRDSにコネクションを作る際、以下のエラー画面が出てコネクションの作成に失敗する。
「Connection creation is failed」

image.png

※上記エラーは詳細情報がなくCloudWatchLogsに全く記録されないため、AWSサポートに改善依頼を出しました。

結論

  • Glueから接続先として指定するVPC内サブネットがインターネットへのNATアクセス(※)ができない場合は、VPC内に以下のVPCエンドポイントが必要。
    • secretsmanager
    • sts

 

  • ※「インターネットへのNATアクセス」とは私の造語です。具体的には以下を指しています。
    • NATゲートウェイへのルートを持つサブネットからインターネットへのアクセス
      • 例えばEC2はグローバルIPをアタッチさせることができます。これはインターネットゲートウェイが持つグローバルIPと、EC2のプライベートIPがNATされるということを意味します。
      • 一方、GlueのENIはパブリックサブネットに設置したとしても、グローバルIPをアタッチすることができません(おそらく分散型のため。Dynamic NATしてほしいところですが)。そのため、GlueのENIがAWSのエンドポイントに到達するためには、以下のいずれかの通信経路が必要になります。
        • インターネット上の各AWSエンドポイント
          • NATゲートウェイを通してインターネットに接続
            • GlueにとってNATを肩代わりしてくれるものとしてのNATゲートウェイ
        • VPCエンドポイント
          • VPCからプライベート接続
            • 今回の注意喚起はこちらのパターン

詳細

  • これはGlueのコネクタの仕様変更による影響です。
    • 2025年7月現在、Glueコネクタをマネジメントコンソールから作成する場合はVer.2がデフォルトになっています。
      • image.png

      • Ver.2は、昨今のSagemaker Unified Studioへの各データ分析系サービスの統合の流れによるもので仕様変更が行われています。

      • Ver.2で作成されたコネクタは、RDSへの接続パスワードをコンソール上で平文で貼り付けた場合であっても、裏ではSecretsManagerに保管されるようで、その関係でSecretsManagerのVPCエンドポイントが必要になります。

        • 従来(Ver.1)はGlueサービス内にパスワードを保存できたのに対し、Ver.2では他サービスから連携できるようにSecretsManagerに外部保管するように変更したと思われます。
      • また、(やや推測ですが)上記の機能拡張の「再利用性」の項目にあるとおり、Glue以外のサービスからGlueのコネクションを利用できるようにするため、stsのVPCエンドポイントが必要になるものと思われます。

      • 今回の事象に関しては上記ページのこちらにさらっとだけ書かれています。

        • If jobs run in a VPC, they require either a VPC endpoint or NAT gateway to access AWS Secrets Manager and Secure Token Service (STS), which incurs additional costs.

感想など

なお、Ver.1でコネクタを作成するには、非常に残念ながらCLIしか手段がありません。
Ver.2で必要になるインターフェース型のVPCエンドポイントやNATゲートウェイは有料ですから、Ver.1を使いたくなります。このままだとGlueコンソールからみるとサービスの改悪の印象を受けますから、Ver.1もコンソール上から選択できるようになることを望みます。
https://docs.aws.amazon.com/cli/latest/reference/glue/create-connection.html

なにより、GlueからRDSへの接続は、AWSの製品同士なわけですから、もっともシームレスに接続できなくてはいけないと私は思います。にもかかわらず、このような手間とコストが発生してしまうのは非常に残念です。(以下に記載するように自己参照型のSecurityGroupという、とっつきにくい設定も必要なわけですし。)

手順系メモ

  • VPCエンドポイントの作成

    • 上記のとおり「インターネットへのNATアクセス」がない場合は、コネクションを作成する前に2つのVPCエンドポイント(インターフェース型)を作成してください。(以下は東京リージョンの例)
      • image.png

      • VPCエンドポイントのSGは、443ポートを、アクセスがありうるCIDRで開けておきます(クロスVPCでもない限り、自身のVPCのCIDRでよいかと)

        • image.png
  • Glueコネクションの作成

    • Network optionsで指定するSGは、自己参照型になります。
      • 分散作成されるSparkクラスタは、各クラスタが互いに通信できるように同じ自己参照型SGを持つ必要があります。
      • インバウンドで、自分自身のSGを許可します
      • image.png
  • RDSのSG

    • 通常のアプリケーションや管理用アクセスに加え、DBへのアクセスポート(この場合はRDS for PostgreSQLのため5432)に対し、Glueの自己参照型SGからの許可を設定します。
      • image.png

以上です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?