AWS CloudShell で EC2 インスタンスを作成する
はじめに
こんにちは。アノテーションのやまとです。
AWS では、マネージメントコンソール、 CLI 、 SDK の 3 つの主要な操作方法があります。本記事では、 AWS CLI を使用して Amazon EC2 インスタンスを作成する過程を解説します。 VPC 環境の構築から EC2 インスタンスの起動まで、順を追って説明していきます。
AWS CloudShell は、 AWS CLI を利用するための環境です。今回はこの AWS CloudShell を使用して、 EC2 インスタンスを起動するための準備と実際の起動を行います。
構築の流れ
- VPC の作成
- サブネットの作成
- インターネットゲートウェイの作成とアタッチ
- ルートテーブルの作成と設定
- セキュリティグループの作成と設定
- VPC へのタグ付け
- EC2 インスタンスの起動
VPC 関連の用語の解説はこちらをご確認ください。
出力結果の記録
各ステップで生成されるリソース ID を記録するために、メモツールを用意しておくことをお勧めします。
1. VPC の作成
まず、 AWS CloudShell を起動します。 CloudShell はマネジメントコンソール上部のアイコンからアクセスできます。
VPC を作成するには、以下のコマンドを使用します
入力
aws ec2 create-vpc --cidr-block 10.0.0.0/16
出力結果
{
"Vpc": {
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-以下省略",
"State": "pending",
"VpcId": "vpc-xxxxxxxxxxxxxxxxx",
"OwnerId": "VPCを作成したAWSアカウントのID",
"InstanceTenancy": "default",
"Ipv6CidrBlockAssociationSet": [],
"CidrBlockAssociationSet": [
{
"AssociationId": "vpc-cidr-assoc-以下省略",
"CidrBlock": "10.0.0.0/16",
"CidrBlockState": {
"State": "associated"
}
}
],
"IsDefault": false
}
}
出力結果に含まれる VpcId
をメモしておいてください。
2. サブネットの作成
次に、 VPC 内にサブネットを作成します
入力
aws ec2 create-subnet --vpc-id <your-vpc-id> --cidr-block 10.0.1.0/24
出力結果
{
"Subnet": {
"AvailabilityZone": "ap-northeast-1c",
"AvailabilityZoneId": "apne1-az1",
"AvailableIpAddressCount": 251,
"CidrBlock": "10.0.1.0/24",
"DefaultForAz": false,
"MapPublicIpOnLaunch": false,
"State": "available",
"SubnetId": "subnet-xxxxxxxxxxxxxxxxx",
"VpcId": "vpc-xxxxxxxxxxxxxxxxx",
"OwnerId": "VPCを作成したAWSアカウントのID",
"AssignIpv6AddressOnCreation": false,
"Ipv6CidrBlockAssociationSet": [],
"SubnetArn": "arn:aws:ec2:ap-northeast-1:AWSアカウントID:subnet/subnet-xxxxxxxxxxxxxxxxx",
"EnableDns64": false,
"Ipv6Native": false,
"PrivateDnsNameOptionsOnLaunch": {
"HostnameType": "ip-name",
"EnableResourceNameDnsARecord": false,
"EnableResourceNameDnsAAAARecord": false
}
}
}
出力結果に含まれる SubnetId
をメモしておいてください。
3. インターネットゲートウェイの作成とアタッチ
インターネットゲートウェイを作成し、 VPC にアタッチします
入力(作成)
aws ec2 create-internet-gateway
出力結果
{
"InternetGateway": {
"Attachments": [],
"InternetGatewayId": "igw-xxxxxxxxxxxxxxxxx",
"OwnerId": "VPCを作成したAWSアカウントのID",
"Tags": []
}
}
入力(アタッチ)
aws ec2 attach-internet-gateway --vpc-id <your-vpc-id> --internet-gateway-id <your-internet-gateway-id>
4. ルートテーブルの作成と設定
ルートテーブルを作成し、インターネットゲートウェイへのルートを追加します:
入力(作成)
aws ec2 create-route-table --vpc-id <your-vpc-id>
入力(ルート追加)
aws ec2 create-route --route-table-id <your-route-table-id> --destination-cidr-block 0.0.0.0/0 --gateway-id <your-internet-gateway-id>
入力(サブネットとの関連付け)
aws ec2 associate-route-table --subnet-id <your-subnet-id> --route-table-id <your-route-table-id>
5. セキュリティグループの作成と設定
セキュリティグループを作成し、必要なインバウンドルールを設定します
入力(作成)
aws ec2 create-security-group --group-name MySecurityGroup --description "My security group" --vpc-id <your-vpc-id>
入力( SSH 許可)
aws ec2 authorize-security-group-ingress --group-id <your-security-group-id> --protocol tcp --port 22 --cidr 0.0.0.0/0
入力( HTTP 許可)
aws ec2 authorize-security-group-ingress --group-id <your-security-group-id> --protocol tcp --port 80 --cidr 0.0.0.0/0
6. VPC へのタグ付け
VPC にタグを追加します
入力
aws ec2 create-tags --resources <your-vpc-id> --tags Key=Name,Value=MyVPC
7. EC2 インスタンスの起動
最後に、 EC2 インスタンスを起動します。まず、利用可能な AMI ID を確認します
入力
aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" --query "sort_by(Images, &CreationDate)[-1].[ImageId]" --output text
このコマンドは最新の Amazon Linux 2 AMI の ID を返します。
次に、 EC2 インスタンスを起動します
入力
aws ec2 run-instances --image-id <ami-id> --count 1 --instance-type t2.micro --key-name <your-key-pair-name> --security-group-ids <your-security-group-id> --subnet-id <your-subnet-id>
注意: <your-key-pair-name>
には、事前に作成した EC2 キーペアの名前を指定してください。キーペアがない場合は、以下のコマンドで作成できます
aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
出力結果
{
"Instances": [
{
"InstanceId": "i-xxxxxxxxxxxxxxxxx",
"InstanceType": "t2.micro",
...(省略)...
}
],
...(省略)...
}
出力結果に含まれる InstanceId
をメモしておいてください。
インスタンスへの接続
インスタンスが起動したら、以下のコマンドでパブリック IP アドレスを確認できます
入力
aws ec2 describe-instances --instance-ids <your-instance-id> --query 'Reservations[].Instances[].PublicIpAddress' --output text
この IP アドレスを使用して、 SSH でインスタンスに接続できます
ssh -i MyKeyPair.pem ec2-user@<public-ip-address>
最後に
お疲れ様でした!本記事では、 AWS CLI を使用して VPC 環境を構築し、 EC2 インスタンスを起動する方法を学びました。 VPC 、サブネット、インターネットゲートウェイ、ルートテーブル、セキュリティグループなど、 EC2 インスタンスを安全に運用するために必要な基本的なネットワーク要素を設定し、最終的に EC2 インスタンスを起動しました。
これらの手順を理解することで、 AWS のネットワーク構成と EC2 インスタンスの基本的な管理ができるようになります。実際の運用では、さらにセキュリティを強化したり、より複雑なネットワーク構成を行ったりする必要がありますが、本記事はその基礎の土台となるでしょう。
より本格的に学びたい場合は、 AWS 公式ドキュメント、ハンズオンラボ、コミュニティリソースも活用し、知識を深めていくことをおすすめします。
Amazon EC2 のセキュリティグループを作成、設定、および削除する
Amazon EC2インスタンスを AWS CLI で起動、一覧表示、および閉じる
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。