Excel VBAからAWSのRDS(Aurora MySQL)を利用する

##はじめに
クライアントPCからAWSのRDSへ接続する設定をご紹介したいと思います。
接続方法はEXCELのVBAを使います。
##目次
１．AWSのネットワーク回りの設定(VPC、サブネット、ルートテーブル、インターネットゲートウェイ、セキュリティグループ)
２．RDSインスタンス起動
３．クライアントにMySQLインストール
４．GUIツールのインストール
５．VBAのサンプルコード
この流れで説明していきたいと思います。
所々スクショにマスキングしております、あらかじめご了承ください。
##１．AWSのネットワーク回りの設定(VPC、サブネット、ルートテーブル、インターネットゲートウェイ、セキュリティグループ)
まずはVPCを作成します。デフォルトのVPCでもいいのですが、せっかくなので、新しくVPCを作成してみたいと思います。
VPCダッシュボード画面より、右上の「VPCを作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/a2d8d6a6-e156-0fca-e388-a2f90d4b79d1.png)
名前タグは任意ですが、あとでわかりやすいように何かしら設定しておきましょう。
CIDRは例として10.0.0.0/16で設定しています。
設定したら右下のVPCを作成をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/12ad6312-ec9c-96c2-1174-0a1f7942f83c.png)
VPCが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/a37e076e-303e-ac53-e7e8-7362e4695c7c.png)
次にサブネットを作成します。サブネットのダッシュボード画面より、右上の「サブネットを作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/02662c8e-8fe3-9fad-8168-1de0ba038373.png)
VPC IDで先ほど作成したVPCを選択します。
アベイラビリティゾーンは任意ですが、明示的に選択しておきましょう。
CIDRは例として10.0.0.0/24で設定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/7010025e-b077-9aea-2b3a-7e2b8dbb53c2.png)
サブネットが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/a4db28f2-caa3-4bd0-ad19-7b216b93cbac.png)
次にルートテーブルを作成します。ルートテーブルのダッシュボード画面より、右上の「ルートテーブルを作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/81885100-f24b-933b-3376-2bca99eccd3b.png)
VPCで先ほど作成したVPCを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/de7c41e2-70e5-4d8b-6ffe-41f9de9f1c20.png)
ルートテーブルが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/7cd89eec-94fb-fa33-2bb7-4fa260ced30d.png)
次にインターネットゲートウェイを作成します。インターネットゲートウェイのダッシュボード画面より、右上の「インターネットゲートウェイを作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/90aac4c0-855e-eea3-5640-72c1b07f9635.png)
そのまま「インターネットゲートウェイを作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/b4aa0a28-572b-9222-7f8a-21b19f1108ae.png)
インターネットゲートウェイが作成されました。
アクションから「VPCにアタッチ」をクリックして、次画面で先ほど作成したVPCにアタッチします。
※スクショではすでにVPCにアタッチ済みの画面になっています。悪しからず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/ef428bcc-0dd0-feb4-c978-2d91dc854137.png)
これでインターネットとの通信ができるようになりました。図示するとこんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/1d7147c4-5b0d-3b7d-29c2-dcf17e116fd4.png)
最後にセキュリティグループを作成します。セキュリティグループのダッシュボード画面より、右上の「セキュリティグループを作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/b7f1d6be-dcec-6642-01eb-494c5b6a9e64.png)
先ほど作成したVPCを選択し、ポート番号は任意に設定します。
セキュリティ上、MySQLのデフォルトポート番号(3306)から変えておくのが良いでしょう。
ソースのIPアドレスも可能であれば、特定のグローバルIPからのみ許可するようにしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/78d02710-8e7c-91f4-272a-bb8709417d1c.png)

