この記事では、クラウドフォーメーションテンプレートを使用してAWSRDSでMySQLインスタンスを設定する方法について説明します。前回の記事「MySQL用にAmazonRDS環境を設定する方法」では、AmazonでMySQLインスタンスを設定する方法の詳細なウォークスルーを提供しました。 AWSコンソールを使用して、インスタンスのセットアップに必要なすべての情報を提供し、それを使用できます。ただし、この記事では、クラウドフォーメーションテンプレートを使用して同じ機能を自動化して実現する方法について説明します。
CloudFormationテンプレートとは何ですか?
テンプレートの作成を開始するには、まず雲の形成とは何かを理解する必要があります。 AWSは、クラウドフォーメーションをクラウドサービスとして提供しています。これにより、AWSのお客様は、インフラストラクチャの目的の状態をコードとして記述し、それを使用してAWSにリソースをデプロイできます。簡単な構成テンプレートに従うことで、リソースまたはリソースのグループを作成できます。たとえば、RDSデータベースも使用するEC2インスタンスにウェブアプリケーションをデプロイする場合は、両方のリソースを1つのスタックに結合し、インスタンスを設定するためのコードを記述できます。実行すると、EC2インスタンスとRDSインスタンスの両方が作成され、Webアプリケーションもデプロイされます。
図1-AWSコンソールのCloudFormationテンプレート
クラウド形成テンプレートのコンポーネントは次のとおりです。
- JSON またはYAML リソースがテンプレートとして定義されるファイル
- スタックは、アプリケーションの一部として設定する必要のある複数のリソースの組み合わせにすることができます。たとえば、EC2とRDS
- チェンジセットを使用して、スタックによって実行される操作のリストを表示できます
- スタックセットは、複製または複製されるスタックの管理されたグループと見なすこともできます
上記のうち、この記事では主にJSON/YAMLテンプレートとスタックに焦点を当てます。テンプレートは、AWSのさまざまなリソースをサポートしています。完全なリストを入手するには、このリンクをたどってください。
JSONまたはYAMLテンプレートファイルの作成
テンプレートを初めて作成するときに直面する主な課題の1つは、どのコンテンツをテンプレートに含めるかです。これを容易にするために、AWSは公式ドキュメントで簡単に見つけることができる多くのテンプレートサンプルを提供しています。必要なリソースを作成するために必要なテンプレートを見つけたら、それを使用して独自のテンプレートを作成できます。テンプレートは、JSONまたはYAMLを使用して作成し、相互に変換することもできます。個人的なメモとして、YAMLを使用してテンプレートを作成することを好みます。これは、中括弧やコンマを避け、ドキュメントをよりクリーンに保つのに役立ちます。ただし、JSONとYAMLの間で任意のオプションを自由に選択できます。
この演習では、RDSでMySQLインスタンスを起動して、YAMLでコードを記述します。クラウドフォーメーションを使用してMySQLデータベースを設定するには、次のアイテムが必要です。
- リソース名 –設定するリソースの名前。
- リソースタイプ –リソースのタイプ。
- リソースのプロパティ –接続するデータベース名、ユーザー名、およびパスワード。
- データベースエンジン – MySQL、SQL Server、PostgreSQLなど
- ストレージタイプ –使用するストレージタイプ。
- パブリックアクセシビリティ –データベースの天気予報にパブリックアクセスがあるかどうか。
- 割り当てられたメモリ –データベースインスタンスに割り当てる必要のあるメモリ。
- AWSリージョン –インスタンスが作成されるリージョン。
これでいくつかのポイントが得られたので、先に進んでテンプレートファイルの作成から始めましょう。
https://gist.github.com/aveek22/a188b02abde65479bbba2deba5ec90d6
図2–RDSでMySQLインスタンスを作成するためのテンプレートファイル
上の図でわかるように、ファイルの構造は2つの部分に分かれています。最初の部分では、AWSでリソースを作成するときに、2番目の部分のリソース定義で使用されるいくつかのパラメーターを定義しました。マシンで同じスクリプトを使用して、AWSアカウントにインスタンスを作成できます。
コンソールでのスタックの設定
MySQLのテンプレートを作成したので、すべてが正常に実行されるかどうかを確認するためにテンプレートを設定します。 AWSコンソールに移動し、検索バーでクラウドフォーメーションを検索します。 [スタックの作成]をクリックして、ローカルからテンプレートファイルをアップロードします。 [次へ]をクリックします 一度完了しました。
図3–テンプレートからのスタックの作成
次のページでは、雲形成テンプレートで定義されたパラメータを提供するように求められます。先に進み、必要な詳細を入力して、[次へ]をクリックします 。
図4–提供されるスタックパラメータ
スタックの変更とパラメータを確認し、スタックの作成をクリックします 最後のページに。スタックの作成が始まります。すべてのリソースを使用できるようになるまでに、作成に時間がかかる場合があります。それまでの間、[再読み込み]ボタンをクリックして、すべてのイベントが正常に作成されたかどうかを確認できます。
図5–進行中のスタック作成
タイムスタンプでわかるように、リソースが利用可能になり、コンソールにも表示されるようになるまで、約6分かかりました。 リソースに移動します タブをクリックして、物理IDをクリックします リソースの。これにより、RDSコンソールに移動します。
図6–スタックが正常に作成されました
MySQLデータベースへの接続
RDSコンソールに入ると、データベースインスタンスのホスト名を取得し、それを使用してデータベースに接続できます。 エンドポイントを取得します コンソールから接続し、それを使用して接続します。
図7–RDS上のMySQLインスタンスの詳細
次に、MySQL Workbenchに移動して、前に提供した資格情報を使用してホスト名に接続してみましょう。ホスト名、ユーザー名、パスワードを使用してインスタンスに接続します。
図8–MySQLWorkbenchを使用したMySQLインスタンスへの接続
上の図からわかるように、RDS上のデータベースインスタンスに正常に接続できました。ここで、いくつかのクエリを実行して、それが機能するかどうかを確認しましょう。
図9–MySQLWorkbenchでのスクリプトの実行
上の図からわかるように、データベースインスタンスに接続してクエリを実行することができました。これにより、独自のクラウド形成テンプレートを作成し、SQLServerやPostgreSQLデータベースなどの他のリソースを起動できます。
リソースの削除
これを演習として実行する場合は、料金が発生するため、作成したリソースを削除することをお勧めします。 RDSコンソールに移動してインスタンスを選択し、[削除]をクリックします。 リソースを完全に削除します。
図10–作成されたリソースの削除
リソースが正常に削除されたら、不要な請求コストの追加を回避するためだけに、実行中のインスタンスがあるかどうかをコンソールでもう一度確認できます。
結論
この記事では、AWS RDS環境でMySQLデータベースインスタンスをセットアップし、クラウドフォーメーションテンプレートを使用してそれを自動化する方法について詳しく説明しました。このように、クラウドにリソースを設定することは、Infrastructure-as-Codeサービスとも呼ばれ、インフラストラクチャ全体をコードとして設定して、さまざまな環境で使用できます。これらのテンプレートは、データベースインスタンスをデプロイするだけでなく、EC2、Lambda、RedShiftなどのAWS内の他のインフラストラクチャにも使用できます。クラウド形成テンプレートの詳細については、公式ウェブサイトで入手できるサンプルテンプレートをご覧ください。