【AWS】Glue ConnectionでAurora PostgreSQL 14に接続しようとすると失敗する

# はじめに
AWS Glueのjobは、JDBC接続をサポートしているデータベースに接続することが可能です。
通常、RDSやRedshift等のインスタンスはVPC内で稼働しPublic IPを付与しないで運用していることが多いと思いますが、そのような構成でも、Glue Connectionを利用することでAWS Glueから利用できるようになっています。

Glue Connectionにはその接続性をテストする機能がありますが、ネットワーク構成・設定は問題ないにもかかわらず、Aurora PostgreSQL 14インスタンスに接続しようとすると失敗します。

本稿はその事象について記録を残すものとなります。
※これは2023/2/4時点の状況となります。後々、改善される可能性があります。

# 概要
Aurora PostgreSQL 14のCluster/Instance、およびAWS Glue connectionを、同一VPC内で稼働させる構成において、ネットワーク構成・設定は問題ないにもかかわらず、Aurora PostgreSQL 14インスタンスにテスト接続しようとすると失敗します。

同等の設定でAurora PostgreSQL 13、AWS Glue connectionを作成すると、テスト接続に成功します
また、Glue Connectionのテストは失敗しますが、Glue jobからAurora PostgreSQL 14に接続する場合は成功します。

以下の事象と同等です。

Aws glue connects to RDS PostgreSQL | AWS re:Post
https://repost.aws/questions/QU5ZDUGnvnREWUT0CA-a6rSw/aws-glue-connects-to-rds-postgre-sql

本稿は、上記の事象を検証した際の環境・設定等を残したものとなります。
事象原因については別途の記事となる予定です。

# 当該事象の原因（※未調査）
原因は未調査ですが、恐らく以下のような状況であると推測しています。

- PostgreSQL 14で利用可能な認証方式／パスワード保存方式が変わり、デフォルトの挙動においては古い方式が利用できなくなった
- Glue connection側では、少なくともデフォルトでは新しい認証方式には対応していない

PostgreSQL: Documentation: 14: 21.5. Password Authentication
https://www.postgresql.org/docs/14/auth-password.html

PostgreSQL側のCluster parameter groupの設定や、Glue connectionの設定、Aurora PostgreSQL内のユーザのパスワード設定等、何らか対処の方法があるように思いますが、現時点では未調査です。


# 環境／構成
## AWS Glue Connectionの仕様
以下、公式ドキュメントから、Glue ConnectionをVPC内で利用するケースでの仕様、要件等を確認します。

Connecting to a JDBC data store in a VPC - AWS Glue
https://docs.aws.amazon.com/glue/latest/dg/connection-JDBC-VPC.html

- VPC内でGlue connectionを利用する際、ENIが生成され付与される。このENIは `Glue_` というプレフィクスが付与されている。
- Glue connectionには、自己自身からのALL Trafficeを許可するSecurity Group(self-referencing inbound rule for ALL Traffic)を付与する必要がある。
- ENIには、Private IPアドレスのみ付与され、、Public IPアドレスは付与されない
- にもかかわらず、Glue connectionからInternetに接続できる必要がある。従って、NAT Gatewayが必須となる。
- Glue connectionを配置するVPCは、 `enableDnsHostnames` と `enableDnsSupport ` がtrueになっている必要がある。（通常、デフォルトでtrueであるため恐らく問題ないはず。）


## AWS環境
本稿では以下の環境で検証しました。実際に検証する際には、適宜読み替えてください。

