【AWS】AWSCLIにてEC2インスタンスを構築する(VPC作成から実施)
はじめに
昨日、MacOSにAWSCLIをインストールする記事を執筆しました。
今回は、インストールしたAWSCLIを使用し、AWSにEC2インスタンスを構築する流れをアウトプットしたいと思います。
【AWS】MacOSにてAWSCLIを利用できるようにする。
今回構築する構成
前提条件
- AWSCLIをインストールしたMacOSよりEC2インスタンス構築作業を実施
- 作業用ユーザー作成済み
今回構築するEC2インスタンス
項目 | 設定 |
---|---|
VM名 | TestEC2 |
インスタンスタイプ | t2.micro |
OS | AmazonLinux2 |
vCPU | 1 |
メモリ(GiB) | 1 |
ルートデバイス名 | /dev/sda1:8GiB(/) |
構築手順
①AWSに接続
aws configure
実行した場合、以下が要求されるため入力する。
項目 | 入力内容 | 備考 |
---|---|---|
AWS Access Key ID | AKI****************** | 先程控えたアクセスキーID |
AWS Secret Access Key | aa********************** | 先程控えたシークレットアクセスキー |
Default region name | ap-northeast-1 | リージョン(東京:ap-northeast-1) |
Default output format | text | "text","JSON","table"のどれかを指定(今回はtext) |
satton@satsuton ~ % aws configure
AWS Access Key ID [****************KQMD]: AKI******************
AWS Secret Access Key [****************hAIY]: aa*********************
Default region name [None]: ap-northeast-1
Default output format [None]: text
satton@satsuton ~ %
②VPC構築
1.VPCを構築する。
aws ec2 create-vpc --cidr-block <CIDRブロック(IPv4)>
satton@satsuton ~ % aws ec2 create-vpc --cidr-block 10.10.0.0/16
VPC 10.10.0.0/16 dopt-40260f27 default False 555246305565 pending vpc-04a9922007e0c1c9b
CIDRBLOCKASSOCIATIONSET vpc-cidr-assoc-0332cdc05d169503a 10.10.0.0/16
CIDRBLOCKSTATE associated
satton@satsuton ~ %
2.VPCにタグ付けをする。
aws ec2 create-tags --resources <VPCID> --tags Key=Name,Value=<タグ名>
satton@satsuton ~ % aws ec2 create-tags --resources vpc-04a9922007e0c1c9b --tags Key=Name,Value=TestVPC
satton@satsuton ~ %
3.作成したVPCの情報を確認する。
aws ec2 describe-vpcs --vpc-id <VPCID>
satton@satsuton ~ % aws ec2 describe-vpcs --vpc-id vpc-04a9922007e0c1c9b
VPCS 10.10.0.0/16 dopt-40260f27 default False 555246305565 available vpc-04a9922007e0c1c9b
CIDRBLOCKASSOCIATIONSET vpc-cidr-assoc-0332cdc05d169503a 10.10.0.0/16
CIDRBLOCKSTATE associated
TAGS Name TestVPC
satton@satsuton ~ %
③サブネットの作成
1.サブネット作成
aws ec2 create-subnet --vpc-id <VPCID> \
> --cidr-block <CIDRブロック(IPv4)> \
> --availability-zone <アベイラビリティゾーン>
satton@satsuton ~ % aws ec2 create-subnet --vpc-id vpc-04a9922007e0c1c9b \
> --cidr-block 10.10.0.0/24 \
> --availability-zone ap-northeast-1a
SUBNET False ap-northeast-1a apne1-az4 251 10.10.0.0/24 False False 555246305565 available arn:aws:ec2:ap-northeast-1:555246305565:subnet/subnet-095e22dabe85bcf35 subnet-095e22dabe85bcf35 vpc-04a9922007e0c1c9b
satton@satsuton ~ %
2.サブネットにタグ付けをする。
aws ec2 create-tags --resources <サブネットID> --tags Key=Name,Value=<タグ名>
satton@satsuton ~ % aws ec2 create-tags --resources subnet-095e22dabe85bcf35 --tags Key=Name,Value=PublicSubnet
satton@satsuton ~ %
3.サブネットが作成できていることを確認する。
aws ec2 describe-subnets --subnet-id <サブネットID>
satton@satsuton ~ % aws ec2 describe-subnets --subnet-id subnet-095e22dabe85bcf35
SUBNETS False ap-northeast-1a apne1-az4 251 10.10.0.0/24 False False False 555246305565 available arn:aws:ec2:ap-northeast-1:555246305565:subnet/subnet-095e22dabe85bcf35 subnet-095e22dabe85bcf35 vpc-04a9922007e0c1c9b
TAGS Name PublicSubnet
satton@satsuton ~ %
④インターネットゲートウェイ作成
1.インターネットゲートウェイを作成する。
aws ec2 create-internet-gateway
satton@satsuton ~ % aws ec2 create-internet-gateway
INTERNETGATEWAY igw-0a1f89904b2a52dcc 555246305565
satton@satsuton ~ %
2.VPCに作成したインターネットゲートウェイを紐付ける。
aws ec2 attach-internet-gateway --internet-gateway-id <インターネットゲートウェイID> --vpc-id <VPCID>
satton@satsuton ~ % aws ec2 attach-internet-gateway --internet-gateway-id igw-0a1f89904b2a52dcc --vpc-id vpc-04a9922007e0c1c9b
satton@satsuton ~ %
3.インターネットゲートウェイにタグ付けを実施する。
aws ec2 create-tags --resources <インターネットゲートウェイID> --tags Key=Name,Value=<タグ名>
satton@satsuton ~ % aws ec2 create-tags --resources igw-0a1f89904b2a52dcc --tags Key=Name,Value=TestGateway
satton@satsuton ~ %
4.作成したインターネットゲートウェイの情報を確認する。
aws ec2 describe-internet-gateways --internet-gateway-id <インターネットゲートウェイID>
satton@satsuton ~ % aws ec2 describe-internet-gateways --internet-gateway-id igw-0a1f89904b2a52dcc
INTERNETGATEWAYS igw-0a1f89904b2a52dcc 555246305565
ATTACHMENTS available vpc-04a9922007e0c1c9b
TAGS Name TestGateway
satton@satsuton ~ %
⑤ルートテーブルの作成とルートの紐付け
1.ルートテーブルを作成する。
aws ec2 create-route-table --vpc-id <VPCID>
satton@satsuton ~ % aws ec2 create-route-table --vpc-id vpc-04a9922007e0c1c9b
ROUTETABLE 555246305565 rtb-0598bfef79c123779 vpc-04a9922007e0c1c9b
ROUTES 10.10.0.0/16 local CreateRouteTable active
satton@satsuton ~ %
2.ルートテーブルにタグ付けをする。
aws ec2 create-tags --resources <ルートテーブルID> --tags Key=Name,Value=<タグ名>
satton@satsuton ~ % aws ec2 create-tags --resources rtb-0b8a7b808937d7298 --tags Key=Name,Value=TestRouteTable
satton@satsuton ~ %
3.ルートを作成する。
aws ec2 create-route --route-table-id <ルートテーブルID> \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id <インターネットゲートウェイID>
satton@satsuton ~ % aws ec2 create-route --route-table-id rtb-0b8a7b808937d7298 \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-0a1f89904b2a52dcc
True
satton@satsuton ~ %
4.サブネットとルートテーブルを関連付ける。
aws ec2 associate-route-table --route-table-id <ルートテーブルID> \
--subnet-id <サブネットID>
satton@satsuton ~ % aws ec2 associate-route-table --route-table-id rtb-0b8a7b808937d7298 \
--subnet-id subnet-095e22dabe85bcf35
rtbassoc-0af94899748cc0539
ASSOCIATIONSTATE associated
satton@satsuton ~ %
5.パブリックIPアドレスが自動的に割り当てられるよう設定する。
aws ec2 modify-subnet-attribute --subnet-id <サブネットID> --map-public-ip-on-launch
satton@satsuton ~ % aws ec2 modify-subnet-attribute --subnet-id subnet-095e22dabe85bcf35 --map-public-ip-on-launch
satton@satsuton ~ %
6.ルートテーブルの情報を確認する。
aws ec2 describe-route-tables --route-table-id <ルートテーブルID>
satton@satsuton ~ % aws ec2 describe-route-tables --route-table-id rtb-0b8a7b808937d7298
ROUTETABLES 555246305565 rtb-0b8a7b808937d7298 vpc-04a9922007e0c1c9b
ASSOCIATIONS True rtbassoc-09c93a4fcd16d39be rtb-0b8a7b808937d7298
ASSOCIATIONSTATE associated
ASSOCIATIONS False rtbassoc-0af94899748cc0539 rtb-0b8a7b808937d7298 subnet-095e22dabe85bcf35
ASSOCIATIONSTATE associated
ROUTES 10.10.0.0/16 local CreateRouteTable active
ROUTES 0.0.0.0/0 igw-0a1f89904b2a52dcc CreateRoute active
TAGS Name TestRouteTable
satton@satsuton ~ %
⑥セキュリティグループの作成
1.セキュリティグループを作成する。
aws ec2 create-security-group --group-name "<セキュリティグループ名>" --description "<セキュリティグループの説明>" --vpc-id <VPCID>
satton@satsuton ~ % aws ec2 create-security-group --group-name "Test-Scg" --description "This is test security group" --vpc-id vpc-04a9922007e0c1c9b
sg-049e2aa1c9d101b85
satton@satsuton ~ %
2.作成したセキュリティグループにインバウンドルールを設定する。
aws ec2 authorize-security-group-ingress --group-id <セキュリティグループID> \
> --protocol tcp --port 22 --cidr <マイIP>
satton@satsuton ~ % aws ec2 authorize-security-group-ingress --group-id sg-049e2aa1c9d101b85 \
> --protocol tcp --port 22 --cidr 111.239.164.112/32
True
SECURITYGROUPRULES 111.239.164.112/32 22 sg-049e2aa1c9d101b85 555246305565 tcp False sgr-0e52e133955f6e9c0 22
satton@satsuton ~ %
※111.239.164.112/32はマイIPになります。(セキュリティグループ作成時の画面にて確認)
3.作成したセキュリティグループの情報を確認する。
aws ec2 describe-security-groups --group-id <セキュリティグループID>
satton@satsuton ~ % aws ec2 describe-security-groups --group-id sg-049e2aa1c9d101b85
SECURITYGROUPS This is test security group sg-049e2aa1c9d101b85 Test-Scg 555246305565 vpc-04a9922007e0c1c9b
IPPERMISSIONS 22 tcp 22
IPRANGES 111.239.164.112/32
IPPERMISSIONSEGRESS -1
IPRANGES 0.0.0.0/0
satton@satsuton ~ %
⑦EC2インスタンスにアクセスするためのキーペアの作成
1.キーペアを作成する。
aws ec2 create-key-pair --key-name <キーペア名> --query 'KeyMaterial' --output text > <ファイル出力先>
satton@satsuton ssh % cd /Users/satton/ssh/
satton@satsuton ssh % aws ec2 create-key-pair --key-name TestKeyPair --query 'KeyMaterial' --output text > TestKeyPair.pem
satton@satsuton ssh %
※上記の例では、キーペアを格納したいディレクトリに移動し、キーペアを作成している。
2.作成したキーペアのパーミッションを変更する。
chmod 400 TestKeyPair.pem
satton@satsuton ssh % ls -l TestKeyPair.pem
-rw-r--r-- 1 satton staff 1679 10 19 12:33 TestKeyPair.pem
satton@satsuton ssh % chmod 400 TestKeyPair.pem
satton@satsuton ssh %
satton@satsuton ssh % ls -l TestKeyPair.pem
-r-------- 1 satton staff 1679 10 19 12:33 TestKeyPair.pem
satton@satsuton ssh %
⑧EC2インスタンス作成
1.EC2インスタンス作成
- 必要パラメータ
項目 | 設定 | 備考 |
---|---|---|
イメージID | ami-00f045aed21a55240 | 「AmazonLinux2」のAMI |
カウント | 1 | 作成するEC2インスタンスの台数 |
インスタンスタイプ | t2.micro | インスタンスのサイズ |
キー名 | TestKeyPair | 作成したキー名 ※「.pem」はつけない。 |
セキュリティグループID | sg-049e2aa1c9d101b85 | 作成したセキュリティグループのID |
サブネットID | subnet-095e22dabe85bcf35 | 作成したパブリックサブネットのID |
タグ | Key=Name,Value=TestEC2 | EC2インスタンスに「TestEC2」を付与 |
- コマンド
aws ec2 run-instances \
--image-id ami-00f045aed21a55240 \
--count 1 \
--instance-type t2.micro \
--key-name TestKeyPair \
--security-group-ids sg-049e2aa1c9d101b85 \
--subnet-id subnet-095e22dabe85bcf35 \
--tag-specific 'ResourceType=instance,Tags=[{Key=Name,Value=TestEC2}]'
satton@satsuton ssh % aws ec2 run-instances \
--image-id ami-00f045aed21a55240 \
--count 1 \
--instance-type t2.micro \
--key-name TestKeyPair \
--security-group-ids sg-049e2aa1c9d101b85 \
--subnet-id subnet-095e22dabe85bcf35 \
--tag-specific 'ResourceType=instance,Tags=[{Key=Name,Value=TestEC2}]'
555246305565 r-0192b1f31f62f9f6d
INSTANCES 0 x86_64 53ae6151-336d-467c-b15d-7ea5f0939f11 False True xen ami-00f045aed21a55240 i-0a28bee7ceaea84f9 t2.micro TestKeyPair 2021-10-19T03:56:31+00:00 ip-10-10-0-12.ap-northeast-1.compute.internal 10.10.0.12
/dev/xvda ebs True subnet-095e22dabe85bcf35 hvm vpc-04a9922007e0c1c9b
CAPACITYRESERVATIONSPECIFICATION open
CPUOPTIONS 1 1
ENCLAVEOPTIONS False
METADATAOPTIONS enabled disabled 1 optional pending
MONITORING disabled
NETWORKINTERFACES interface 06:69:22:78:0a:13 eni-05007c8b80e4bc45b 555246305565 10.10.0.12 True in-use subnet-095e22dabe85bcf35 vpc-04a9922007e0c1c9b
ATTACHMENT 2021-10-19T03:56:31+00:00 eni-attach-05adf634ea5b6343d True 0 0 attaching
GROUPS sg-049e2aa1c9d101b85 Test-Scg
PRIVATEIPADDRESSES True 10.10.0.12
PLACEMENT ap-northeast-1a default
SECURITYGROUPS sg-049e2aa1c9d101b85 Test-Scg
satton@satsuton ssh %
2.EC2インスタンスが作成されたことを確認
aws ec2 describe-instances --instance-id <インスタンスID>
→STATEが「running」であることを確認し、「パブリックIPアドレス」を控える。
satton@satsuton ssh % aws ec2 describe-instances --instance-id i-0a28bee7ceaea84f9
RESERVATIONS 555246305565 r-0192b1f31f62f9f6d
INSTANCES 0 x86_64 53ae6151-336d-467c-b15d-7ea5f0939f11 False True xen ami-00f045aed21a55240 i-0a28bee7ceaea84f9 t2.micro TestKeyPair 2021-10-19T03:56:31+00:00 ip-10-10-0-12.ap-northeast-1.compute.internal 10.10.0.12
52.68.113.84 /dev/xvda ebs True subnet-095e22dabe85bcf35 hvm vpc-04a9922007e0c1c9b
BLOCKDEVICEMAPPINGS /dev/xvda
EBS 2021-10-19T03:56:32+00:00 True attached vol-0a7315611a7ddf7d8
CAPACITYRESERVATIONSPECIFICATION open
CPUOPTIONS 1 1
ENCLAVEOPTIONS False
HIBERNATIONOPTIONS False
METADATAOPTIONS enabled disabled 1 optional applied
MONITORING disabled
NETWORKINTERFACES interface 06:69:22:78:0a:13 eni-05007c8b80e4bc45b 555246305565 10.10.0.12 True in-use subnet-095e22dabe85bcf35 vpc-04a9922007e0c1c9b
ASSOCIATION amazon 52.68.113.84
ATTACHMENT 2021-10-19T03:56:31+00:00 eni-attach-05adf634ea5b6343d True 0 0 attached
GROUPS sg-049e2aa1c9d101b85 Test-Scg
PRIVATEIPADDRESSES True 10.10.0.12
ASSOCIATION amazon 52.68.113.84 ← パブリックIPアドレス
PLACEMENT ap-northeast-1a default
SECURITYGROUPS sg-049e2aa1c9d101b85 Test-Scg
STATE 16 running ← ここを確認(runningになっていればOK)
TAGS Name TestEC2
satton@satsuton ssh %
3.EC2インスタンスへの接続確認
ssh -i "<pemファイル指定>" ec2-user@<パブリックIPアドレス>
satton@satsuton ssh % ssh -i "TestKeyPair.pem" ec2-user@52.68.113.84
The authenticity of host '52.68.113.84 (52.68.113.84)' can't be established.
ECDSA key fingerprint is SHA256:iFQE7Ti9IfkwibxDXimZkQjHDLZgt1X0rEcoZdhSdLs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '52.68.113.84' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
39 package(s) needed for security, out of 87 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-10-0-12 ~]$
参考
【入門】AWS CLIでEC2インスタンスを立ち上げてみた!
[AWS]コマンドラインからVPCを作成してみよう!その1[AWSCLI]
Discussion