0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

#2 AWS CLIでEC2を作成する

Last updated at Posted at 2023-07-04

はじめに

AWS CLIでEC2を構築する手順です。構成図は以下の通りです。
ec2.png

手順

1.ユーザデータファイルの作成

以下の手順を実行します。

  • ユーザデータ用ディレクトリの作成
  • ユーザデータファイルの指定
  • ユーザデータファイルの作成

設定値の指定

##ユーザデータ用ディレクトリ作成

#変数の設定
DIR_USER_DATA="${HOME}/environment/conf-handson-ec2-1st"

#確認し、存在しない場合作成
ls -d ${DIR_USER_DATA} > /dev/null 2>&1 \
  || mkdir -p ${DIR_USER_DATA}

##ユーザデータファイル名の指定

#変数の設定
USER_DATA_NAME='handson-ec2-1st-httpd-userdata'
FILE_USER_DATA="${DIR_USER_DATA}/${USER_DATA_NAME}.bash" \
  && echo ${FILE_USER_DATA}

設定値の確認

#設定値の確認
cat << END

  # 1. DIR_USER_DATA:"${HOME}/environment/conf-handson-ec2-1st"
       DIR_USER_DATA="${DIR_USER_DATA}"
  # 2. FILE_USER_DATA:"${HOME}/environment/conf-handson-ec2-1st/handson-ec2-1st-httpd-userdata.bash"
       FILE_USER_DATA="${FILE_USER_DATA}"

END

処理の実行

#変数の確認
cat << END

  # FILE_USER_DATA:"${HOME}/environment/conf-handson-ec2-1st/handson-ec2-1st-httpd-userdata.bash"
    FILE_USER_DATA="${FILE_USER_DATA}"

END

#ユーザデータファイルの作成
cat << EOF > ${FILE_USER_DATA}
#!/bin/bash

sudu su -
yum -y update

# レポジトリからphp7.2 install yes
amazon-linux-extras install php7.2 -y

# wordpress(PHP)に必要なソフトをインストールする
yum -y install mysql httpd php-mbstring php-xml gd php-gd

#apacheの起動
systemctl start httpd.service

#apache有効化
systemctl enable httpd.service

# wget(HTTP/(S)でダウンロード) 最新のwordpress tar.gz形式
wget http://ja.wordpress.org/latest-ja.tar.gz -O /usr/local/src/latest-ja.tar.gz

#ディレクトリ移動  ダウンロードは一般的にここに入れる
cd /usr/local/src/

#tar.gz形式の最新のwordpressを展開する。 
#z(gzip)x(展開)v(詳細表示)f(ファイル指定)
tar zxvf latest-ja.tar.gz

