EC2 ユーザーデータ

AWS インスタンスユーザーデータとは?

インスタンス起動時に自動実行できるスクリプトやコマンドのこと。
インスタンスを作ったあとに毎回手動でやる設定を、自動化する仕組み

シェルスクリプトで書きます。

#!/bin/bash

#Apache(httpd)インストール
echo "===yum install -y httpd===" #見出し
yum install -y httpd

# Webサーバー起動
echo "===systemctl start httpd.service===" #見出し
systemctl start httpd.service
echo "===systemctl enable httpd.service===" #見出し
systemctl enable httpd.service

# トークン取得
echo "===get token===" #見出し
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
echo $TOKEN

# トークンをヘッダーに付けてインスタンスID取得
echo "===get instance-id >> /tmp/test===" #見出し
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/instance-id >> /tmp/test

# トークンをヘッダーに付けてタグ取得
echo "===get Tag===" #見出し
echo "Name tag" >> /tmp/test #見出し
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \
	http://169.254.169.254/latest/meta-data/tags/instance/Name >> /tmp/test

echo "Environment tag" >> /tmp/test #見出し
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \
	http://169.254.169.254/latest/meta-data/tags/instance/Environment >> /tmp/test

📜 curl -s -Hとは?

  • curl:HTTPリクエストを送るコマンド
  • ssilent):
    • 進捗バーやエラー表示を非表示にする(出力が静かになる)
  • Hheader):
    • リクエストヘッダーを追加する

🔥 169.254.169.254とは?

AWS EC2インスタンスが自分自身に関する情報を取得するための**「メタデータAPI」**のIPアドレスです。

つまり、EC2インスタンス内部からだけアクセスできる、AWSが自動で提供している特殊なAPIサーバーです。

📜 ユーザーデータ起動ログの確認コマンド

sudo cat /var/log/cloud-init-output.log
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次