Open1

AWS;スプリント1-7

konakona

【AWS初心者向け】EC2インスタンス構築とメタデータ取得のデモ手順(Amazon Linux 2023)

AWS EC2インスタンスを構築し、ユーザーデータを用いて HTTPD インストールやインスタンスメタデータを取得する一連の流れを紹介します。

👉 日本語で自然に学べるAIサイト:gptjp.net


✅ 1. EC2インスタンスの作成

以下の設定で EC2 を立ち上げます。

  • タグ
    • Name: test-ec2-1
    • Environment: prod
  • OS: Amazon Linux 2023
  • インスタンスタイプ: t2.micro
  • キーペア: 既存のキーペアを使用
  • VPC: デフォルト
  • パブリックIPアドレス: 割り当てあり
  • セキュリティグループ: test-sg-1(SSH のみ許可)
  • ストレージ: EBS(デフォルト)
  • 高度な設定: メタデータのタグの許可 → 有効化

✅ 2. ユーザーデータスクリプト

#!/bin/bash

echo "===yum -y install httpd==="
yum -y install httpd

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

echo "===get instance-id >> /tmp/test==="
echo "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
☝️ 上記スクリプトで、HTTPD のインストールと起動、インスタンス ID・タグ情報の取得を /tmp/test に出力します。

✅ 3. TeraTermからの確認
SSHでログイン後、以下のコマンドでファイル内容を確認します。


cat /tmp/test
出力例:


instance-id
i-013b71c99738c58be
Name tag
test-ec2-1
Environment tag
prod
✅ 4. Cloud-initログの確認
/var/log/cloud-init-output.log にてユーザーデータの実行結果を確認できます。
たとえば yum エラーが発生しているケース:


Error: Unable to find a match: httpd
Failed to start httpd.service: Unit httpd.service not found.
これは、Amazon Linux 2023 のリポジトリにタイムアウトまたは httpd が存在しない可能性があるため、OSに応じた対処が必要です。

💡補足
amazon-linux-extras は Amazon Linux 2 専用で、2023には非対応

必要に応じて dnf install やリポジトリ設定を検討してください