AivenがAWS PrivateLinkに対応したので試してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

アライアンス統括部の佐々木です。AivenがAWS PrivateLinkに対応しました。

早速やってみます!

やってみた

Project VPCの作成

Aivenのサービスを作成する前に、Project VPCの作成が必要になります。[VPC]をクリックし、[Project VPC]画面を開きます。[Cloud]を選択、[IP range]を入力し、[Create VPC]をクリックします。

Project VPCが作成されます。

サービスの作成

Aiven Dashboardの[Services]画面から[Create a new service]をクリックします。

[Create Service]画面に遷移します。今回はMySQLを選択します。Cloudの指定はAWSとします。

[3. Select Service Cloud Region]は、[VPC]をクリックして開き、先程作成したVPCを選択します。[Create Service]ボタンをクリックします。

しばらくするとサービスが立ち上がるので、クリックして詳細画面に移動します。

サービス詳細画面から[Network]タブを開き、[Create Privatelink]をクリックします。

[Create Privatelink]画面が開きます。[Principals]欄に、利用するIAM情報を入力し、[Create]ボタンをクリックします。

Privatelinkが作成中になります。

作成が完了すると、ステータスがactiveになります。

AWS側の設定

AWS管理コンソールでVPCを開き、[エンドポイント」をクリックして選択します。[エンドポイントの作成]をクリックします。

[エンドポイントの作成]画面が開きます。[サービスカテゴリ]で「サービスを名前で検索」を設定し、[サービス名]にAivenで作成したPrivatelinkのAWS service nameを入力します。[検証]ボタンをクリックします。

検証が成功すると「サービスが見つかりました」と表示されます。下部のVPCとサブネットを選択します。

下部でセキュリティグループを選択し、[エンドポイントの作成]ボタンをクリックします。

エンドポイントが作成されます。[閉じる]をクリックします。

Aiven側でのPrivatelinkの有効化

最後にAiven側でPrivatelinkを有効化する設定を行います。サービスの詳細画面から[Overview]を開き、下部の[Advanced configuration]で[Add configuration option]をクリックします。

privatelink_access.mysqlとprivatelink_access.mysqlxを追加し、有効にします。[Save advanced configuration]をクリックします。

検証

AWS上のEC2からAivenに接続出来るか試してみます。まずはエンドポイントのDNS名をdigします。ちゃんとプライベートIPアドレスが返ってきています。

$ dig vpce-XXXX.ap-northeast-1.vpce.amazonaws.com
;; ANSWER SECTION:
vpce-XXXX.ap-northeast-1.vpce.amazonaws.com. 60 IN A 192.168.2.117
vpce-XXXX.ap-northeast-1.vpce.amazonaws.com. 60 IN A 192.168.1.244

さて、ではEC2からAivenのMySQLに接続...しようと思ったのですが、微妙にハマりました。Aivenで立ち上げたMySQLは8.0で、EC2にインストールされているMariaDBのクライアントだとcaching_sha2_password問題で接続できなかったためです。

そこで、MariaDBをアンインストールし、MySQL8クライアントをインストールしました。

$ sudo yum remove mariadb-libs
$ sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
$ sudo yum-config-manager --enable mysql80-community
$ sudo yum install -y mysql-community-client

そしてMySQL8クライアントでPrivateLink経由で接続してみます。

$ mysql -u avnadmin -p -h vpce-XXXX.ap-northeast-1.vpce.amazonaws.com -P 28813
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2939
Server version: 8.0.26 Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

ということで、AWSのEC2からAivenのサービスにPrivateLink経由で接続することが出来ました。

さいごに

PrivateLink経由の接続により、インターネットを介さなくてもデータストアにアクセス可能になりました。よりセキュアにAivenを使うことが出来ますね。