🫠
EC2のユーザーデータが実行されない
こんにちは!ta8i2chi8です。
EC2のユーザーデータにスクリプトを記述しているにもかかわらず実行されない問題で時間を溶かしてしまったので、書き残したいと思います。
※初歩的な問題でした。。
結論
原因はユーザーデータの行頭に#!/bin/bash
を指定していないためでした。
行頭に#!/bin/bash
を指定すれば解決しました。
#!/bin/bash ←これが抜けていた
sudo sudo yum update -y
sudo amazon-linux-extras install php7.4 -y
sudo yum -y install mysql httpd php-mbstring php-xml
wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
sudo cp -r /tmp/wordpress/* /var/www/html/
sudo chown apache:apache -R /var/www/html
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
ユーザーデータとは
ユーザーデータとは、EC2インスタンスの起動時に実行されるスクリプトやコマンドを指定できる仕組みです。これにより、インスタンス起動直後に自動で初期設定やソフトウェアのインストールを行うことができます。
ユーザーデータは通常、以下のような用途で使用されます:
- Webサーバーの自動セットアップ(例: NginxやApacheのインストール)
- 環境変数の設定や初期ファイルの配置
- セキュリティパッチの適用などの初期タスクの自動実行
ユーザーデータのスクリプトはシェルスクリプト(#!/bin/bash
)として記述するのが一般的です。
正しく設定することで、手動作業を減らし、サーバー構築の時間を大幅に短縮できるため、効率的なインフラ管理に欠かせない機能です。
発生した問題
EC2にWordPressをインストールする処理を自動化したかったため、ユーザーデータに以下スクリプトを記述しました。
しかし、httpd等が起動されず調査することに。
sudo sudo yum update -y
sudo amazon-linux-extras install php7.4 -y
sudo yum -y install mysql httpd php-mbstring php-xml
wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
sudo cp -r /tmp/wordpress/* /var/www/html/
sudo chown apache:apache -R /var/www/html
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
解決方法
ユーザーデータの行頭に#!/bin/bash
を指定していない点が原因でした。
行頭に#!/bin/bash
を指定すれば解決しました。
#!/bin/bash ←これが抜けていた
sudo sudo yum update -y
sudo amazon-linux-extras install php7.4 -y
sudo yum -y install mysql httpd php-mbstring php-xml
wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
sudo cp -r /tmp/wordpress/* /var/www/html/
sudo chown apache:apache -R /var/www/html
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
さいごに
単純なミスに詰まってしまって、お恥ずかしい限りです。
ひとまず解決できてよかったです。
参考
Discussion