削除してしまったデフォルトVPCやサブネットを再作成する

とらくらのインフラエンジニア、takaiです。

AWSの各リージョンでは、初回使用開始時に「デフォルトVPC」、「デフォルトサブネット」が自動的に作成されます。

これら、「デフォルトVPC」及び「デフォルトサブネット」はEC2インスタンスを新規作成する際などに既定値として使用される為、削除してしまった場合にはインスタンス作成が失敗するなど不具合が出る可能性もあるため、基本的には削除しないことが良いものになります。

しかし、AWSのマネジメントコンソール上からユーザーが作成したVPCやサブネットと同様の手順で
簡単に削除する事ができてしまいます。

そのため、何らかの事情で「デフォルトVPC」や「デフォルトサブネット」を削除してしまう可能性があります。

削除してしまったデフォルトVPCやサブネットの再作成を行いたい場合、
「デフォルトVPC」は「AWSマネジメントコンソール」から再作成が可能ですが、
「デフォルトサブネット」については「AWSのマネジメントコンソール」上から再作成できず、
AWS CLIから作業する必要があります。

再作成した場合、「デフォルトVPC」の [IPv4 CIDR] はリージョンに関係なく、 [172.31.0.0/16] が固定的に割り当てられるようですが、「デフォルトサブネット」の [IPv4 CIDR] については、削除してしまった「デフォルトサブネット」と同じ [IPv4 CIDR] レンジを指定することはできず、再作成時に [172.31.xxx.0/20] の中から自動的に割り当てられるようです。

詳しくは下記公式を参照ください。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/default-vpc.html

デフォルトVPCの再作成

「デフォルトVPC」を削除してしまった場合は、[AWSマネジメントコンソール]から再作成が可能です。

まず、操作対象のリージョンが合っているかを確認したうえで、現在の「デフォルトVPC」及び「デフォルトサブネット」の状態を確認しましょう。
「デフォルトVPC」を作成する際に「デフォルトサブネット」も存在しない場合は、自動的に「デフォルトサブネット」も作成されます。
既存の「デフォルトサブネット」が存在する場合は、事前に削除しておくなど、必要に応じて対処しておくとよいでしょう。

確認が完了したら、[VPC]メニューの[アクション]→[デフォルトPCを作成]をクリックします。

「デフォルトVPC」の作成画面になりますので、[デフォルトVPCを作成]をクリックします。

「デフォルトVPC」が作成されましたので、[VPC ID]を確認してから[VPC]メニューをクリックします。

[VPC]の一覧から、先ほど確認した[VPC ID]で「デフォルトVPC」が作成されていることを確認、右にスライドします。

最後のほうに[デフォルトVPC]項目がありますので、[はい]になっていることを確認します。
作成した[デフォルトVPC]は間違えて削除しないよう、[Name]タグを設定しておくと良いでしょう。

次に、[サブネット]メニューを開き、[デフォルトサブネット]が作成されていることを確認します。
[VPC]欄が先ほど作成した「デフォルトVPC」の[VPC ID]になっていることを確認して、右にスライドします。
※リージョン内で利用可能なAZすべてに1個ずつ作成されます。

最後のほうに[デフォルトのサブネット]項目がありますので、[はい]になっていることを確認します。
作成された[デフォルトサブネット]は間違えて削除しないよう、[Name]タグを設定しておくと良いでしょう。

以上で、「デフォルトVPC」の再作成が完了です。

デフォルトサブネットの再作成

「デフォルトVPC」は残っているが「デフォルトサブネット」を削除してしまった場合、[AWSマネジメントコンソール]から「デフォルトサブネット」の再作成を行うことができません。

「デフォルトサブネット」のみを再作成したい場合、AWS CLIから作業する必要があります。

AWS CLIのインストール

AWS CLIをインストールしていない場合は、事前にインストールが必要になります。
Win/Linux/Macそれぞれインストールが可能ですので、下記手順に沿ってインストールを行います。
AWS CLI には バージョン1 と バージョン2 がありますが、特に指定が無ければ バージョン2
をインストールすれば問題ないでしょう。

Windowsへのインストールは、下記サイトより最新版のMSIインストーラーをダウンロード後、
実行するだけで完了します。
インストール時のメニューでは、特に選択肢はないので、そのまま[次へ]で進めれば問題ありません。

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html

インストールを完了したら、正常にインストールできていることを確認します。
今回はWindows版を利用しますので、コマンドプロンプトを起動し、下記コマンドを実行します。

