AWSCLIでEC2インスタンスを起動する。

AWSCLIでEC2インスタンスを作成・起動する方法を備忘録として残します。

今回記載するコマンドを実行すると、以下の設定が行えます。

  1. Amazon Linux2が指定されたサブネットに作成されます。
  2. インスタンスのEBS容量が設定されます。
  3. インスタンス内にMySQL、PHP、Apacheがインストールされます。
  4. EIPが割り当てられます。

1、前提条件


  • AWSCLIがインストールされ、適切な権限が設定されている事。
  • VPC・Subnetなど適切に構成されている事。
  • EC2にアタッチするセキュリティグループが作成されている事。
  • キーペアが作成されている事。

2、実行コマンド


2-1、Amazon Linux2のAMIID取得

以下のコマンドを実行して、Amazon Linux2のAMIIDを取得します。

ami_id=`aws ssm get-parameters --names \
  /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 \
  --query "Parameters[].[Value]" \
  --output text`

2-2、EC2インスタンス新規作成

以下のコマンドを実行して、インスタンスを新規作成します。

–block-device-mappings → このオプションでEBSの容量を指定しています。

–user-data → このオプションでEC2新規作成時にパッケージをインストールします。ここにはBashスクリプトを記載します。

–ebs-optimized → このオプションは、インスタンスタイプによって利用できないため、使用時は確認が必要です。

instance_id=`aws ec2 run-instances \
--image-id             $ami_id \
--instance-type        <インスタンスタイプ> \
--key-name             <キーペア名> \
--security-group-ids   <SGID> \
--subnet-id            <subnetID> \
--iam-instance-profile Name=<ロール名> \
--ebs-optimized \
--block-device-mappings '[
   {
       "DeviceName": "/dev/xvda",
       "Ebs": {
           "DeleteOnTermination": true,
           "VolumeSize": 50,
           "VolumeType": "gp2"
       }
   }
]' \
--user-data '
#!/bin/bash
#リポジトリ追加
yum -y update
yum -y install amazon-linux-extras
amazon-linux-extras enable php7.4
amazon-linux-extras install -y epel
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum-config-manager –enable mysql80-community
yum clean metadata
#パッケージ追加
yum -y groupinstall Development Tools
yum -y install awslogs httpd
yum -y install php php-mbstring php-opcache php-devel php-cli php-xml php-mysqlnd
yum -y install mysql-community-server
yum -y update
#ホスト名変更
hostnamectl set-hostname <ホスト名>
reboot
' \
--tag-specifications "ResourceType=instance,Tags=[ \
{Key=Name,Value=<名前>}, \
{Key=stage,Value=dev}, \
]" | jq -r '.Instances[].InstanceId'`

2-3、EIP取得

以下のコマンドを実行してEIPを取得します。

allocation_id=`aws ec2 allocate-address --domain vpc | jq -r '.AllocationId'`

2-4、EIPをEC2にアタッチ

以下のコマンドを実行して、EIPをEC2にアタッチします。

aws ec2 associate-address --allocation-id ${allocation_id} --instance ${instance_id}

2-5、構成確認

以下のコマンドを実行して、EC2の構成情報を取得・確認します。

aws ec2 describe-instances --instance-ids ${instance_id} > ${instance_id}
less ${instance_id}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)