- Region: Oregon (us-west-2)
- VPC:
    - VPC ID: vpc-00853f493d61474b4
    - IPv4 CIDR:  172.16.0.0/19
    - Subnets:
        - Front:
            - subnet-058248e462c7eed8f (dev1-Front(AZ1))
        - Bastion:
            - subnet-0e3872d1ed35c4b6d (dev1-Bastion(AZ1))
        - Private:
            - subnet-0de78a29ad83376cf (dev1-Private(AZ1))
        - Datastore:
            - subnet-04270a71b3e4a0844 (dev1-Datastore(AZ1))
            - subnet-061b2f0caa75a079d (dev1-Datastore(AZ2))
            - subnet-09b43d0d9d5cf67fa (dev1-Datastore(AZ3))
    - SecurityGroup:
        - sg-0480929271b0af727 (default)
        - sg-0c8e3d416b9303d4d (dev1-Internal)
        - sg-076a174054d90bf21 (dev1-Maintainer)
    - NAT Gateway:
- RDS Aurora PostgreSQL clusters/insntaces:
    - DB subnet group: dev1-db-subnet
    - Aurora PostgreSQL 14
        - Cluster
            - Cluster name: examining-aurora-postgresql-14
            - Cluster endpoint: examining-aurora-postgresql-14.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com
        - Instance
            - Instance name: examining-aurora-postgresql-14-instance
    - Aurora PostgreSQL 13
        - Cluster:
            - Cluster name: examining-aurora-postgresql-13
            - Cluster endpoint: examining-aurora-postgresql-13.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com
        - Instance:
            - Instance name: examining-aurora-postgresql-13-instance
- EC2:
    - key pair: looking-into-glue-connections
    - Instance:
        - Instance ID: i-0337058a6b2cb1092
- IAM Role:
    - LookingIntoGlueConnectionRole
- Glue connection:
    - Aurora PostgreSQL 14用
        - Connection name: connection aurora-postgresql-14
    - Aurora PostgreSQL 13用
        - Connection name: connection aurora-postgresql-13

ネットワーク構成は、概ね以下のようになります。
![GlueConenction検証_Structure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/95753a4d-5d64-1e98-171c-ce1a41e37ac1.png)


# 検証手順／結果詳細
## 1.VPC(Subnets, Route tables, NAT Gateway)、IAM Roleを作成する

まず、作業用のVPCやSubnetを作ります。下記のCloudFormation template（以下、CFn tempalte）を利用します。

https://github.com/tmiki/cloud-formation-templates/blob/master/cfn-01-basis.yml

このCFn templateは、実行されたRegionでVPC関連のリソースを作成しますが、本稿で利用するのは以下のみです。

- VPC: 172.16.0.0/19のネットワークを作成
    - Internet Gateway
    - NAT Gateway: 1つ目のAZにのみ作成
    - Subnets
        - Front: デフォルトゲートウェイ(0.0.0.0/0) にInternet Gatewayを指定したサブネット。NAT Gatewayを配置。
        - Bastion: デフォルトゲートウェイ(0.0.0.0/0) にInternet Gatewayを指定したサブネット。動作確認用踏み台サーバを配置。
        - Private: デフォルトゲートウェイ(0.0.0.0/0)にNAT Gatewayを指定したサブネット。Glue connectionを配置。
        - Datastore: VPC外へのルートなし。Aurora PostgreSQL Cluster/Instanceを配置。
    - Security Group
        - default: 当該Security Groupが設定されたホストからのトラフィックを全て許可する。
        - dev1-Internal: 172.16.0.0/19からの全てのトラフィックを許可する。
        - dev1-Maintainer: 自身の環境のGlobal IPアドレスからのSSH接続を許可する。EC2踏み台サーバへの接続用。

### 1-1.CloudFormation stackの作成
AWS CLIからCloudFormation stackを作ります。自身の環境にあわせて各種パラメータを指定し実行します。
`EnableNatGw=true` を指定しないと、NAT GatewayおよびPrivate Subnetが作成されませんので注意してください。

