AWS CloudShell で EC2 インスタンスを作成する

AWS CloudShell で EC2 インスタンスを作成する

Clock Icon2024.10.01

はじめに

こんにちは。アノテーションのやまとです。
AWS では、マネージメントコンソール、 CLI 、 SDK の 3 つの主要な操作方法があります。本記事では、 AWS CLI を使用して Amazon EC2 インスタンスを作成する過程を解説します。 VPC 環境の構築から EC2 インスタンスの起動まで、順を追って説明していきます。

AWS CloudShell は、 AWS CLI を利用するための環境です。今回はこの AWS CloudShell を使用して、 EC2 インスタンスを起動するための準備と実際の起動を行います。

構築の流れ

  1. VPC の作成
  2. サブネットの作成
  3. インターネットゲートウェイの作成とアタッチ
  4. ルートテーブルの作成と設定
  5. セキュリティグループの作成と設定
  6. VPC へのタグ付け
  7. 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 テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.