VPCが苦手な場合は、aws-cliを使用してターミナルからVPCやサブネット、ルートテーブル、インターネットゲートウェイなどの他のリソースを管理すると、少し混乱する可能性があります。この記事では、2つのサブネット、ルートテーブル、およびインターネットゲートウェイを備えたVPCを作成します。これらのサブネットは、パブリックサブネットになります。 VPCが作成された後、このVPCで作成されたEC2インスタンスへの接続を試みます。この記事の目的は、端末からVPCを管理するために使用されるコマンドを紹介することです。
最初にVPCをよく理解することをお勧めします。この記事の焦点は、VPCの説明ではありません。 VPCで実行できる操作については、こちらの公式ドキュメントをご覧ください。
- AWSアカウント(アカウントがない場合は作成します)。
- VPCの基本的な理解(AWSコンソールからVPCを作成する方法については、ここをクリックしてください)。
- AmazonVPCFullAccessポリシーが添付されたAWSIAMユーザーとそのアクセスキーおよびシークレットキー(IAMユーザーの作成方法については、ここをクリックしてください)。
- ローカルマシンにインストールされているAWSCLI。
- EC2インスタンスの基本的な理解(Ubuntu EC2インスタンスの作成方法については、ここをクリックしてください)
何をしますか?
- aws cliを確認し、ローカルマシンにAWSアクセスとシークレットキーをエクスポートします。
- awscliを使用してVPCを管理します。
aws cliを確認し、ローカルマシンでawsアクセスとシークレットキーをエクスポートします。
マシンにaws-cliユーティリティがインストールされていない場合は、こちらの公式ドキュメントを参照してローカルマシンにインストールし、次のコマンドを使用してバージョンを確認してください。
aws --version
次のコマンドを実行すると、ターミナルでAWSアカウントへのアクセスが設定されていないため、エラーが発生します。
aws sts get-caller-identity
次のコマンドを使用して、AWSIAMユーザーアクセスとシークレットキーをターミナルにエクスポートします。
export AWS_ACCESS_KEY_ID=<aws-user-access-key>
export AWS_SECRET_ACCESS_KEY=<aws-user-secret-key>
今回は、次のコマンドを実行して本人確認を行うことができます
aws sts get-caller-identity
aws-cliを使用してVPCを管理する
次のコマンドを使用してVPCを作成します。デフォルトのVPCは作成されません。 10.0.0.0/16は、作成されるVPCのCIDRになります。選択と要件に応じて、有効なCIDRを指定できます。
aws ec2 create-vpc --cidr-block 10.0.0.0/16
上のスクリーンショットのVpcIdに注目してください。出力に別のVpcIdが表示されます。 VpcIdをメモします。次の手順で必要になります。
現在のリージョンのすべてのVPCを説明するには、次のコマンドを実行します。
aws ec2 describe-vpcs
VpcIdを指定することで、特定のVPCを記述できます
aws ec2 describe-vpcs --vpc-ids vpc-03c4278f3b75efd77
次に、作成したVPCに2つのサブネットを作成しましょう。ここでは、両方のサブネットのVPCに一意のCIDRブロックが必要です。
aws ec2 create-subnet --vpc-id vpc-03c4278f3b75efd77 --cidr-block 10.0.1.0/24
aws ec2 create-subnet --vpc-id vpc-03c4278f3b75efd77 --cidr-block 10.0.2.0/24
サブネットをパブリックにするには、インターネットゲートウェイを作成する必要があります
aws ec2 create-internet-gateway
以前に作成したVPCにインターネットゲートウェイを接続します。
aws ec2 attach-internet-gateway --internet-gateway-id igw-04f1e4f13f92599c3 --vpc-id vpc-03c4278f3b75efd77
それでは、ルートテーブルを作成しましょう。
aws ec2 create-route-table --vpc-id vpc-03c4278f3b75efd77
ルートテーブルを両方のサブネットに関連付けます
aws ec2 associate-route-table --route-table-id rtb-0878d652f460dbf50 --subnet-id subnet-0748ef7a26aefc7cc
aws ec2 associate-route-table --route-table-id rtb-0878d652f460dbf50 --subnet-id subnet-0375b656eb64962e8
ルートテーブルからインターネットゲートウェイへのルートを作成すると、ルートテーブルに関連付けられたサブネットが公開されます
aws ec2 create-route --route-table-id rtb-0878d652f460dbf50 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-04f1e4f13f92599c3
これで、2つのサブネット、1つのルートテーブル、およびルートテーブルからインターネットゲートウェイへのルートを備えたVPCができました。
このVPCといずれかのサブネットでEC2インスタンスを作成すると、インスタンスはインターネットからパブリックに到達可能になります。 Ubuntu EC2インスタンスの作成方法については、前提条件に記載されているドキュメントを参照してください。インスタンスを作成するときに、作成したばかりのVPCを指定します。
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep VpcId
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep SubnetId
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep PublicIpAddress
ssh -i ~/Downloads/aws-cli.pem [email protected]
この記事では、2つのサブネット、1つのルートテーブル、インターネットゲートウェイ、およびルートテーブルからインターネットゲートウェイへのルートを使用してVPCを作成する手順について説明しました。また、いずれかのサブネットで作成されたインスタンスがインスタンスを公開することもわかりました。 両方のサブネットがパブリックサブネットであるため、使用可能です。