Amazon Virtual Private Cloud
ユーザーガイド

例: AWS CLI を使用して IPv4 VPC とサブネットを作成

次の例では、AWS CLI コマンドを使用して、IPv4 CIDR ブロックを含むデフォルトではない VPC と、VPC 内にパブリックサブネット、プライベートサブネットを作成しています。VPC およびサブネットを作成したら、パブリックサブネット内にインスタンスを起動して、接続できるようになります。開始するには、最初に AWS CLI をインストールして設定する必要があります。詳細については、「AWS コマンドラインインターフェイスの設定」を参照してください。

ステップ 1: VPC とサブネットを作成する

最初のステップは、VPC、2 つのサブネットを作成することです。この例では、VPC の CIDR ブロック 10.0.0.0/16 を使用しますが、別の CIDR ブロックを選択できます。詳細については、「VPC とサブネットのサイズ設定」を参照してください。

AWS CLI を使用して VPC およびサブネットを作成するには

  1. 10.0.0.0/16 CIDR ブロックを持つ VPC を作成します。

    aws ec2 create-vpc --cidr-block 10.0.0.0/16

    返される出力で、VPC ID を書き留めておいてください。

    { "Vpc": { "VpcId": "vpc-2f09a348", ... } }
  2. 前の手順の VPC IDを使用して、10.0.1.0/24 CIDR ブロックを持つサブネットを作成します。

    aws ec2 create-subnet --vpc-id vpc-2f09a348 --cidr-block 10.0.1.0/24
  3. VPC で、10.0.0.0/24 CIDR ブロックを持つ 2 番目のサブネットを作成します。

    aws ec2 create-subnet --vpc-id vpc-2f09a348 --cidr-block 10.0.0.0/24

ステップ2: サブネットをパブリックにします。

VPC およびサブネットを作成した後、VPC にインターネットゲートウェイをアタッチして、カスタムルートテーブルを作成し、インターネットゲートウェイへのサブネットのルーティングを構成すると、アブネットをパブリックサブネットにすることができます。