```:aws  cloudformation deploy
$ git clone https://github.com/tmiki/cloud-formation-templates
$ cd ./cloud-formation-templates/

$ aws --profile <your AWS CLI profile> cloudformation deploy \
  --template-file cfn-01-basis.yml \
  --stack-name <stack name> \
  --parameter-overrides \
    EnvName=dev1 \
    AppServiceName=<your app name> \
    IpAddressAllowedSsh=<global IP address(es) with prefix being allowed to connect to VPC via SSH> \
    EnableNatGw=true
```

作成が完了したら、生成されたリソースを確認します。
本稿の検証においては以下のIDで作成されましたので、以降はこれを以て説明します。

- Subnets:
    - Front:
        - subnet-058248e462c7eed8f (dev1-Front(AZ1))
    - Bastion:
        - subnet-0e3872d1ed35c4b6d (dev1-Bastion(AZ1))
    - Private:
        - subnet-0de78a29ad83376cf (dev1-Private(AZ1))
    - Datastore:
        - subnet-04270a71b3e4a0844 (dev1-Datastore(AZ1))
        - subnet-061b2f0caa75a079d (dev1-Datastore(AZ2))
        - subnet-09b43d0d9d5cf67fa (dev1-Datastore(AZ3))
- SecurityGroup:
    - sg-0480929271b0af727 (default)
    - sg-0c8e3d416b9303d4d (dev1-Internal)
    - sg-076a174054d90bf21 (dev1-Maintainer)

### 1-2.IAM Roleの作成
後にGlue Connectionをテストする際に必要となります。
AWS Management Consoleから以下の設定で作成します。

- Role name: LookingIntoGlueConnectionRole
- Trust Relationships: ※後述のものを指定
- Permissions: AWSGlueServiceRole（※AWS Managed Policyを利用）

```:Trust Relationships
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "glue.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

![GlueConenction検証_CreateIAMRole.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/890a2877-4045-547c-bdfd-b5fb96a0def2.png)


## 2.Aurora PostgreSQLのClusterの作成
### 2-1.DB subnet groupの作成
Aurora/RDSのインスタンスを配置するためのDB subnet groupを作ります。CloudFormationで作成した、以下のDatastore subnetを指定して作成します。

- 	dev1-Datastore(AZ1): subnet-04270a71b3e4a0844
-	dev1-Datastore(AZ2): subnet-061b2f0caa75a079d
-	dev1-Datastore(AZ3): subnet-09b43d0d9d5cf67fa

```aws rds create-db-subnet-group
$ aws --profile <your AWS CLI profile> rds create-db-subnet-group \
  --db-subnet-group-name 'dev1-db-subnet' \
  --db-subnet-group-description 'A DB subnet group hosts Aurora instances.' \
  --subnet-ids subnet-04270a71b3e4a0844 subnet-061b2f0caa75a079d subnet-09b43d0d9d5cf67fa
```


### 2-2.Aurora PostgreSQL 14のClusterの作成
Aurora PostgreSQL 14用のDB Clusterを作成します。
上記で作成したDB Subnet Groupを指定します。

Security Groupは下記のみを指定します。
Auroraインスタンスに接続するのは、後に構築する踏み台サーバ、Glue connectionのみであり、いずれもVPC内で稼働するため、VPC内の全トラフィックを許可するものだけで問題ありません。

- sg-0c8e3d416b9303d4d: dev1-Internal

`--master-user-password` は任意のものを指定します。

```:aws rds create-db-cluster
$ aws --profile <your AWS CLI profile> rds create-db-cluster \
  --db-cluster-identifier examining-aurora-postgresql-14 \
  --engine aurora-postgresql --engine-version 14.5 \
  --db-subnet-group-name dev1-db-subnet-datastore \
  --vpc-security-group-ids sg-0c8e3d416b9303d4d \
  --master-username postgres --master-user-password **********
