Aurora MySQL DB クラスターの作成と接続 - Amazon Aurora

Aurora MySQL DB クラスターの作成と接続

このチュートリアルでは、EC2 インスタンスと Aurora MySQL DB クラスターを作成します。このチュートリアルでは、標準の MySQL クライアントを使用して EC2 インスタンスから DB クラスターにアクセスする方法を説明します。ベストプラクティスとして、このチュートリアルでは、プライベート DB クラスターを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB クラスターにアクセスできますが、VPC 外部のリソースはアクセスできません。

チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。

重要

AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

次の図は、チュートリアルが完了した時点の設定を示しています。


				EC2 インスタンスと Aurora MySQL DB クラスター。

このチュートリアルでは、次のいずれかの方法を使用してリソースを作成できます。

  1. AWS Management Console を使用する ‐「ステップ 1: EC2 インスタンスを作成する」と「ステップ 2: Aurora MySQL DB クラスターを作成する

  2. AWS CloudFormation を使用してデータベースインスタンスと EC2 インスタンスを作成する ‐ (オプション) AWS CloudFormation を使用して VPC、EC2 インスタンス、および Aurora MySQL クラスターを作成する

最初の方法では、[簡単作成] を使用して、AWS Management Console でプライベート Aurora MySQL DB クラスターを作成します。DB エンジンタイプ、DB インスタンスサイズ、および DB クラスター識別子のみを指定します。[Easy create (簡易作成)] では、他の設定オプションのデフォルト設定を使用します。

代わりに [標準作成] を使用する場合は、DB クラスターの作成時にさらに多くの設定オプションを指定できます。このようなオプションには、可用性、セキュリティ、バックアップ、メンテナンスの設定があります。パブリック DB クラスターを作成するには、[標準作成] を使用する必要があります。詳細については、Amazon Aurora DB クラスターの作成 を参照してください。

前提条件

開始する前に、以下のセクションのステップを完了してください。

ステップ 1: EC2 インスタンスを作成する

データベースへの接続に使用する Amazon EC2 インスタンスを作成します。

