読者です 読者をやめる 読者になる 読者になる

戦場のプログラマー

名前は誰も知らない。

awscliからEC2インスタンスを作成する(Amazon Linux + EBS + Elastic IP)

  • jqコマンドがあるととても便利です。
  • 事前にセキュリティグループとキーペア、Elastic IPは作成・割り当て済みとします。

インスタンスの作成

aws ec2 run-instances --image-id ami-0d13700c --count 1 --instance-type t1.micro --key-name default --security-groups webserver | jq '.'

インスタンスIDを調べる

さっき起動したインスタンスインスタンスIDを調べます。

aws ec2 describe-instances | jq '.Reservations [] .Instances [] .InstanceId'

Elastic IPの一覧を調べる

aws ec2 describe-addresses| jq '.'

インスタンスにElastic IPを割り当て

aws ec2 associate-address --instance-id i-12345678 --public-ip 111.111.111.111

インスタンスのAZ(Availability Zone)を調べる

EBSを作成するときにインスタンスのAZが違うとアタッチできないようです。

% aws ec2 describe-instances --instance-ids i-12345678 | jq '.Reservations [] .Instances [] .Placement .AvailabilityZone'
"ap-northeast-1a"

EBSボリューム作成

2GBのボリュームをap-northeast-1aに作成します。

aws ec2 create-volume --size 2 --availability-zone ap-northeast-1a

作成されたボリュームのIDを調べる

2番目(1)のボリュームIDを参照します。

aws ec2 describe-volumes | jq '.Volumes [1] .VolumeId'
"vol-b5d722ab"

EBSボリュームのアタッチ

aws ec2 attach-volume --volume-id vol-b5d722ab --instance-id i-12345678 --device xvdf

EC2インスタンスSSH接続してボリュームをフォーマットしてext4ファイルシステムを作成します。

パーティション作成。

fdisk /dev/xvdf
n
p
1
Enter
Enter
w

ext4ファイルシステムを作成。

mkfs.ext4 /dev/xvdf1

マウント先を /data にします。

mkdir /data

fstab編集。

vi /etc/fstab
/dev/xvdf1  /data       ext4    defaults,noatime  1   1

マウント実行。

mount -a

マウントされたか確認します。

[root@ip-172-31-5-123 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  1.2G  6.7G  16% /
tmpfs           298M     0  298M   0% /dev/shm
/dev/xvdf1      2.0G   35M  1.9G   2% /data

おわりに

大体終わりました。 ここではswapを作成していないのが問題です。

インスタンスを停止する

aws ec2 stop-instances --instance-ids i-12345678 | jq '.'

インスタンスを起動する

aws ec2 start-instances --instance-ids i-12345678 | jq '.'