```

作成後、Cluster endpointも生成されるので、これを控えておきます。

```
examining-aurora-postgresql-14.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com
```

### 2-3.Aurora PostgreSQL 13のClusterの作成
Aurora PostgreSQL 13用のDB Clusterを作成します。
`--engine aurora-postgresql` 以外のパラメータはAurora PostgreSQL 14と同等です。

```:aws rds create-db-cluster
$ aws --profile <your AWS CLI profile> rds create-db-cluster \
  --db-cluster-identifier examining-aurora-postgresql-13 \
  --engine aurora-postgresql --engine-version 13.9 \
  --db-subnet-group-name dev1-db-subnet-datastore \
  --vpc-security-group-ids sg-0c8e3d416b9303d4d \
  --master-username postgres --master-user-password **********
```

作成後、Cluster endpointも生成されるので、これを控えておきます。

```:Cluster endpoint
examining-aurora-postgresql-13.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com
```

## 3.各Auroraインスタンスにテスト用データベースを作成する
### 3-1.鍵ペア・踏み台サーバの作成
踏み台サーバをBastion subnetに作成します。

まず、鍵ペアを作ります。 `aws ec2 create-key-pair` の出力結果から秘密鍵を取り出すので、これをファイルに控えておきます。

```:aws ec2 create-key-pair
$ aws --profile <your AWS CLI profile> ec2 create-key-pair \
  --key-name 'looking-into-glue-connections' > key-pair-looking-into-glue-connections.json
```

`aws ec2 create-key-pair` の出力から、秘密鍵を切り出してファイルに保存しておきます。

```
$ cat key-pair-looking-into-glue-connections.json | jq -r .KeyMaterial > key-pair-looking-into-glue-connections.pem
```

次にEC2インスタンスを作成します。Public IPを付与するよう指定します。

AMIはAmazon Linux 2 x86_64の最新版を利用します。
2023/2/4現在、Oregon(us-west-2)では以下のAMI IDですが、時期やリージョンによって違いがあるので、実際のIDは必要に応じて確認してください。

> Amazon Linux 2 Kernel 5.10 AMI 2.0.20230119.1 x86_64 HVM gp2
> ami-06e85d4c3149db26a

SubnetやSecurity Groupは、CloudFormation stackで作成したものを指定します。

- Subnet: dev1-Front(AZ1) subnet-058248e462c7eed8f
- Security Group:
    - sg-0c8e3d416b9303d4d dev1-Internal
    - sg-076a174054d90bf21 dev1-Maintainer

```:aws ec2 run-instances
$ aws --profile <your AWS CLI profile> ec2 run-instances \
  --image-id ami-06e85d4c3149db26a \
  --instance-type t3.micro \
  --key-name looking-into-glue-connections \
  --subnet-id subnet-0e3872d1ed35c4b6d \
  --security-group-ids sg-0c8e3d416b9303d4d sg-076a174054d90bf21
```

EC2インスタンス作成後、Instance ID、Public IPを確認できるのでこれを控えておきます。

- Instance ID: i-0337058a6b2cb1092

### 3-2.踏み台サーバへのpsqlコマンドのインストール
上記で作成した踏み台サーバにSSHログイン後、以下のように実行してpsqlコマンドをインストールします。
**PostgreSQL 14のクライアントでないと、後の動作確認が出来ないので注意してください。**

```
$ sudo amazon-linux-extras install -y postgresql14
```

```
$ psql --version
psql (PostgreSQL) 14.3
```


### 3-3.Aurora PostgreSQL 14のInstance作成・接続確認
Aurora PostgreSQL 14のCluster内に新たにInstanceを作成します。

```:aws rds create-db-instance
$ aws --profile <your AWS CLI profile> rds create-db-instance \
  --db-instance-identifier examining-aurora-postgresql-14-instance \
  --db-cluster-identifier examining-aurora-postgresql-14 \
  --engine aurora-postgresql \
  --db-instance-class db.t3.medium \
  --no-multi-az
```

作成後、踏み台サーバから接続します。
接続先ホスト名はCluster作成時に確認したもの、パスワードはCluster作成時に指定したものを利用します。

```
$ psql -h examining-aurora-postgresql-14.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com -U postgres -W
Password:
```

```:psql
psql (14.3, server 14.5)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
Type "help" for help.

