AWSCLIでEC2インスタンスを作成・起動する方法を備忘録として残します。
今回記載するコマンドを実行すると、以下の設定が行えます。
- Amazon Linux2が指定されたサブネットに作成されます。
- インスタンスのEBS容量が設定されます。
- インスタンス内にMySQL、PHP、Apacheがインストールされます。
- 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}