AWS CLI(AWS コマンドライン)からの EC2 インスタンス構築手順を解説します。
AWS CLI のインストールや設定は以下の記事を参考にしてください。
【AWS】「EC2 インスタンス」または「パソコン」に AWS CLI(aws コマンド)及び jq コマンドをインストールする手順【Windows&Linux】
環境
以下の環境で実行しています。
OS は 2019年5月よりリリースされた Red Hat 8系を使用しています。
[root@AWSCLI bin]# cat /etc/redhat-release |
AWS CLI のバージョンです。
Python は 3.6 系を利用しています。
[root@AWSCLI bin]# aws –version |
Python のバージョンです。
[root@AWSCLI bin]# python –version |
aws コマンドの動作確認
最後に aws コマンドの動作確認をします。
以下の EC2 インスタンス ID があることが確認できます。
[ec2-user@AWSCLI ~]$ aws ec2 describe-instances | jq ‘.Reservations[].Instances[].InstanceId’ |
対象の EC2 インスタンス ID のインスタンスが稼働しているかどうか確認します。
【例1】
[ec2-user@AWSCLI ~]$ aws ec2 describe-instances –instance-ids i-06ca64xxxxxxxxxxxxxx | jq ‘.Reservations[].Instances[].State.Name’ |
【例2】
[ec2-user@AWSCLI ~]$ aws ec2 describe-instance-status –instance-ids i-06ca64xxxxxxxxxxxxxx | jq ‘.InstanceStatuses[].InstanceState.Name’ |
対象の EC2 を停止します。
[ec2-user@AWSCLI ~]$ aws ec2 stop-instances –instance-ids i-06ca64xxxxxxxxxxxxxx |
1分後に再度稼働状態を確認します。
[ec2-user@AWSCLI ~]$ aws ec2 describe-instances –instance-ids i-06ca64xxxxxxxxxxxxxx | jq ‘.Reservations[].Instances[].State.Name’ |
既存 EC2 インスタンスの AMI イメージを作成する
EC2 インスタンスの作成は AMI イメージから作成します。
そのため、最初にテンプレートとしたい EC2 インスタンスのイメージを取得します。
EC2 インスタンスのイメージを作成する前に EC2 インスタンスを停止しますが、すでに上の手順で EC2 インスタンスが停止している前提で進めます。
EC2 インスタンスの AMI イメージを作成します。
[ec2-user@AWSCLI ~]$ aws ec2 create-image –instance-id i-06ca64xxxxxxxxxxxxxx –name “redhat-test-ami_20190526” |
作成した AMI の詳細を確認します。
[ec2-user@AWSCLI ~]$ aws ec2 describe-images –image-ids ami-0bc5cd6axxxxxxxxxx |
【事前準備】セキュリティグループを作成する
EC2 インスタンスを作成するためにはセキュリティグループが必要になります。
既存のセキュリティグループを流用する場合は問題ないですが、まだ適用するセキュリティグループがない場合は、事前準備としてセキュリティグループを作成しておきます。
セキュリティグループの設定
以下のようにセキュリティグループを設計します。
- VPC ← vpc-34xxxxxxx
- セキュリティグループ名 ← RedHat-security-group
- インバウンド許可 ← TCP/22(ssh)
- 許可セグメント ← 0.0.0.0/0
セキュリティグループを作成する
最初にセキュリティグループを作成します。
[ec2-user@AWSCLI ~]$ aws ec2 create-security-group –group-name RedHat-security-group –description “Created by AWS CLI” |
セキュリティグループを設定する(セキュリティグループにルールを追加する)
次に作成したセキュリティグループ(sg-010971fae7c0726fb)にルールを追加します。
上の設計の通りのルールを追加します。
[ec2-user@AWSCLI ~]$ aws ec2 authorize-security-group-ingress –group-id sg-010971fae7c0726fb –protocol tcp –port 22 –cidr 0.0.0.0/0 |
セキュリティグループの内容(ルール)を確認する
作成したセキュリティグループの内容(ルール)を確認します。
[ec2-user@AWSCLI ~]$ aws ec2 describe-security-groups –group-names RedHat-security-group |
作成した AMI イメージより EC2 インスタンスを作成する
作成した AMI イメージより EC2 インスタンスを作成しますが、その前に事前準備をします。
設計をする
作成する前に設計をします。
- VPC ← vpc-34xxxxxxx
- AMI イメージ ← ami-0bc5cd6axxxxxxxxxx
- インスタンスタイプ ← t2.micro
- セキュリティグループID ← sg-010971fae7c0726fb
- セキュリティグループ名 ← RedHat-security-group
- キーペア名 ← RedHat_key_pair_20190429
- インスタンス数 ← 1
- サブネットID ← subnet-84d7d9f0
- プライベート IP アドレス ← 172.31.10.10(サブネットが 172.31.0.0/20 なので使用可能 IP が 172.31.0.1
~ 172.31.15.254) - タグ ← Nameタグ:test-redhat01
コマンドライン
aws ec2 run-instances \ |
上記コマンドラインを実行
[ec2-user@AWSCLI ~]$ aws ec2 run-instances \ |
パブリック IP アドレスも割り当てられていた
上記コマンドを実行したところ、パブリック IP アドレスも割り当てられていました。
インスタンス起動時に bash スクリプトを実行し環境設定したい
インスタンス起動時に一律にアカウントを設定したり、パッケージをインストールしたい場合があります。
[ec2-user@AWSCLI scripts]$ pwd |
コマンドライン
aws ec2 run-instances \ |
コマンド実行
[ec2-user@AWSCLI scripts]$ aws ec2 run-instances \ |
コメント