postgres=> 
```

接続後、適当なテーブルを作成、レコードをINSERTし、通常のPostgreSQLと同等の操作が出来ることを確認します。
なおこの作業は、本稿においては必須ではありません。

```:psql
postgres=> CREATE TABLE example_users
(
  id serial primary key,
  name text
);
```

```:psql
postgres=> INSERT INTO example_users (name) VALUES ('alice');
postgres=> INSERT INTO example_users (name) VALUES ('bob');
```


### 3-4.Aurora PostgreSQL 13のInstance作成・接続確認
Aurora PostgreSQL 13のCluster内に新たにinstanceを作成します。

```:aws rds create-db-instance
$ aws --profile <your AWS CLI profile> rds create-db-instance \
  --db-instance-identifier examining-aurora-postgresql-13-instance \
  --db-cluster-identifier examining-aurora-postgresql-13 \
  --engine aurora-postgresql \
  --db-instance-class db.t3.medium \
  --no-multi-az
```

作成後、踏み台サーバから接続します。
接続先ホスト名はCluster作成時に確認したもの、パスワードはCluster作成時に指定したものを利用します。

```
$ psql -h examining-aurora-postgresql-13.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com -U postgres -W
Password:
```

```:psql
psql (14.3, server 14.5)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
Type "help" for help.