##２．RDSインスタンス起動
まず最初に、パラメータグループを作成します。パラメータグループのカスタム画面より、「パラメータグループを作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/8e7b836d-b6bc-7a64-e496-f4a8508ff64d.png)
パラメータグループファミリー：aurora-mysql5.7
グループ名：DB Cluster Parameter Group
グループ名：任意
説明：任意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/e5483bf5-9a00-9431-01d7-472a31bfdc11.png)
パラメータグループが作成されましたので、その名前をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/8080428d-a52c-de02-dbf6-5a3e6074c7bd.png)
検索窓に「character」と入力して変更ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/66106dd3-f569-f4ba-c7b2-d79bdcc8cc54.png)
下記２点のパラメータを変更します。
character_set_server：sjis
character_set_database：utf8mb4
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/1b09ff7b-aeef-9dcc-fc10-5a1c8f16c34a.png)
変更されました。この設定の目的は、日本語の文字化けを防ぐことです。**(デフォルトのままだと確実に文字化けを起こしますので要注意。)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/728cc601-50e1-5607-c774-09e227101dbd.png)
次に、RDSのダッシュボード画面より、「データベースの作成」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/8977c8f7-e6b6-300a-aac8-e104da769fb7.png)
**ここからの設定は各人のお好みですので、ひとつの例として参考程度にしてもらえればと思います。**
データベースの作成方法を選択：標準作成
エンジンのタイプ：Amazon Aurora
エディション：MySQLとの互換性を持つAmazon Aurora
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/15142556-7466-2c28-71a6-b1d19d7823a4.png)
キャパシティータイプ：プロビジョニング済み
レプリケーション機能：シングルマスター
エンジンのバージョン：Aurora (MySQL 5.7) 2.07.2
テンプレート：本番稼働用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/4788224f-adf5-fed5-9e04-55537149064a.png)
DBクラスター識別子：任意
マスターユーザー名：任意
マスターパスワード：任意
DBインスタンスクラス：db.t3.small
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/8ff6aea9-01ca-17e7-598a-232208b06e13.png)
マルチAZ配置：Auroraレプリカを作成しない
VPC：先ほどで作成したVPC
サブネットグループ：先ほど作成したサブネット
パブリックアクセス：あり
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/fbc0ae5e-9c1f-6934-b291-674b54fa4fd7.png)
VPCセキュリティグループ：既存の選択
既存のVPCセキュリティグループ：先ほど作成したVPCセキュリティグループ
アベイラビリティゾーン：VPC作成時に選択したゾーン
データベースポート：セキュリティグループ作成時に設定したポート番号
データベース認証：パスコード認証
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/fa137fb8-81fe-976a-1a1a-354ddcce481a.png)
最初のデータベース名：任意
DBクラスターのパラメータグループ：先ほど作成したパラメータグループ
DBパラメータグループ：デフォルト
フェイルオーバーの優先順位：指定なし
バックアップ保持期間：3日間
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/857354c3-0bc6-3ead-9e94-fa43452d9430.png)
以下は特に変更せずデフォルトのままでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/2fb4e585-632c-5c34-dccd-75ec3174a522.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/b211f0a4-d9c9-70d9-9bcf-fade1d01fe4d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/ae56b33a-6084-b6c3-8077-99bca506bb48.png)
##３．クライアントにMySQLインストール
下記からVisual Studio 2019のインストーラをダウンロードし、実行します。
[Visual Studio 2019](https://visualstudio.microsoft.com/ja/downloads/)
C++によるデスクトップ開発にチェックを入れてインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/23b06f8d-3a80-3fb4-d915-21b18b44f8e7.png)
下記からMySQLのODBC Connectorのインストーラをダウンロードして、実行します。
[Connector/ODBC 8.0.26](https://dev.mysql.com/downloads/connector/odbc/)
**※32bitのインストーラを使います！**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/03d9076e-8ae1-b035-f1a4-ea7d78b1f21d.png)
すべてそのままNEXTで進んでいけばOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/6a1f7947-1dc7-c040-f7eb-4bd84b4f4e6d.png)
##４．GUIツールのインストール
下記からXAMPPのインストーラをダウンロードし、実行します。
[XAMPP公式ページ](https://www.apachefriends.org/jp/index.html)
すべてそのままNEXTで進んでいけばOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/6937e36e-192d-b341-a67c-d362ccb28ae6.png)
次にXAMPPの設定を編集します。スタートメニューからXAMPP Control Panelを**管理者として実行します。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/85d4602b-a1ab-35a3-8c0c-3c1e8c60266f.png)
まずは、ApacheとMySQLのサービスが自動起動するように設定しておきましょう。右上の「Config」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/8900140c-0acb-ffdc-75b9-73ee680f8861.png)
Autostart of modulesの、ApacheとMySQLにチェックを入れてSaveします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/8a726d70-17d4-bf5e-b1f5-8945f5e7e612.png)
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartupにXAMPPのコントロールパネルを登録しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/dda56fc3-0d50-45db-de5c-fa9dcf4294c6.png)
これでOS起動時に自動でサービスが起動するようになりました。
次に、MySQLのconfigを編集します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/a03a23e4-65a1-abd6-c4d8-2a306c256926.png)
ポート番号：AWSのセキュリティグループで設定したポート番号
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/57f04769-643a-9e95-ed37-496701770a79.png)
C:\xampp\phpMyAdmin\config.inc.phpをテキストで開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/04bd6d19-c5f8-1f6f-b2ce-1789cc85c591.png)
['auth_type'] = 'cookie';
['user'] = '';
['host'] = 'RDSインスタンスのホスト名:ポート番号';
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/9f0dcd81-5f5a-d3d4-540c-6871b1f4a2dc.png)