c:\>aws --version

正常に実行されると、インストールされているAWS CLIのバージョンが返されます。

aws-cli/2.4.3 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

IAMユーザー作成(アクセスキーIDの取得)

AWS CLIで作業するには、AWS CLIへAWSへ接続する為のアクセスキーIDとシークレットアクセスキーの設定が必要になります。

アクセスキーIDとシークレットアクセスキーを取得する為、今回の作業で使用する[IAMアカウント]を作成します。

[AWSマネジメントコンソール]にログインを行い「IAM ダッシュボード」を開きます。
左ペインより[ユーザー]を選択し、右ペインの[ユーザーを追加]をクリックします。

[ユーザー名]欄に作成するユーザー名を入力します(例では[vpc-user])。
[AWSアクセスの種類を選択]では、今回AWS CLIからの利用に限定したいので、[アクセスキー・プログラムによるアクセス]にのみチェックを付けて、[次のステップ:アクセス権限]をクリックします。

アクセス権限はIAMアカウントに直接付与せず、権限を付与したグループを割り当てたいので、[グループの作成]をクリックします。

作成するグループに、グループ名を入力します(例では[vpc-full])。
ポリシーのフィルターで[vpc]と入力し、フィルタリングを行い、表示されたポリシーの中から[AmazonVPCFullAccess]を選択して[グループの作成]をクリックします。

作成したグループが選択されていることを確認して、[次のステップ:タグ]をクリックします。

今回は、タグには何も設定せず、[次のステップ:確認]をクリックします。

設定内容を確認して、間違いなければ[ユーザーの作成]をクリックします。

ユーザーの作成が成功したことを確認して、[.csvのダウンロード]をクリックし、[シークレットアクセスキー]をダウンロードします。
ダウンロードしたファイルは「new_user_credentials.csv」というファイル名で保存されますので、この画面を閉じる前に、ダウンロードされている事と、[User name][Password][Access key ID][Secret access key][Console login link]が記載されていることを確認してください。
確認ができたら、[閉じる]をクリックします。
※この画面を閉じると[シークレットアクセスキー]を確認する手段がなくなります。[シークレットアクセスキー]を紛失した場合は、速やかに[アクセスキー]を削除し、必要に応じて再作成してください。

 

閉じると、ユーザー一覧に今作成した[ユーザー]が追加されます。

AWS CLIの接続設定

AWS CLI に[アクセスキー]の設定を行うため、コマンドプロンプトで下記コマンドを実行します。

aws configure

まず、[Access Key ID]の入力を求められますので、先ほど取得した[アクセスキー]を入力します。

AWS Access Key ID [None]:

次に [Secret Access Key]の入力を求められますので、同様に先ほど取得した[シークレットアクセスキー]を入力します。

AWS Secret Access Key [None]:

次に[接続先リージョン]の入力を求められますので、「デフォルトサブネット」を作成したい[リージョン]を入力します。
東京リージョンの場合は「ap-northeast-1」になります。

Default region name [None]:

最後に出力形式の入力を求められますので、json, table, textのどれかを入力します。
特に指定が無ければ「json」にしておくのが良いでしょう。

Default output format [None]: 

設定に問題なければ、これでAWSへCLIから接続が行えますので、作成済みのEC2インスタンスやS3バケットを確認してみます。

ec2インスタンスの確認

aws ec2 describe-instances

s3のバケット確認(権限が無い為、エラーになります)

aws s3 ls

デフォルトサブネットの作成

最初に[AWSマネジメントコンソール]から今回作業する[リージョン]で利用可能な[AZ]を確認します。

[EC2のダッシュボード]を開き、右の[ゾーン]をクリックします。

利用可能なアベイラビリティゾーンを確認し、各AZの名称を控えておきます。

「VPCのダッシュボード」に移動し、[VPC]メニューから既存の「デフォルトVPC」を確認し、[VPC ID]を控えておきます。

[サブネット]メニューを開き、必要な[デフォルトサブネット]がない事を確認します。
※基本的に該当リージョンで利用可能なAZ分存在しています。

下記図ではサブネットが2個存在していますが、どちらも[デフォルトサブネット]にはなっていませんので、
[デフォルトサブネット]が一つも存在しない状態となります。

AWS CLI使用して[デフォルトサブネット]を作成していきます。
東京リージョンでは使用可能なAZが3個ありますので、[デフォルトサブネット]を各AZに1個ずつ計3個作成します。

aws ec2 create-default-subnet --availability-zone ap-northeast-1a