postgres=> 
```

接続後、適当なテーブルを作成、レコードをINSERTし、通常のPostgreSQLと同等の操作が出来ることを確認します。
なおこの作業は、本稿においては必須ではありません。

```:psql
postgres=> CREATE TABLE example_users
(
  id serial primary key,
  name text
);
```

```:psql
postgres=> INSERT INTO example_users (name) VALUES ('charlie');
postgres=> INSERT INTO example_users (name) VALUES ('david');
```

## 4.Glue Connectionの作成とテスト
### 4-1.Glue connectionの仕様・注意点
2023/2/4現在、AWS Management Console上、AWS Glue関連のコンソールが幾つかに分かれている状況です。

大きく、以下の3つのコンソールがあり、必要に応じて使い分けが必要な感じです。
一部、新しいAWS Glueコンソールではまだ利用できない機能があり、それらは「AWS Glue(legacy)」から利用する感じになります。

- [AWS Glue](https://us-west-2.console.aws.amazon.com/glue/home?region=us-west-2#/v2/home)
- [AWS Glue Studio](https://us-west-2.console.aws.amazon.com/gluestudio/home?region=us-west-2#/)
- [AWS Glue(legacy)](https://us-west-2.console.aws.amazon.com/glue/home?region=us-west-2#catalog:tab=databases)

Glue Connectionの接続テストもその一つです。

Testing an AWS Glue connection
https://docs.aws.amazon.com/glue/latest/dg/console-test-connections.html

> **Note**
> To test a connection, you must use the **Connections (legacy)** page in the AWS Glue console. AWS Glue Studio does not currently support testing a connection.

### 4-2.Aurora PostgreSQL 14への接続（接続テストは失敗する）
AWS Management Consoleの、AWS Glueコンソールから作業します。

Glue Connectionの作成のURLは、現時点においてはAWS Glue Studio上に存在します。
以下のURLから、Glue Connectionを作成していきます。

https://us-west-2.console.aws.amazon.com/gluestudio/home?region=us-west-2#/connectors

![GlueConenction検証_CreateAndTestGlueConnection_1_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/f5ffbde8-245d-203b-537b-b92ca04ad847.png)

具体的には、以下のパラメータを指定してGlue Connectionを作成します。

- Connection properties:
	- Name: connection aurora-postgresql-14
	- Connection type: JDBC
	- Require SSL connection: ☐
- Connection access:
	- JDBC URL:
		- jdbc:postgresql://examining-aurora-postgresql-14.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com:5432/postgres
	- Credential type: Username and password
	- Username: postgres
	- Password: **********
- Network options:
	- VPC: vpc-00853f493d61474b4
	- Subnet: subnet-0de78a29ad83376cf (dev1-Private(AZ1))
	- Security groups:
		- sg-0c8e3d416b9303d4d (dev1-Internal)
		- sg-0480929271b0af727 (default)
		
Glue Connection作成後、テストを実施します。
現時点では、AWS Glue StudioおよびAWS Glue Console上にはテストする機能はありません。

AWS Glue Console (legacy)からテストを実施します。

https://us-west-2.console.aws.amazon.com/glue/home?region=us-west-2#catalog:tab=connections

当該のGlue Connectionをチェックし、「Test connection」ボタンを押します。
![GlueConenction検証_CreateAndTestGlueConnection_1_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/b5a00b48-6e6f-345e-b2eb-5b64203645ad.png)

テストの際には、Glueが利用するためのIAM Roleが必要となるので、これを指定します。
![GlueConenction検証_CreateAndTestGlueConnection_1_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/fc84f64e-a7e8-eeed-a8fb-3513df67ae28.png)

暫く待つと、テスト結果が表示されます。Aurora PostgreSQL 14に対する接続テストは失敗します。
![GlueConenction検証_CreateAndTestGlueConnection_1_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/0ba84715-458b-6845-c2ba-de2e180976c6.png)

CloudWatch Logs上、Glueのログが出力されます。
以下のようなエラーメッセージが出力されます。

```
Check that your connection definition references your JDBC database with correct URL syntax, username, and password. The authentication type 10 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.
Exiting with error code 30
```

![GlueConenction検証_CreateAndTestGlueConnection_1_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/a8f4b3dc-eb35-f7a9-6a2b-a912c0254b17.png)


### 4-3.Aurora PostgreSQL 13への接続（接続テストは成功する）
AWS Management Consoleの、AWS Glueコンソールから作業します。

Glue Connectionの作成のURLは、現時点においてはAWS Glue Studio上に存在します。
以下のURLから、Glue Connectionを作成していきます。

https://us-west-2.console.aws.amazon.com/gluestudio/home?region=us-west-2#/connectors

![GlueConenction検証_CreateAndTestGlueConnection_2_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/cb7a721e-cbff-944f-11f7-77d300c93830.png)

具体的には、以下のパラメータを指定してGlue Connectionを作成します。

- Connection properties:
	- Name: connection aurora-postgresql-13
	- Connection type: JDBC
	- Require SSL connection: ☐
- Connection access:
	- JDBC URL:
		- jdbc:postgresql://examining-aurora-postgresql-13.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com:5432/postgres
	- Credential type: Username and password
	- Username: postgres
	- Password: **********
- Network options:
	- VPC: vpc-00853f493d61474b4
	- Subnet: subnet-0de78a29ad83376cf (dev1-Private(AZ1))
	- Security groups:
		- sg-0c8e3d416b9303d4d (dev1-Internal)
		- sg-0480929271b0af727 (default)
		
Glue Connection作成後、テストを実施します。
現時点では、AWS Glue StudioおよびAWS Glue Console上にはテストする機能はありません。

AWS Glue Console (legacy)からテストを実施します。
当該のGlue Connectionをチェックし、「Test connection」ボタンを押します。

https://us-west-2.console.aws.amazon.com/glue/home?region=us-west-2#catalog:tab=connections

当該のGlue Connectionをチェックし、「Test connection」ボタンを押します。
![GlueConenction検証_CreateAndTestGlueConnection_2_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/5e6a4911-f5ab-daad-ddd4-437bab65d6ce.png)

テストの際には、Glueが利用するためのIAM Roleが必要となるので、これを指定します。
![GlueConenction検証_CreateAndTestGlueConnection_2_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/5b636d4a-44da-0781-6caf-621a663a1c37.png)

暫く待つと、テスト結果が表示されます。Aurora PostgreSQL 13に対するテストは成功します。
![GlueConenction検証_CreateAndTestGlueConnection_2_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/91bed43f-7968-3c1f-f6fd-6a24cfbef5ae.png)

CloudWatch Logs上、Glueのログが出力されます。
以下のように、接続が成功した旨のメッセージが出力されています。
なお、接続テストが成功した場合、AWS Glue Console(legacy)上にはリンクが表示されないので、AWS Management Consoleを自分でたどっていく必要があります。

```
JDBC Connection successful to jdbc:postgresql://examining-aurora-postgresql-13.cluster-abcdefghijkl.us-west-2.rds.amazonaws.com:5432/postgres
```

![GlueConenction検証_CreateAndTestGlueConnection_2_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/60585aff-2d9c-9898-1d93-ced385666a18.png)


## 5.リソース削除
### 5-1.踏み台サーバの削除
AWS CLIからEC2インスタンスを削除します。

```
$ aws --profile <your AWS CLI profile> ec2 terminate-instances \
  --instance-ids i-0337058a6b2cb1092