他のPCからアクセスを許可する場合は
C:\xampp\apache\conf\extra\httpd-xampp.confをテキストで開いて
Require localの部分をRequire all grantedに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/c8dcd18c-a8ae-e6aa-2857-73fd70af502b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/b25b02dc-b444-7a4b-fbaa-205ad205ac31.png)



↑こちらを参考にしました。
[他のPCからphpMyAdminにアクセスする-XAMPP](https://jobtech.jp/mysql/1167/)



実際にphpmyadminへ接続してみましょう。
http://localhost/phpmyadmin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/47052955-2c57-ca13-4b3f-b82a1124624c.png)
ユーザ名：RDSインスタンス作成時に設定したユーザ名
パスワード：RDSインスタンス作成時に設定したパスワード
でログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/0d3cf4f7-6d74-ac2a-c545-18a5ca59774d.png)
GUIでテーブル作成などが簡単に出来ちゃいます！便利ですね！

##５．VBAのサンプルコード
データベースへ接続し、SQLでレコードセットを開くところまでをご紹介します。

```vb
Dim adoCON As ADODB.Connection
Dim adoRS  As ADODB.Recordset
Dim strSQL As String
adoCON.Open _
"DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _
" SERVER=RDSインスタンスのホスト名;" & _
" PORT=ポート番号;" & _
" DATABASE=DB名;" & _
" UID=ユーザ名;" & _
" PWD=パスワード;"
strSQL = "SELECT * FROM テーブル名"
adoRS.Open strSQL, adoCON, adOpenDynamic

```

##おまけ
AccessからMySQLへのデータ移行(マイグレーション)をご紹介したいと思います。
移行ツールは**MySQL Migration Toolkit**を使います。
下記から、インストーラをダウンロードして実行します。
[MySQL Migration Toolkit ](https://downloads.mysql.com/archives/migration/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/4ba816b2-d8c6-873f-74b6-7ef2bc0542d3.png)
インストールされたMySQL Migration Toolkitを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/3463ed2e-1b2e-6a83-904f-b3f684458ac9.png)
そのままNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/410584a7-e8ba-a276-20d6-d09b359fa732.png)
Database System：MS Access
Database File：移行するAccessのファイルを選択
**※ファイル名を半角英数字にしておきましょう。**全角を使うと後でエラーとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/63c68750-8d5d-6b4d-a734-0335e4477435.png)
Hostname：RDSインスタンスのホスト名
Port：ポート番号
Username：ユーザ名
Passsword：パスワード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/affc4676-0faa-0699-1097-287b0d46849a.png)
スキーマを選んでNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/2f39c211-4ae4-b19d-1862-001e754b9903.png)
そのままNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/e489025b-0686-3cd2-8688-2c6e541ce3d3.png)
charset=sjis
collation=sjis_bin
に変更してNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/d6a038c7-7738-a900-ba1f-aa2760681b70.png)
そのままNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/8dea6445-02c0-4721-25b5-f6c114572b15.png)
そのままNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/d80af062-d6be-68db-d1bd-53bb2400ca2f.png)
そのままNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/d255219c-2999-0393-df93-eb8d72ead7aa.png)
そのままNEXT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/85aaf099-e0fb-74ca-cbad-9f85286d9acf.png)
Finishで終了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1980545/6d1bf6b7-9276-fabd-ff55-f6e60ef5116c.png)
##おわりに
以上、クライアントPCからAWSのRDSへ接続する設定をご紹介しました。
AWS初心者だった頃の私は、これを実装するのに2～3か月程度かかってました。
テキストなどで学ぶよりも実際に手を動かして覚えるのがエンジニアの基本だなと改めて痛感しました。