サブネットをパブリックサブネットにするには

  1. インターネットゲートウェイを作成する.

    aws ec2 create-internet-gateway

    返される出力で示されたインターネットゲートウェイ ID を書き留めます。

    { "InternetGateway": { ... "InternetGatewayId": "igw-1ff7a07b", ... } }
  2. 前のステップの ID を使用して、VPC にインターネットゲートウェイをアタッチします。

    aws ec2 attach-internet-gateway --vpc-id vpc-2f09a348 --internet-gateway-id igw-1ff7a07b
  3. VPC に対してカスタムルートテーブルを作成します。

    aws ec2 create-route-table --vpc-id vpc-2f09a348

    返される出力で示されたルートテーブル ID を書き留めます。

    { "RouteTable": { ... "RouteTableId": "rtb-c1c8faa6", ... } }
  4. インターネットゲートウェイへのすべてのトラフィック (0.0.0.0/0) をポイントするルートテーブルでルートを作成します。

    aws ec2 create-route --route-table-id rtb-c1c8faa6 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-1ff7a07b
  5. ルートが作成され有効になっていることを確認するには、ルートテーブルを記述して結果を表示できます。

    aws ec2 describe-route-tables --route-table-id rtb-c1c8faa6
    { "RouteTables": [ { "Associations": [], "RouteTableId": "rtb-c1c8faa6", "VpcId": "vpc-2f09a348", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" }, { "GatewayId": "igw-1ff7a07b", "DestinationCidrBlock": "0.0.0.0/0", "State": "active", "Origin": "CreateRoute" } ] } ] }
  6. ルートテーブルは現在、サブネットには関連付けられていません。サブネットからのトラフィックがインターネットゲートウェイにルーティングされるよう、ルートテーブルを VPC のサブネットに関連付ける必要があります。最初に、describe-subnets コマンドを使用してサブネット ID を取得します。--filter オプションを使用して新しい VPC のサブネットだけを返し、--query オプションを使用してサブネット ID と CIDR ブロックだけを返します。

    aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-2f09a348" --query 'Subnets[*].{ID:SubnetId,CIDR:CidrBlock}'
    [ { "CIDR": "10.0.1.0/24", "ID": "subnet-b46032ec" }, { "CIDR": "10.0.0.0/24", "ID": "subnet-a46032fc" } ]
  7. カスタムルートテーブルに関連付けるサブネット、例えば subnet-b46032ec を選択できます。このサブネットはパブリックサブネットになります。

    aws ec2 associate-route-table --subnet-id subnet-b46032ec --route-table-id rtb-c1c8faa6
  8. サブネット内で起動されたインスタンスがパブリック IP アドレスを自動的に受信できるよう、オプションで、サブネットの動作に対処しているパブリック IP を変更できます。これを行わない場合は、インターネットからインスタンスにアクセスできるよう、起動後に Elastic IP アドレスをインスタンスに関連付ける必要があります。

    aws ec2 modify-subnet-attribute --subnet-id subnet-b46032ec --map-public-ip-on-launch

ステップ 3: サブネット内にインスタンスを起動する

サブネットがパブリックであること、および、サブネット内のインスタンスにインターネット経由でアクセスできることをテストするには、パブリックサブネット内でインスタンスを起動して接続します。最初に、インスタンスに関連付けるセキュリティグループと、インスタンスに接続するキーペアを作成する必要があります。セキュリティグループの詳細については、VPC のセキュリティグループ を参照してください。キーペアの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Amazon EC2 Key Pairs」を参照してください。

パブリックサブネット内のインスタンスを起動して接続するには

  1. キーペアを作成して、--query オプションと --output テキストオプションを使用し、.pem 拡張機能でプライベートキーをファイルに直接パイプします。

    aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem

    この例では、Amazon Linux インスタンスを起動します。Linux または Mac OS X オペレーティングシステムの SSH クライアントを使用して Linux インスタンスに接続する場合は、次のコマンドを使用してプライベートキーファイルの権限を設定すると、お客様以外のユーザーはそれを読み取ることができないようになります。

    chmod 400 MyKeyPair.pem
  2. VPC にセキュリティグループを作成し、SSH でどこからでもアクセスできるようにするルールを追加します。

    aws ec2 create-security-group --group-name SSHAccess --description "Security group for SSH access" --vpc-id vpc-2f09a348
    { "GroupId": "sg-e1fb8c9a" }
    aws ec2 authorize-security-group-ingress --group-id sg-e1fb8c9a --protocol tcp --port 22 --cidr 0.0.0.0/0

    注記

    0.0.0.0/0 を使用すると、すべての IPv4 アドレスから SSH 経由でインスタンスにアクセスすることが許可されます。これは、この短期間の実習では許容されますが、本稼働環境では、特定の IP アドレスまたはアドレス範囲のみ許可してください。

  3. 作成したセキュリティグループとキーペアを使用して、パブリックサブネット内でインスタンスを起動します。出力内のインスタンスのインスタンス ID をメモしておきます。

    aws ec2 run-instances --image-id ami-a4827dc9 --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-e1fb8c9a --subnet-id subnet-b46032ec

    注記

    この例では、AMI は 米国東部(バージニア北部) リージョンの Amazon Linux AMI です。別のリージョンの場合、リージョン内の適した AMI の AMI ID が必要になります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Linux AMI の検索」を参照してください。

  4. インスタンスに接続するには、そのインスタンスが running 状態になっている必要があります。インスタンスを記述してその状態を確認し、パブリック IP アドレスを書き留めておきます。

    aws ec2 describe-instances --instance-id i-0146854b7443af453
    { "Reservations": [ { ... "Instances": [ { ... "State": { "Code": 16, "Name": "running" }, ... "PublicIpAddress": "52.87.168.235", ... } ] } ] }
  5. インスタンスが実行状態にあるときは、次のコマンドで、Linux または Mac OS X コンピュータの SSH クライアントを使用してそのインスタンスに接続できます。

    ssh -i "MyKeyPair.pem" ec2-user@52.87.168.235

    Windows コンピュータから接続する場合は、次の手順を使用します。PuTTYを使用した Windows から Linux インスタンスへの接続

ステップ 4: クリーンアップする

インスタンスに接続できることを確認したあと、そのインスタンスが不要であれば終了できます。これを行うには、terminate-instances を使用します。この例で作成したそのほかのリソースを削除するには、 の順にコマンドを実行します。

  1. セキュリティグループを削除する:

    aws ec2 delete-security-group --group-id sg-e1fb8c9a
  2. サブネットを削除する:

    aws ec2 delete-subnet --subnet-id subnet-b46032ec
    aws ec2 delete-subnet --subnet-id subnet-a46032fc
  3. カスタムルートテーブルを削除する:

    aws ec2 delete-route-table --route-table-id rtb-c1c8faa6
  4. VPC からのインターネットゲートウェイのデタッチ:

    aws ec2 detach-internet-gateway --internet-gateway-id igw-1ff7a07b --vpc-id vpc-2f09a348
  5. インターネットゲートウェイの削除:

    aws ec2 delete-internet-gateway --internet-gateway-id igw-1ff7a07b
  6. VPC の削除:

    aws ec2 delete-vpc --vpc-id vpc-2f09a348