#カレントディレクトリにあるwordpressとサブディレクトリすべてを /var/www/html/のは以下にコピー
cp -r wordpress/* /var/www/html/

#/var/www/htmlの権限をapacheの所有者apacheのユーザーにする
chown apache:apache -R /var/www/html

EOF

cat ${FILE_USER_DATA}

完了確認

ls ${FILE_USER_DATA}

2.EC2インスタンスの作成

設定値の指定

##設定値の指定

#リージョンの指定
export AWS_DEFAULT_REGION='ap-northeast-1'

#ec2インスタンスのタグ名
EC2_INSTANCE_TAG_NAME='handson-ec2-1st-instance'

#起動時に利用するAMIイメージ名
EC2_INSTANCE_IMAGE_NAME="amzn2-ami-hvm-2.0.20220805.0-x86_64-gp2"

#ec2インスタンスタイプ
EC2_INSTANCE_TYPE="t2.micro"

#ユーザデータファイル名
USER_DATA_NAME='handson-ec2-1st-httpd-userdata'

DIR_USER_DATA="${HOME}/environment/conf-handson-ec2-1st"

FILE_USER_DATA="${DIR_USER_DATA}/${USER_DATA_NAME}.bash" \
  && echo ${FILE_USER_DATA}

設定値の確認

cat << END

  # 0. AWS_DEFAULT_REGION:"ap-northeast-1"
       AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1. EC2_INSTANCE_TAG_NAME:"handson-ec2-1st-instance"
       EC2_INSTANCE_TAG_NAME="${EC2_INSTANCE_TAG_NAME}"
  # 2. EC2_INSTANCE_IMAGE_NAME:"amzn2-ami-hvm-2.0.20220426.0-x86_64-gp2"
       EC2_INSTANCE_IMAGE_NAME="${EC2_INSTANCE_IMAGE_NAME}"
  # 3. EC2_INSTANCE_TYPE:"t2.micro"
       EC2_INSTANCE_TYPE="${EC2_INSTANCE_TYPE}"
  # 4. FILE_USER_DATA:"${HOME}/environment/conf-handson-ec2-1st/handson-ec2-1st-httpd-userdata.bash"
       FILE_USER_DATA="${FILE_USER_DATA}"

END

処理の実行

  • aws ec2 run-instancesを実行します。
#イメージID取得
EC2_INSTANCE_IMAGE_ID=$( \
  aws ec2 describe-images \
    --filters Name=name,Values="${EC2_INSTANCE_IMAGE_NAME}" \
    --query 'Images[].ImageId' \
    --output text \
) \
  && echo ${EC2_INSTANCE_IMAGE_ID}

#タグ設定文字列の生成
EC2_TAG_KEY='Name'

STRING_TAG_CONF_INSTANCE="ResourceType=instance,Tags=[{Key=${EC2_TAG_KEY},Value=${EC2_INSTANCE_TAG_NAME}}]" \
  && echo ${STRING_TAG_CONF_INSTANCE}

#ec2インスタンスの作成
#変数の確認
cat << END

  # EC2_INSTANCE_IMAGE_ID:"ami-0f9a314ce79311c88"
    EC2_INSTANCE_IMAGE_ID="${EC2_INSTANCE_IMAGE_ID}"
  # EC2_INSTANCE_TYPE:"t2.micro"
    EC2_INSTANCE_TYPE="${EC2_INSTANCE_TYPE}"
  # STRING_TAG_CONF_INSTANCE:"ResourceType=instance,Tags=[{Key=Name,Value=handson-ec2-1st-instance}]"
    STRING_TAG_CONF_INSTANCE="${STRING_TAG_CONF_INSTANCE}"
  # FILE_USER_DATA:"${HOME}/environment/conf-handson-ec2-1st/handson-ec2-1st-httpd-userdata.bash"
    FILE_USER_DATA="${FILE_USER_DATA}"

END


#コマンド
aws ec2 run-instances \
--security-group-ids sg-0f7ec3d341cf7079b \
--subnet-id subnet-01d3d1a3ec7d37ca3 \
  --image-id ${EC2_INSTANCE_IMAGE_ID} \
  --instance-type ${EC2_INSTANCE_TYPE} \
  --tag-specifications ${STRING_TAG_CONF_INSTANCE} \
  --user-data file://${FILE_USER_DATA} \
  --associate-public-ip-address

完了確認

aws ec2 describe-instances \
  --filters Name=tag-key,Values=Name \
            Name=tag-value,Values=${EC2_INSTANCE_TAG_NAME} \
            Name=instance-state-name,Values=running \
  --query 'Reservations[].Instances[].Tags[].Value' \
  --output text

3.DNSホスト名の有効化

設定の確認

  • aws ec2 describe-vpc-attributeを実行します。
#DNSホスト名(VPC)の設定確認

aws ec2 describe-vpc-attribute --region ap-northeast-1 \
--vpc-id vpc-0f126eca8ff92cb15 \
--attribute enableDnsHostnames

処理の実行

#DNSホスト名(VPC)の有効化
aws ec2 modify-vpc-attribute --region ap-northeast-1 \
                  --vpc-id vpc-0f126eca8ff92cb15  \
                  --enable-dns-hostnames '{"Value":true}' 

#3 RDSの作成に進む

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?