```

### 5-2.Glue Connection削除
AWS Management Consoleから削除します。

https://us-west-2.console.aws.amazon.com/gluestudio/home?region=us-west-2#/connectors

「connection aurora-postgresql-14」を削除します。

![GlueConenction検証_DeleteGlueConnection_1_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/4e47e3c0-c164-961b-7a42-b019679cd0a1.png)
![GlueConenction検証_DeleteGlueConnection_1_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/5fcfcad7-f926-424c-17d2-b22eaf86de86.png)

「connection aurora-postgresql-13」を削除します。

![GlueConenction検証_DeleteGlueConnection_2_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/227c8ddb-63c4-c03c-3f1a-479fdd5dac02.png)
![GlueConenction検証_DeleteGlueConnection_2_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137777/bc164aab-8727-4725-4977-1aba0708660b.png)


### 5-3.Aurora PostgreSQL 14 Cluster/Instance削除
AWS CLIからAurora Cluster/Instanceを削除します。
まず、Instanceを削除し、その後Clusterを削除します。

```:aws rds delete-db-instance
$ aws --profile <your AWS CLI profile> rds delete-db-instance \
  --db-instance-identifier examining-aurora-postgresql-14-instance
```

```:aws rds delete-db-cluster
$ aws --profile <your AWS CLI profile> rds delete-db-cluster \
  --db-cluster-identifier examining-aurora-postgresql-14 \
  --skip-final-snapshot
```

### 5-4.Aurora PostgreSQL 13 Cluster/Instance削除
AWS CLIからAurora Cluster/Instanceを削除します。
まず、Instanceを削除し、その後Clusterを削除します。

```:aws rds delete-db-instance
$ aws --profile <your AWS CLI profile> rds delete-db-instance \
  --db-instance-identifier examining-aurora-postgresql-13-instance
```

```:aws rds delete-db-cluster
$ aws --profile <your AWS CLI profile> rds delete-db-cluster \
  --db-cluster-identifier examining-aurora-postgresql-13 \
  --skip-final-snapshot
```

### 5-5.VPC等削除
CloudFormation stackを削除し、VPC関連リソースをすべて削除します。
Gitリポジトリをcloneしたディレクトリに移動後、AWS CLIから削除します。

```
$ cd ${path to your local git repository}/cloud-formation-templates/
```

```:aws cloudformation delete-stack
$ aws --profile <your AWS CLI profile> cloudformation delete-stack --stack-name dev1-01-basis
```

# おわりに
取り急ぎ本稿では、Aurora PostgreSQL 14はGlue Connectionからの接続テストに失敗する事象についてまとめました。
当該事象の原因や解決策については、別途調査を進め、記事にしたいと思います。