AWS DMS エンドポイントの接続エラーをトラブルシューティングする方法を教えてください。

最終更新日: 2019 年 9 月 26 日

AWS Database Migration Service (AWS DMS) エンドポイントに接続できません。テスト接続が失敗する理由と、これらの接続問題をトラブルシューティングする方法を教えてください。

解決方法

AWS DMS ソースおよびターゲットエンドポイントを作成したら、AWS DMS 移行タスクを開始する前に、AWS DMS レプリケーションインスタンスからエンドポイントへの接続をテストすることをお勧めします。接続をテストしてみると、エンドポイントとの接続問題が原因でタスクが失敗することがないことを確認できます。

AWS DMS レプリケーションインスタンスがソースエンドポイントとターゲットエンドポイントに接続するには、AWS DMS レプリケーションインスタンスで使用されるセキュリティグループに、特定のポートのエンドポイント用 IP アドレスのアウトバウンドルールを含める必要があります。レプリケーションインスタンスにおけるセキュリティグループのアウトバウンドルールが正しい場合は、ソースデータベースまたはターゲットデータベースのインバウンドネットワークやセキュリティ設定を確認します。詳細については、ルールの追加、削除、および更新を参照してください。

データベースへのアクセスが拒否されたためにエラーが発生した場合、次のようなエラーが表示されます。

Test Endpoint failed: Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]FATAL: password authentication failed for user "dmsuser" ODBC general error.
Test Endpoint failed: Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider ODBC general error., Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HY000 NativeError: 2005 Message: [unixODBC][MySQL][ODBC 5.3(w) Driver]Unknown MySQL server host 'mysql1.chulbfpmdg0x.us-east-1.rds.amazonaws.com' (22) ODBC general error.

これらのエラーを解決するには、次のエンドポイントの詳細が正しく設定されていることを確認してください。

  • ユーザー名とパスワード
  • ServerName (DB インスタンスのエンドポイント名)
  • ポート

エラーの原因がネットワーク設定またはタイムアウトの場合、次のようなエラーが表示される場合があります。  

Test Endpoint failed:
    Application-Status: 1020912, Application-Message: Failed to connect Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HYT00 NativeError: 0 Message: [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout
    expired ODBC general error.
Test Endpoint failed: Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001
    NativeError: 101 Message: [unixODBC]timeout expired ODBC general error.

これらのエラーを解決するには、エンドポイントのデータベースエンジンにおける NativeError の解像度を確認します。

ソースデータベースまたはターゲットデータベースは AWS でホストされます

まず、データベースに、AWS DMS レプリケーションインスタンスの IP アドレスからの受信トラフィックを許可するセキュリティグループ設定があることを確認します。

レプリケーションインスタンスのパブリック IP アドレスおよびプライベート IP アドレスを確認するには、次の手順を実行します。

  1. [AWS DMS コンソール] を開き、ナビゲーションペインから [レプリケーションインスタンス] を選択します。
  2. レプリケーションインスタンスの名前を選択します。
  3. [詳細] セクションから、レプリケーションインスタンスのパブリック IP アドレスプライベート IP アドレスを確認できます。または、describe-replication-instances を実行して、レプリケーションインスタンスの IP アドレスを確認できます。

プライベート IP アドレス

aws dms describe-replication-instances
    --filters Name=replication-instance-id,Values=<DMS replication instance name> "ReplicationInstances[*].ReplicationInstancePrivateIpAddress" --output=text

パブリック IP アドレス

aws dms describe-replication-instances --filters Name=replication-instance-id,Values=<DMS replication instance name> "ReplicationInstances[*].ReplicationInstancePublicIpAddress" --output=text

次に、Amazon Virtual Private Cloud (Amazon VPC) のネットワークアクセスコントロールリスト (ACL) ルールが、明示的な拒否ルールなど、ソースデータベースまたはターゲットデータベースとレプリケーションインスタンスへの受信トラフィックを制限していないことを確認します。最後に、データベースに関連付けられたサブネットのルートテーブルに、パブリックまたはプライベートのネットワークトラフィックを許可するために必要なエントリがあることを確認します。

ソースデータベースまたはターゲットデータベースはオンプレミスでホストされます

ネットワーク管理者に問い合わせて、データベースが AWS DMS レプリケーションインスタンスからの受信接続を許可するように設定されているかどうかを確認してください。DNS 設定が正しく設定されていること、およびソースデータベースまたはターゲットデータベースへの通信をブロックするファイアウォールがないことを確認します。

ネットワーク接続のボトルネックを特定できない場合は、AWS DMS レプリケーションインスタンスと同じネットワーク設定で同じ VPC に新しい Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを作成します。新しいテスト EC2 インスタンスから、次のコマンドを実行して、ネットワーク接続をさらにトラブルシューティングします。

telnet <IP address of host database server> <port number>
nslookup <Fully qualified domain name for the database server>
tracert <IP address of host database server>