EC2 インスタンスを作成するには
  1. AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. AWS Management Console の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。

  3. 次の図に示すように、[EC2 ダッシュボード] を選択し、次に [インスタンスの起動] を選択します。

    
                    EC2 ダッシュボード。

    [インスタンスを起動] ページが開きます。

  4. [インスタンスを起動] ページで次の設定を選択します。

    1. [Name and tags] (名前とタグ) の、[Name] (名前) で、ec2-database-connect と入力します。

    2. [アプリケーションおよび OS イメージ (Amazon マシンイメージ)] で、[Amazon Linux] を選択し、[Amazon Linux 2023 AMI] を選択します。他の選択肢は、デフォルトの選択のままにします。

      
                            Amazon Machine Image を選択します。
    3. [Instance type] (インスタンスタイプ) で [t2.micro] を選択します。

    4. [Key pair (login)] (キーペア (ログイン)) で、[Key pair name] (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、[Create new key pair] (新しい key pair を作成する) を選択し、[Create key pair] (キーペアを作成する) ウィンドウを使用して作成します。

      キーペアの作成については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「キーペアの作成」を参照してください。

    5. ネットワーク設定の [SSH トラフィックを許可] で、EC2 インスタンスへの SSH 接続のソースを選択します。

      表示された IP アドレスが SSH 接続に適している場合は、[My IP] (マイ IP)を選択できます。それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、https://checkip.amazonaws.com のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。

      多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。

      警告

      SSH アクセスに 0.0.0.0/0 を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

      以下のイメージは、[ネットワーク設定] セクションの例を示しています。

      
                            EC2 インスタンスのネットワーク設定。
    6. 残りのセクションをデフォルト値のままにします。

    7. [概要] パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、[インスタンスの起動] を選択します。

  5. [起動ステータス] ページで、新しい EC2 インスタンスの ID (例: i-1234567890abcdef0) をメモします。

    
                    [起動ステータス] ページの EC2 インスタンス ID。
  6. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。

  7. [詳細] タブで、SSH を使用して接続するときに必要な次の値を書き留めます。

    1. [インスタンスの概要] で、[パブリック IPv4 DNS] の値を書き留めます。

      
                            [インスタンス] ページの [詳細] タブにある EC2 パブリック DNS 名。
    2. [インスタンスの詳細] で、[キーペア名] の値を書き留めます。

      
                            [インスタンス] ページの [詳細] タブにある EC2 キーペア名。
  8. EC2 インスタンスの [インスタンス状態][実行中] になるまで待ってから、続行します。

ステップ 2: Aurora MySQL DB クラスターを作成する

この例では、[簡易作成] を使用して、db.r6g.large DB インスタンスクラスで Aurora MySQL DB クラスターを作成します。

簡易作成で Aurora MySQL DB クラスターを作成するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/ を開きます。

  2. Amazon RDS コンソールの右上で、DB クラスターを作成する AWS リージョン を選択します。

  3. ナビゲーションペインで、[データベース] を選択します。

  4. [Create database (データベースの作成)] を選択し、[Easy create (簡易作成)] が選択されていることを確認します。

    
							簡易作成オプション。
  5. [設定] で、[エンジンタイプ] として、[Aurora (MySQL 互換)] を選択します。

  6. [DB インスタンスサイズ] で、[Dev/Test] を選択します。

  7. [DB クラスター識別子] として、database-test1 を入力します。

    [データベースの作成] ページは、次のイメージのようになります。

    
							データベースの作成ページ。
  8. [マスターユーザー名] に、マスターユーザーの名前を入力するか、デフォルト名のままにします。

  9. DB クラスター用に自動生成されたマスターパスワードを使用するには、[パスワードの自動生成] を選択します。

    マスターパスワードを入力するには、[パスワードの自動生成] をオフにして、[マスターパスワード][パスワードの確認] に同じパスワードを入力します。

  10. 以前に作成した EC2 インスタンスとの接続をセットアップするには、[EC2 接続のセットアップ - オプション] を開きます。

    [EC2 コンピューティングリソースに接続] を選択します。以前に作成した EC2 インスタンスを選択します。

    
							[EC2 接続のセットアップ] オプション。
  11. [簡易作成のデフォルト設定を表示] を開きます。

    
							簡易作成のデフォルト設定。

    [Easy Create (簡易作成)] で使用されるデフォルト設定を調べることができます。[データベース作成後に編集可能] 列には、データベース作成後に変更できるオプションが表示されます。

    • その列の設定に [いいえ] があり、別の設定が必要な場合は、[標準作成] を使用して DB クラスターを作成できます。

    • その列の設定に [はい] があり、別の設定が必要な場合は、[標準作成] を使用して DB クラスターを作成するか、DB クラスターの作成後に設定を変更できます。

  12. [データベースの作成] を選択します。

    DB クラスターのマスターユーザー名とパスワードを表示するには、[認証情報の詳細の表示] を選択します。

    表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB クラスターに接続できます。

    重要

    マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。

    DB クラスターが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、DB クラスターを変更することができます。DB クラスターの変更の詳細については、「Amazon Aurora DB クラスターの変更」を参照してください。

  13. [データベース] リストで、新しい Aurora MySQL DB クラスターの名前を選択し、詳細を表示します。

    DB クラスターが使用できるようになるまで、ライターインスタンスのステータスは [作成中] のままです。

    
							DB クラスターの詳細。

    ライターインスタンスのステータスが [使用可能] に変わったら、DB クラスターに接続できます。DB インスタンスクラスとストレージの合計によっては、新しい DB クラスターを使用できるようになるまで最長 20 分かかることがあります。

(オプション) AWS CloudFormation を使用して VPC、EC2 インスタンス、および Aurora MySQL クラスターを作成する

コンソールを使用して VPC、EC2 インスタンス、および Aurora MySQL DB クラスターを作成する代わりに、インフラストラクチャをコードとして扱うことで、AWS CloudFormation を使用して AWS リソースをプロビジョニングできます。AWS リソースをより小さく管理しやすい単位に整理するには、AWS CloudFormation のネストされたスタック機能を使用できます。詳細については、「AWS CloudFormation コンソールでのスタックの作成」と「ネストされたスタックの操作」を参照してください。

重要

AWS CloudFormation は無料ですが、CloudFormation が作成するリソースは実動のものです。これらのリソースを終了するまで、標準使用料が発生します。合計料金はごくわずかです。料金を最小限に抑える方法については、「AWS 無料利用枠」を参照してください。

AWS CloudFormation コンソールを使用してリソースを作成するには、以下のステップを実行します。

  • ステップ 1: CloudFormation テンプレートをダウンロードする

  • ステップ 2: CloudFormation を使用してリソースを設定する

CloudFormation テンプレートをダウンロードする

CloudFormation テンプレートは、スタックで作成するリソースの設定情報を含む JSON または YAML テキストファイルです。このテンプレートは、Aurora クラスターとともに VPC と踏み台ホストも作成します。

テンプレートファイルをダウンロードするには、次のリンク Aurora MySQL CloudFormation テンプレートを開きます。

この Github ページで、[Download raw file] ボタンをクリックしてテンプレートの YAML ファイルを保存します。

CloudFormation を使用してリソースを設定する

注記

このプロセスを開始する前に、AWS アカウント に EC2 インスタンスのキーペアがあることを確認してください。詳細については、「Amazon EC2 キーペアおよび Linux インスタンス」を参照してください。

AWS CloudFormation テンプレートを使用する場合は、適切なパラメータを選択して、リソースが正しく作成されていることを確認する必要があります。以下のステップを実行します。

  1. AWS Management Console にサインインし、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. [Create Stack] (スタックの作成) を選択します。

  3. [テンプレートの指定] セクションで、[コンピュータからテンプレートファイルをアップロード] を選択し、[次へ] をクリックします。

  4. [スタックの詳細を指定] ページで、以下のパラメータを設定します。

    1. [スタック名]AurMySQLTestStack に設定します。

    2. [パラメータ] で、2 つのアベイラビリティーゾーンを選択して [アベイラビリティーゾーン] を設定します。

    3. [Linux 踏み台ホスト設定] で、[キー名] に EC2 インスタンスにログインするキーペアを選択します。

    4. [Linux 踏み台ホスト設定] で、[許可された IP 範囲] を IP アドレスに設定します。Secure Shell (SSH) を使用して VPC 内の EC2 インスタンスに接続するには、https://checkip.amazonaws.com のサービスを使用してパブリック IP アドレスを確認します。IP アドレスの例は 192.0.2.1/32 です。

      警告

      SSH アクセスに 0.0.0.0/0 を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

    5. [データベース全般設定] で、[データベースインスタンスクラス]db.r6g.large に設定します。

    6. [データベース名]database-test1 に設定します。

    7. [データベースマスターユーザー名] には、PDB のマスターユーザー名を入力します。

    8. このチュートリアルでは、[Secrets Manager で DB マスターユーザーパスワードを管理]false に設定します。

    9. [データベースパスワード] には、任意のパスワードを設定します。このパスワードは、チュートリアルの他の手順のために覚えておいてください。

    10. [マルチ AZ 配置]false に設定します。

    11. その他の設定は、すべてデフォルト値のままにします。[次へ] をクリックして続行します。

  5. [スタックオプションの設定] ページでは、すべてのデフォルトオプションをそのまま使用します。[次へ] をクリックして続行します。

  6. [スタックの確認] ページで、データベースと Linux 踏み台ホストのオプションを確認した後、[送信] をクリックします。

スタックの作成プロセスが完了したら、データベースへの接続に必要な情報を書き留めるために、BastionStackAMSNS という名前のスタックを表示します。詳細については、「AWS CloudFormation スタックデータとリソースを AWS Management Console に表示」を参照してください。

ステップ 3: Aurora MySQL DB クラスターに接続する

標準の SQL クライアントアプリケーションを使用して、DB クラスターに接続できます。この例では、mysql コマンドラインクライアントを使用して、Aurora MySQL DB クラスターに接続します。

Aurora MySQL DB クラスターに接続するには
  1. DB クラスターのライターインスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

    1. AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/ を開きます。

    2. Amazon RDS コンソールの右上で、DB クラスターの AWS リージョン を選択します。

    3. ナビゲーションペインで、[データベース] を選択します。

    4. Aurora MySQL DB クラスターの名前を選択して、詳細を表示します。

    5. [接続とセキュリティ] タブで、ライターインスタンスのエンドポイントをコピーします。また、ポート番号を書き留めます。DB クラスターに接続するには、エンドポイントとポート番号の両方が必要です。

      
									Aurora MySQL DB クラスターに接続します。
  2. Linux インスタンスに関する Amazon EC2 ユーザーガイドの「Linux インスタンスに接続する」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

    SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。

    ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name

    例えば、ec2-database-connect-key-pair.pem が Linux の /dir1 に保存されていて、EC2 インスタンスのパブリック IPv4 DNS が ec2-12-345-678-90.compute-1.amazonaws.com であるとします。その場合、SSH コマンドは次のようになります。

    ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
  3. EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。そのためには、次のコマンドを使用します。

    注記

    -y オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。

    sudo dnf update -y
  4. Amazon Linux 2023 で MariaDB から mysql コマンドラインクライアントをインストールするには、次のコマンドを実行します。

    sudo dnf install mariadb105
  5. Aurora MySQL DB クラスターに接続します。例えば、次のコマンドを入力します。このアクションにより、MySQL クライアントを使用して、Aurora MySQL DB クラスターに接続できます。

    endpoint をライターインスタンスのエンドポイントに置き換え、admin を、使用したマスターユーザー名に置き換えます。パスワードの入力を求められたときに使用したマスターパスワードを入力します。

    mysql -h endpoint -P 3306 -u admin -p

    ユーザーのパスワードを入力すると、次のような出力が表示されます。

    Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 217 Server version: 8.0.23 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>

    Aurora MySQL DB クラスターへの接続の詳細については、「Amazon Aurora MySQL DB クラスターへの接続」を参照してください。DB クラスターに接続できない場合は、Amazon RDS DB インスタンスに接続できない を参照してください。

    セキュリティのためには、暗号化された接続を使用することがベストプラクティスです。クライアントとサーバーが同じ VPC にあり、ネットワークが信頼されている場合に限り、暗号化されていない MySQL 接続を使用します。暗号化された接続の使用については、「Aurora MySQL の SSL での接続」を参照してください。

  6. SQL コマンドを実行する。

    例えば、次の SQL コマンドは、現在の日付と時刻を表示します。

    SELECT CURRENT_TIMESTAMP;

ステップ 4: EC2 インスタンスと DB クラスターを削除する

作成したサンプル EC2 インスタンスと DB クラスターに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。

AWS CloudFormation を使用してリソースを作成した場合は、このステップをスキップして次のステップに進みます。

EC2 インスタンスを削除するには
  1. AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. EC2 インスタンスを選択し、[インスタンスの状態]、[インスタンスの終了] の順に選択します。

  4. 確認を求めるメッセージが表示されたら、[Terminate (終了)] を選択します。

EC2 インスタンスの削除の詳細については、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「インスタンスの終了」を参照してください。

DB クラスターを削除するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/ を開きます。

  2. [データベース] を選択後、DB クラスターに関連付けられた DB インスタンスを選択します。

  3. [アクション] で、[削除] を選択します。

  4. [最終スナップショットを作成] をオフにします。

  5. 確認を完了し、[削除] を選択します。

DB クラスターに関連付けられている DB インスタンスがすべて削除されると、DB クラスターは自動的に削除されます。

(オプション) CloudFormation で作成された EC2 インスタンスと DB クラスターを削除する

AWS CloudFormation を使用してリソースを作成した場合、作成したサンプル EC2 インスタンスと DB クラスターに接続して、探索した後に CloudFormation を削除することで、料金がこれ以上発生しないようにします。

CloudFormation リソースを削除するには
  1. AWS CloudFormation コンソールを開きます。

  2. CloudFormation コンソールの [スタック] ページで、ルートスタック (VPCStack BastionStack、BastionStack、または AMSNS という名前のスタック) を選択します。

  3. [削除] を選択します。

  4. 確認を求めるメッセージが表示されたら、[削除] を選択します。

CloudFormation のスタックの削除に関する詳細は、AWS CloudFormation ユーザーガイドの「AWS CloudFormation コンソールでスタックの削除」を参照してください。

(オプション) DB クラスターを Lambda 関数に接続する

Aurora MySQL DB クラスターを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「Lambda 関数と Aurora DB クラスターを自動的に接続する」を参照してください。