【IaC】Amazon EC2の起動時にUserdataでMySQL処理を行う方法
はじめに
こんにちは。新入社員のkisaragiです。
この記事ではIaCでMySQL処理を行う方法について話します。今回はTerraformを題材とします。
そして、初心者として失敗したパターンも紹介していきます。
環境・前提
- OS : Amazon linux 2
- Terraform ( v1.5.2 )
- RDS for MySQL ( v8.0.32 )
▼ Amazon Linux2はそのままだとmysqlコマンドが使えないので、インストールする必要があります。
本記事では下記のコードは省略しますが、今後扱うMySQL処理のコード内にも必ず入力してください。
user_data = EOF #!/bin/bash yum -y update yum -y install mysql EOF
UserdataでMySQL処理を行う方法
▼ UserdataでMySQL処理を行うサンプルコードです。
user_data = EOF mysql -h RDSのエンドポイント -u user -ppassword -e "create database test;" EOF
UserdataでMySQL処理を実行するには「MySQLへの接続と -e コマンドを一緒に使う必要があります。」
💡 -e (–execute) オプション
- コマンドラインから直接SQL処理を行うコマンド
▼ 複数のクエリ処理も可能です。
user_data = EOF mysql -h RDSのエンドポイント -u user -ppassword -e "create database test;create database test2;" EOF
▼ 行を分けたい時は、下記のように書きます。
( データベースへのアクセスが多くなるため、推奨しません。)
user_data = EOF mysql -h RDSのエンドポイント -u user -ppassword -e "create database test;" mysql -h RDSのエンドポイント -u user -ppassword -e "create database test2;" EOF
失敗パターン
- 行を分けてしまったパターン
user_data = EOF mysql -h RDSのエンドポイント -u user -p password create database test; EOF
▲ EC2のコンソール画面では、passwordを行を分けても接続が可能です。
しかし、IaCでは行を分けてしまうと、実行できないので気を付けてください。 - -p オプションの後に空白スペースを入れたパターン
user_data = EOF mysql -h RDSのエンドポイント -u user -p password EOF
-u の後は -u user のように、空白スペースが入ります。
しかし、-p オプションの後は -p passwordのように空白スペースを入れてはいけません。
▼ のように必ず -p オプションの後は空白スペースがないようにしてください。-u user -ppassword
- -e オプションを使わなかったパターン
user_data = EOF mysql -h RDSのエンドポイント -u user -ppassword "create database test;" EOF
-e オプションを使わないと、クエリを処理できません。
Userdataでクエリを処理したい時は必ず -e オプションを使ってください。
最後に
今回はEC2起動時にUserdataでMySQL処理を行う方法について学びました。
ログを見ても原因がわかりづらいので、解決が難しいエラーだと思います。
この記事で、UserdataでのMySQL処理で困っている皆さんに役に立ったら嬉しいです。
以上、「kisaragi」がお送りしました。
2023年度新卒入社。クラウドエンジニア。出身は韓国です。 2月生まれの「如月」です。宜しくお願い致します。 尊敬するエンジニア:Cold-Airflowさん
Recommends
こちらもおすすめ
-
AWS Summit Tokyo 2018 数字でみるAWSのすごさ
2018.6.1
-
Amazon AppStream 2.0 #AWS #SaaS
2023.3.27
-
【ハンズオン】AWSで実用的なWordPressを構築してみる!
2022.8.31
Special Topics
注目記事はこちら

AWSの料金が 8 %割引になる!
『AWSの請求代行リセールサービス』
2023.01.15

アクセス集中でのサービス停止を回避!AWSを活用した障害への対処法
2023.1.31