作成が成功すると、下記のように結果が返されます

C:\Users\user>aws ec2 create-default-subnet --availability-zone ap-northeast-1a
{
    "Subnet": {
        "AvailabilityZone": "ap-northeast-1a",
        "AvailableIpAddressCount": 4091,
        "CidrBlock": "172.xxx.0.0/20",
        "DefaultForAz": true,
        "MapPublicIpOnLaunch": true,
        "MapCustomerOwnedIpOnLaunch": false,
        "State": "available",
        "SubnetId": "subnet-09xxxxxxxxxxxxx96",
        "VpcId": "vpc-14xxxx72",
        "OwnerId": "59xxxxxxxx22",
        "AssignIpv6AddressOnCreation": false,
        "Ipv6CidrBlockAssociationSet": [],
        "Tags": [],
        "EnableDns64": false,
        "Ipv6Native": false,
        "PrivateDnsNameOptionsOnLaunch": {
        "HostnameType": "ip-name",
            "EnableResourceNameDnsARecord": false,
            "EnableResourceNameDnsAAAARecord": false
        }
    }
}

既に[デフォルトサブネット]が作成されているAZに対してコマンドを実行した場合は、下記のようなエラーが返され、同一AZに対して複数のデフォルトサブネットが作成されることはありません。

C:\Users\user>aws ec2 create-default-subnet --availability-zone ap-northeast-1a

An error occurred (DefaultSubnetAlreadyExistsInAvailabilityZone) when calling the CreateDefaultSubnet operation: 'subnet-0xxxxxxxxxxxx5' is already the default subnet in ap-northeast-1a.

「AWSマネジメントコンソール」からも確認をします。
指定した AZ に 「デフォルトVPC」 に紐づいた [デフォルトサブネット] として作成されたことが確認できます。

同様の手順で、残りのAZに対しても[デフォルトサブネット]を作成します。

作成した[デフォルトサブネット]は間違えて削除しないよう、[Name]タグを設定しておくと良いでしょう。

これで、削除してしまった[デフォルトサブネット]の再作成が完了しました。

アクセスキーの無効化

今回の作業で使用したIAMユーザーのアクセスキーについては、セキュリティ面から、使用終了後には速やかに無効化または削除を行います。
今後使用予定が無ければ、作成したIAMユーザー自体を削除してしまうのもよいと思います。

[IAMユーザー]を作成した時と同様に、[IAMダッシュボード]から「ユーザー」をクリックし、使用したIAMユーザーをクリックします。

[認証情報]のタブをクリックします。

今回使用した[アクセスキーID]の[ステータス]欄から、キーの無効化または削除を行います。

 

無効化する場合

[無効化]をクリックすると、下記のように確認ポップアップが出ますので、[無効化]をクリックします。

選択したアクセスキーが非アクティブ化された旨の表示と共に、該当アクセスキーの[ステータス]欄で[無効]が表示になります。

 

削除する場合

削除したいアクセスキーIDの右端にある[×]をクリックすると、下記のように確認ポップアップが出ますので、
テキスト入力フィールドにアクセスキーIDを入力して、[削除]をクリックします。

選択したアクセスキーが削除された旨の表示と共に、該当アクセスキーが[アクセスキーID]の一覧から削除されます。

これで、[アクセスキーID]の無効化または削除が完了しました。

最短でAWSを習得したい方におすすめ!
オンラインスクール「とらくら」

当ブログを運営しているオンラインスクール「とらくら」では、AWSを扱うために必要不可欠な主要サービスの知識を、理論学習だけでなく、環境構築をハンズオン形式で実践できるカリキュラムをご用意しています。

随時、個別の無料説明会を開催しており、講座内容や料金、本講座を受講するメリット・デメリットについてはもちろん、業界に精通しているからこそできるエンジニアのキャリアプランや業界の情勢などを、ざっくばらんにお話します。

些細なことでも、お気軽にご相談ください。



インフラ構築コース、受講生募集中!AWS WordPress環境構築コース、受講生募集中!

投稿者プロフィール

takai
takai
<インフラエンジニア>
■ 家電量販店での商品販売や配送、設置、テクニカル対応等の経験と知識を活用し、Windows環境を主としてオンプレミスの端末、サーバー、ネットワーク構築・運用経験豊富なエンジニア。
■ 広く浅くDIY、電子工作、車、カメラ、動画撮影など多岐色々なことに興味を持ち、自宅に簡易な検証環境を構築して日々コンピュータと戯れている逸般人

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です