【学習記録】AWS CLIでVPC作成

今日はAWS CLIVPCなどを作成する操作を学びました。
マネジメントコンソール、AWS CLI、CloudFormationの順番で同じ操作を勉強したら頭に入りやすいかと考え実験中です。

CloudFormationは検証するのにちょっと時間かかるかも知れないのですぐに着手するかわかりませんが、AWS CLIはすぐに試せそうだしマネジメントコンソールで操作を勉強したらすぐAWS CLIも試すようにしようと思ってます。

マネジメントコンソールで操作することで自分の中で視覚的にイメージしやすくして、その後AWS CLIで操作してプログラム的にも理解していければ良いかなと。

個人的にはマネジメントコンソールとAWS CLIのメリットデメリットを以下のように整理してます。

マネジメントコンソールのメリット
- GUIを見て各サービスの雰囲気をイメージしやすい
- 現在の構成を一目で確認しやすい(EC2のインスタンス数、S3のバケット数など)

マネジメントコンソールのデメリット
- 再現性が保ちにくい(自分の場合はすぐ操作を忘れてしまいます)
- 同じ操作を繰り返す時に毎回同じ手順を踏まないといけないので時間がかかる

AWS CLIのメリット
- スクリプトを残しておけば何度も同じ操作を再現しやすい
- コマンドをゆっくり読みながらひとつひとつの引数を理解しやすい

AWS CLIのデメリット
- まだ使い慣れてないAWSのサービスを使うときは全体の雰囲気を掴みにくい

上記は個人の感想ですが、それぞれの長所と短所を意識して勉強してみたいと思います。

以下はAWS CLIからVPCの操作方法です。

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

上記コマンドを実行すると以下のようなJSONが出力される

{
    "Vpc": {
        "CidrBlock": "10.0.0.0/16",
        "DhcpOptionsId": "dopt-ff557c98",
        "State": "pending",
        "VpcId": "vpc-02479fa33475f641d",
        "OwnerId": "XXXXXXXXX",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-0b92c39b071b5c80a",
                "CidrBlock": "10.0.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": false
    }
}

名前タグがないと確認しにくいので以下のコマンドで名前タグをつける --resourcesの後ろは先ほど出力されたVpcIdを指定する

aws ec2 create-tags --resources vpc-02479fa33475f641d --tags Key=Name,Value=20201215vpc

指定した名前タグでVPCが作成されていることを確認 f:id:JunpeiNakasone:20201214224336p:plain

補足 下記のJSONの"InstanceTenancy"がGUIのテナンシーと同じだと思われる。
CLIから値を指定せずVPCを作成したので初期値の"default"が設定されているはず。
JSONの"Ipv6CidrBlockAssociationSet"はGUIの「IPv6 CIDR ブロック」の項目だはず。GUIで初期値は「IPv6 CIDR ブロックなし」になっていてCLIでも指定なしでVPC作成すると[]で出力されている。

{
    "Vpc": {
        "CidrBlock": "10.0.0.0/16",
        "DhcpOptionsId": "dopt-ff557c98",
        "State": "pending",
        "VpcId": "vpc-02479fa33475f641d",
        "OwnerId": "428351874559",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-0b92c39b071b5c80a",
                "CidrBlock": "10.0.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": false
    }
}

f:id:JunpeiNakasone:20201215065339p:plain

AWS CLIからコマンド実行する時は各引数がGUIではどう表現されているか意識すると頭に入りやすいそうな気がします。
全引数がGUI上で項目あるわけではないと思いますが、GUIで入力できないのは自動で設定されるもの(VpcIDとか)だったり、重要度が低い設定だったりすのかと予測してます。

いろいろ試しながら勉強したいと思います。