NTT東日本の自治体クラウドソリューション

Amazon Q Developer CLIを使って、ネットワーク構成管理を楽にしよう

こんにちは、白鳥です。

今回の記事では、単一リージョンの複数VPCを集約するネットワーク構成を利用している想定で、Amazon Q Developer CLIを使ったネットワーク構成管理の業務を進めていきたいと思います。

すでに公式ブログ(Using generative AI for building AWS networks | Networking & Content Delivery)でもAmazon Q Developerを使ったネットワーク構築管理を行う記事が出ていますが、こちらはCloudWANやTransit GatewayからVPC Latticeへのマイグレーションといった記事になりますので、こちらも見ておくとよいかもしれません

想定する読者

  • AWSのネットワーク構成管理に苦労している方
  • AWSで構築されたシステム管理をAIでアシストしたい方

AWSのネットワークに関するお悩みや課題などNTT東日本のクラウドエンジニアがお応えします。お気軽にご相談ください!

今回の流れ

今回は、以下の流れで進めたいと思います。

  • 現行ネットワーク調査
  • サービスVPC追加依頼
  • 追加後のネットワーク構成図作成
  • クォータ到達時の動作確認
  • クォータ到達時の動作を記述した作業手順書のアップデート

AWSのネットワークに関するお悩みや課題などNTT東日本のクラウドエンジニアがお応えします。お気軽にご相談ください!

前提条件

今回の作業は当社の検証環境で行いました。当社の検証環境では東京リージョンに多数の環境が構築されているため、今回もソウルリージョン(ap-northeast-2)を使用しました。

(作業前の構成)

Internet向けVPC(固定・変更不可)

  • VPC名: Internet-VPC
  • CIDR: 192.168.0.0/16
  • 用途: インターネットゲートウェイ・NATゲートウェイ集約
  • サブネット構成:
    • プライベートサブネット: 192.168.1.0/24, 192.168.2.0/24
    • パブリックサブネット: 192.168.129.0/24, 192.168.130.0/24

既存サービスVPC

  • System-VPC-1: 10.1.0.0/16
  • Development-VPC-2: 10.2.0.0/16

ネットワーク接続要件

  • 各VPC間はTransit Gatewayでフルメッシュ接続
  • 全VPCのデフォルトルートはInternet-VPCに設定

構成図は次の通りです。

構成図の環境は事前に作成しておきます。

AWSネットワーク構成管理作業で必要なこと

AWSネットワーク構成管理の作業で必要なことは、おおむね下記のとおりです。

  • 依頼に基づくVPCの追加・削除
  • VPCの利用者の管理
  • 使用しているCIDRブロックやサブネットの管理
  • ネットワーク利用状況の調査・レポート(今回は省略)

これらの内容を作業手順書という形でいったんドキュメントにまとめ、Amazon Q Developerが参照できるようなマークダウン形式にしています。

作業手順書(全文)

依頼に基づくサービスVPCの追加・削除

サービスVPCの作成手順及び、削除手順をステップバイステップで記載しています。VPCの作成・サブネットの作成・Transit Gatewayへのアタッチおよびルーティング設定です。

想定されるエラー時の対応手順もできれば記載しておきます。

VPCの利用者の管理

VPC利用リストにて管理を行います。VPC利用リストも今回は同じファイルに格納していますが、作業手順書に対してAmazon Q Developerに書き込み権限を持たせることになるので、本番運用では別のファイルを使用するのが望ましいです。今回は利用部門名を利用する形式でしたので、利用部門名を事前に手順書に記載しています。

使用しているCIDRブロックやサブネットの管理

VPC利用リストと、CIDRブロックの採番ポリシーを定めています。今回は次のような採番ポリシーを定めています。

  • 10.X.0.0/16形式で第2オクテット(X)の最も小さい空き番号を使用
  • 10.0.0.0/16は予約済みのため使用禁止
  • 空きがない場合は上長(人間)にエスカレーション(作業中止)

その他の注意事項

今回Amazon Q Developer CLIが作成するサービスVPCからインターネットへ直接出ないため、インターネットゲートウェイ、NATゲートウェイおよびパブリックサブネットを作成しない、ということも作業手順書に明記しておきます。これはAmazon Q Developer CLIが使用するIAMポリシーで厳格に定めておくことも効果的です。必要なIAMポリシーについては後述します。

AWSのネットワークに関するお悩みや課題などNTT東日本のクラウドエンジニアがお応えします。お気軽にご相談ください!

MCP Server追加

次に、手元のPCのAmazon Q Developer CLIの設定を行います。Amazon Q Developer CLIの最新版へのアップデート、MCP Serverに必要なパッケージのアップデート、AWS CLIの最新化および、アクセスキー/シークレットアクセスキーの設定を行います。これらの設定手順は前回までの記事を参考にしてください。

次にMCPサーバーの設定を行います。今回は新たなMCP Serverとして、AWS API MCP Serverを追加します。追加手順は前回と同様ですが、改めて記載しておきます。

下記の2種類のいずれかのjsonファイルを修正します。

  • `C:\Users\${User}\.aws\amazonq`フォルダの場合、PCすべてに適用
  • ワークスペースのルートにある.amazonq/ディレクトリの場合、対象のワークスペースにのみ適用

AWS API MCP Serverのみを利用する場合は、このような形になります。

{
  "mcpServers": {
    "awslabs.aws-api-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.aws-api-mcp-server@latest"
      ],
      "env": {
        "AWS_REGION": "us-east-1"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

バージョン確認

q --version

起動コマンド

q chat

例によって起動すれば準備完了です。

作業①:現行ネットワーク調査

それでは、まずは前提条件の通りに設定されているかネットワーク環境を調査してもらいます。長いプロンプトは書かず、作業手順書の前提条件を読んでもらう形にします。

ap-northeast-2リージョンのネットワーク環境を調査してください。ネットワーク構成情報は~/aws_vpc_management_guide.mdの記載の通りです。

> ap-northeast-2リージョンのネットワーク環境を調査します。まず、指定されたファイルの内容を確認してから、実際のAWSリソースの状況を調査しましょう。

🛠️ Using tool: fs_read (trusted)

● Reading file: ~/aws_vpc_management_guide.md, all lines

● Completed in 0.0s

> ファイルの内容を確認しました。次に、ap-northeast-2リージョンの実際のネットワーク環境を調査します。

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-vpcs --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-transit-gateways --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-transit-gateway-attachments --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-subnets --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-transit-gateway-route-tables --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ## ap-northeast-2リージョン ネットワーク環境調査結果

### **📋 調査概要**

ドキュメント(~/aws_vpc_management_guide.md)の記載内容と実際のAWSリソースの状況を比較調査しました。

### **✅ VPC構成の確認**

| VPC名 | VPC ID | CIDR | 状態 | ドキュメント記載 |

|-------|--------|------|------|------------------|

| Internet-VPC | vpc-************ | 192.168.0.0/16 | ✅ 稼働中 | ✅ 一致 |

| System-VPC-1 | vpc-************ | 10.1.0.0/16 | ✅ 稼働中 | ✅ 一致 |

| Development-VPC-2 | vpc-************ | 10.2.0.0/16 | ✅ 稼働中 | ✅ 一致 |

| Default VPC | vpc-************ | 172.31.0.0/16 | ✅ 稼働中 | ❌ 記載なし |

### **🔗 Transit Gateway構成**

Transit Gateway

• **ID**: tgw-************ ✅(ドキュメント記載と一致)

• **名前**: Transit-gateway-1

• **状態**: available

• **Route Table ID**: tgw-rtb-************ ✅(ドキュメント記載と一致)

Transit Gateway Attachments

| VPC | Attachment ID | 状態 | 名前 |

|-----|---------------|------|------|

| Internet-VPC | tgw-attach-************ | ✅ available | Internet-VPC-attatchment |

| System-VPC-1 | tgw-attach-************ | ✅ available | System-VPC-1-attatchment |

| Development-VPC-2 | tgw-attach-************ | ✅ available | Development-VPC-2-attachment |

### **🌐 サブネット構成詳細**

#### **Internet-VPC (192.168.0.0/16)**

| サブネット名 | CIDR | AZ | タイプ | 状態 |

|-------------|------|----|----|------|

| Internet-VPC-subnet-private1-ap-northeast-2a | 192.168.1.0/24 | ap-northeast-2a | プライベート | ✅ |

| Internet-VPC-subnet-private2-ap-northeast-2b | 192.168.2.0/24 | ap-northeast-2b | プライベート | ✅ |

| Internet-VPC-subnet-public1-ap-northeast-2a | 192.168.129.0/24 | ap-northeast-2a | パブリック | ✅ |

| Internet-VPC-subnet-public2-ap-northeast-2b | 192.168.130.0/24 | ap-northeast-2b | パブリック | ✅ |

#### **System-VPC-1 (10.1.0.0/16)**

| サブネット名 | CIDR | AZ | タイプ | 状態 |

|-------------|------|----|----|------|

| System-VPC-1-subnet-private1-ap-northeast-2a | 10.1.1.0/24 | ap-northeast-2a | プライベート | ✅ |

| System-VPC-1-subnet-private2-ap-northeast-2b | 10.1.2.0/24 | ap-northeast-2b | プライベート | ✅ |

#### **Development-VPC-2 (10.2.0.0/16)**

| サブネット名 | CIDR | AZ | タイプ | 状態 |

|-------------|------|----|----|------|

| Development-VPC-2-subnet-private1-ap-northeast-2a | 10.2.1.0/24 | ap-northeast-2a | プライベート | ✅ |

| Development-VPC-2-subnet-private2-ap-northeast-2b | 10.2.2.0/24 | ap-northeast-2b | プライベート | ✅ |

### **📊 CIDR利用状況**

利用中のCIDRブロック

• ✅ 192.168.0.0/16 (Internet-VPC)

• ✅ 10.1.0.0/16 (System-VPC-1)

• ✅ 10.2.0.0/16 (Development-VPC-2)

• ❌ 10.0.0.0/16 (予約済み・使用禁止)

次回VPC作成時の利用可能CIDR

• 🆕 10.3.0.0/16 (次に利用可能な最小番号)

### **⚠️ 発見事項**

1. ドキュメントとの整合性: 基本的にドキュメント記載内容と実際の構成が一致

2. Default VPC: ドキュメントに記載されていないDefault VPC (172.31.0.0/16) が存在

3. Transit Gateway接続: 全てのVPCが正常にTransit Gatewayに接続済み

4. CIDR採番: 次回作成時は10.3.0.0/16が利用可能

### **🔧 推奨事項**

1. ドキュメント更新: Default VPCの存在をドキュメントに記載

2. CIDR管理: 10.3.0.0/16以降の番号が新規VPC作成で利用可能

3. ネットワーク構成: 現在の構成は設計通りに正常稼働中

ネットワーク環境は設計通りに構築されており、新規VPC作成の準備が整っています。

ドキュメントに記載の構成からAWS API MCP Serverの最小限のコマンド実行を行い正しくネットワーク構成を把握しているように見えます。

ドキュメントにないデフォルトVPCが存在していることを認識し、ドキュメントを反映するよう推奨提案をしてきていますが、いったんわざと無視して進めます。

作業②:サービスVPC追加依頼対応

それでは、次にOperation部門のVPCを追加する依頼があったとして次の作業を進めます。

期待する作業結果

  • Operation-VPC-3という名前で10.3.0.0/16のVPCが作成され、Transit Gatewayと関連付けられる
  • ルートテーブルが正しく設定されている
  • VPC利用リストが正しく更新されている

プロンプトは極力シンプルにします。

Operation部門より新規VPCの作成とネットワーク接続依頼が来ましたので、作業手順書に応じ作業を行ってください。

Operation部門からの新規VPC作成依頼を承りました。作業手順書の手順に従って作業を実行します。

## **🔧 VPC作成作業開始**

### **手順1: CIDR採番確認**

調査結果より、次に利用可能なCIDRは 10.3.0.0/16 です。

作業パラメータ

• **利用部門名**: Operation

• **第2オクテット**: 3

• **VPC名**: Operation-VPC-3

• **VPC CIDR**: 10.3.0.0/16

### **手順2: VPC作成**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-vpc --cidr-block 10.3.0.0/16 --region ap-northeast-2 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=Operation-VPC-3}]'"

⋮ },

⋮ "name": "call_aws"

> ✅ VPC作成完了

• **VPC ID**: vpc-************

• **VPC名**: Operation-VPC-3

• **CIDR**: 10.3.0.0/16

DNS設定を有効化します。

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 modify-vpc-attribute --vpc-id vpc-************ --enable-dns-support --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ### 手順3: サブネット作成

#### **AZ-a用プライベートサブネット作成**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-subnet --vpc-id vpc-************ --cidr-block 10.3.1.0/24 --availability-zone ap-northeast-2a --region ap-northeast-2 --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Operation-VPC-3-private-2a}]'"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ AZ-a プライベートサブネット作成完了

• **サブネット ID**: subnet-************

• **CIDR**: 10.3.1.0/24

#### **AZ-b用プライベートサブネット作成**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-subnet --vpc-id vpc-************ --cidr-block 10.3.2.0/24 --availability-zone ap-northeast-2b --region ap-northeast-2 --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Operation-VPC-3-private-2b}]'"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ AZ-b プライベートサブネット作成完了

• **サブネット ID**: subnet-************

• **CIDR**: 10.3.2.0/24

### **手順4: ルートテーブル作成**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-route-table --vpc-id vpc-************ --region ap-northeast-2 --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=Operation-VPC-3-private-rt}]'"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ ルートテーブル作成完了

• **ルートテーブル ID**: rtb-************

#### **サブネットをルートテーブルに関連付け**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 associate-route-table --route-table-id rtb-************ --subnet-id subnet-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ サブネット関連付け完了

### **手順5: Transit Gateway設定**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-transit-gateway-vpc-attachment --transit-gateway-id tgw-************ --vpc-id vpc-************ --subnet-ids subnet-************ subnet-************ --region ap-northeast-2 --tag-specifications 'ResourceType=transit-gateway-attachment,Tags=[{Key=Name,Value=Operation-VPC-3-attachment}]'"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ Transit Gateway Attachment作成完了

• **Attachment ID**: tgw-attach-************

• **状態**: pending(作成中)

アタッチメントが利用可能になるまで少し待機してから、ルーティング設定を行います。

> まだpending状態ですが、ルーティング設定を先に進めます。

### **手順6: ルーティング設定**

#### **新規VPCのルートテーブルにルート追加**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-route --route-table-id rtb-************ --destination-cidr-block 0.0.0.0/0 --transit-gateway-id tgw-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-route --route-table-id rtb-************ --destination-cidr-block 10.0.0.0/8 --transit-gateway-id tgw-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ VPCルートテーブル設定完了

#### **Transit Gateway Route Tableにルート追加**

アタッチメントが利用可能になるまで待機してから、Transit Gateway Route Tableにルートを追加します。

> ✅ Transit Gateway Attachment利用可能

• **状態**: available

• **関連付け**: tgw-rtb-************に自動関連付け済み

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-transit-gateway-route --destination-cidr-block 10.3.0.0/16 --transit-gateway-route-table-id tgw-rtb-************ --transit-gateway-attachment-id tgw-attach-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ Transit Gateway Route Table設定完了

### **手順7: VPC利用リスト更新**

🛠️ Using tool: fs_read (trusted)

● Reading file: ~/aws_vpc_management_guide.md, from line 120 to 130

🛠️ Using tool: fs_write

● Path: aws_vpc_management_guide.md

121, 121: | VPC名 | VPC CIDRブロック | 利用部門 |

122, 122: |-------|------------------|----------|

123, 123: | Internet-VPC | 192.168.0.0/16 | Network |

124, 124: | System-VPC-1 | 10.1.0.0/16 | System |

- 125 : | Development-VPC-2 | 10.2.0.0/16 | Development |

+ 125: | Development-VPC-2 | 10.2.0.0/16 | Development |

+ 126: | Operation-VPC-3 | 10.3.0.0/16 | Operation |

↳ Purpose: VPC利用リストにOperation-VPC-3を追加

> ## 🎉 VPC作成作業完了報告

### **✅ 作業完了サマリー**

Operation部門向け新規VPC作成が正常に完了しました。

| 項目 | 詳細 | 状態 |

|------|------|------|

| VPC名 | Operation-VPC-3 | ✅ 作成完了 |

| VPC ID | vpc-************ | ✅ 稼働中 |

| CIDR | 10.3.0.0/16 | ✅ 設定完了 |

| DNS解決 | 有効 | ✅ 設定完了 |

| DNS名前 | 有効 | ✅ 設定完了 |

### **🌐 サブネット構成**

| サブネット名 | サブネット ID | CIDR | AZ | 状態 |

|-------------|---------------|------|----|----|

| Operation-VPC-3-private-2a | subnet-************ | 10.3.1.0/24 | ap-northeast-2a | ✅ 稼働中 |

| Operation-VPC-3-private-2b | subnet-************ | 10.3.2.0/24 | ap-northeast-2b | ✅ 稼働中 |

### **🔗 ネットワーク接続**

| 項目 | ID | 状態 |

|------|----|----|

| ルートテーブル | rtb-************ | ✅ 設定完了 |

| Transit Gateway Attachment | tgw-attach-************ | ✅ 接続完了 |

| デフォルトルート | 0.0.0.0/0 → tgw-************ | ✅ 設定完了 |

| サービスVPCルート | 10.0.0.0/8 → tgw-************ | ✅ 設定完了 |

| TGW Route Table | 10.3.0.0/16 → tgw-attach-************ | ✅ 設定完了 |

### **📋 更新済みVPC利用リスト**

| VPC名 | VPC CIDRブロック | 利用部門 |

|-------|------------------|----------|

| Internet-VPC | 192.168.0.0/16 | Network |

| System-VPC-1 | 10.1.0.0/16 | System |

| Development-VPC-2 | 10.2.0.0/16 | Development |

| Operation-VPC-3 | 10.3.0.0/16 | Operation |

### **🔧 次回利用可能CIDR**

• **10.4.0.0/16** (次に利用可能な最小番号)

### **✅ 作業確認事項**

1. ✅ CIDR採番確認(10.3.0.0/16を採番)

2. ✅ VPC作成(DNS設定含む)

3. ✅ プライベートサブネット2つ作成(各AZ)

4. ✅ ルートテーブル作成・関連付け

5. ✅ Transit Gateway Attachment作成

6. ✅ ルーティング設定(VPC・TGW両方)

7. ✅ VPC利用リスト更新

Operation部門のVPCは他の全VPCとTransit Gateway経由でフルメッシュ接続され、インターネットアクセスも可能な状態です。

## VPC利用リスト

| VPC名 | VPC CIDRブロック | 利用部門 |

|-------|------------------|----------|

| Internet-VPC | 192.168.0.0/16 | Network |

| System-VPC-1 | 10.1.0.0/16 | System |

| Development-VPC-2 | 10.2.0.0/16 | Development |

| Operation-VPC-3 | 10.3.0.0/16 | Operation |

無事に完成したようです。AWS CLIの実行履歴から正しく設定しているように見えますが、念のためマネジメントコンソールでも確認します。

VPC設定

ルートテーブル設定

Transit Gatewayアタッチメント&Transit Gatewayルートテーブル

作業③:追加後のネットワーク構成図作成

では、ここから作業後の状態の構成図を作成してもらいます。ここでは、AWS Diagram MCP Serverを使います。

現時点のネットワーク構成図をdiagram-mcp-serverを使用して作成してください。

> 現在のap-northeast-2リージョンのネットワーク構成図を作成します。まず、diagram-mcp-serverの使用方法を確認してから、適切なアイコンを選択して図を生成します。

🛠️ Using tool: get_diagram_examples from mcp server awslabsaws_diagram_mcp_server

🛠️ Using tool: list_icons from mcp server awslabsaws_diagram_mcp_server

> 現在のap-northeast-2リージョンのネットワーク構成図を作成します。

🛠️ Using tool: generate_diagram from mcp server awslabsaws_diagram_mcp_server

> 現在のap-northeast-2リージョンのネットワーク構成図を作成しました!

## **📊 ネットワーク構成図作成完了**

生成された図: /home/shiratori/generated-diagrams/ap-northeast-2-network-architecture.png

### **🏗️ 図に含まれる構成要素**

#### **🌐 Internet-VPC (192.168.0.0/16)**

• Internet Gateway(インターネット接続)

• NAT Gateway(プライベートサブネット用)

• パブリックサブネット: 192.168.129.0/24, 192.168.130.0/24

• プライベートサブネット: 192.168.1.0/24, 192.168.2.0/24

#### **🔗 Transit Gateway**

• **ID**: tgw-************

• **Route Table**: tgw-rtb-************

• 全VPC間のフルメッシュ接続を提供

#### **💼 各部門VPC**

1. System-VPC-1 (10.1.0.0/16)

• プライベートサブネット: 10.1.1.0/24, 10.1.2.0/24

2. Development-VPC-2 (10.2.0.0/16)

• プライベートサブネット: 10.2.1.0/24, 10.2.2.0/24

3. Operation-VPC-3 (10.3.0.0/16) ✨ 新規作成

• プライベートサブネット: 10.3.1.0/24, 10.3.2.0/24

### **🔄 ネットワークフロー**

1. インターネットアクセス: Users → Internet → Internet Gateway → Public Subnets → NAT Gateway → Private Subnets

2. VPC間通信: 各VPC → Transit Gateway → 他のVPC

3. ルーティング: 各VPCのプライベートルートテーブルからTransit Gatewayへのデフォルトルート設定

### **✅ 構成の特徴**

• **高可用性**: 各VPCで2つのAZ(ap-northeast-2a, ap-northeast-2b)を使用

• **セキュリティ**: 各部門VPCはプライベートサブネットのみ

• **スケーラビリティ**: Transit Gatewayによる拡張可能なネットワーク設計

• **インターネット接続**: Internet-VPCを通じた集約型インターネットアクセス

この図により、現在のネットワーク構成と新しく追加されたOperation-VPC-3の位置づけが視覚的に確認できます。

出来上がった構成図はこちらです。

インターネットのトラフィックはアウトバウンドとなるため、矢印は逆だと思いますが、形にはなっています。

作業④:クォータ到達時の動作確認

今の状態でソウルリージョンのVPC数は、デフォルトVPCも含め5になっています。

リージョンあたりのVPC数はデフォルトでは5なので、上限緩和申請を行わない限りこれ以上VPCを追加作成することができません。また、デフォルトVPCは削除可能ですので、もしAmazon Q Developer CLIがデフォルトVPCの削除を推奨してきた場合は、承認することとしてSystem部門からVPCの追加依頼に対応してみます。

デフォルトVPCが存在する場合

System部門より新たなVPC作成とネットワーク接続依頼が来ました。対応よろしくお願いします。

> System部門からの新規VPC作成依頼を承りました。ドキュメントの手順に従って作業を実行します。

## **🔧 System部門向け新規VPC作成作業開始**

### **手順1: CIDR採番確認**

現在の利用状況を確認します。

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-vpcs --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> 現在のCIDR利用状況:

• ✅ 192.168.0.0/16 (Internet-VPC)

• ✅ 10.1.0.0/16 (System-VPC-1)

• ✅ 10.2.0.0/16 (Development-VPC-2)

• ✅ 10.3.0.0/16 (Operation-VPC-3)

• ❌ 10.0.0.0/16 (予約済み・使用禁止)

次に利用可能なCIDR: 10.4.0.0/16

作業パラメータ

• **利用部門名**: System

• **第2オクテット**: 4

• **VPC名**: System-VPC-4

• **VPC CIDR**: 10.4.0.0/16

### **手順2: VPC作成**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-vpc --cidr-block 10.4.0.0/16 --region ap-northeast-2 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=System-VPC-4}]'"

⋮ },

⋮ "name": "call_aws"

> ## ⚠️ エラー発生: VPC制限に達しました

エラー内容: VpcLimitExceeded - The maximum number of VPCs has been reached.

### **🔍 現在の状況確認**

現在のVPC数を確認します:

1. Internet-VPC (192.168.0.0/16)

2. System-VPC-1 (10.1.0.0/16)

3. Development-VPC-2 (10.2.0.0/16)

4. Operation-VPC-3 (10.3.0.0/16)

5. Default VPC (172.31.0.0/16)

合計: 5個のVPC

### **📋 対応方針**

AWS アカウントのVPC制限(デフォルト5個)に達しているため、以下の対応が必要です:

#### **選択肢1: VPC制限の引き上げ申請**

• AWS Support経由でVPC制限の引き上げを申請

• 通常、リージョンあたり最大100個まで引き上げ可能

#### **選択肢2: 不要なVPCの削除**

• Default VPCが使用されていない場合は削除を検討

• 他の不要なVPCがあれば削除

#### **選択肢3: 既存VPCの活用**

• System-VPC-1を拡張して追加要件に対応

• 新しいサブネットやリソースを既存VPCに追加

### **🔧 推奨対応**

即座の対応: Default VPCの使用状況を確認し、未使用であれば削除してSystem-VPC-4を作成

想定通り、デフォルトVPCの使用状況から、削除を提案しています。ここはデフォルトVPCの使用状況を確認して削除するように指示をします。

デフォルトVPCの使用状況を確認し、未使用であれば削除して作業を継続してください。

Default VPCの使用状況を確認します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-instances --region ap-northeast-2 --filters \"Name=vpc-id,Values=vpc-************""

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ Default VPCは未使用(EC2インスタンスなし)

Default VPCに他のリソースがないか確認します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-network-interfaces --region ap-northeast-2 --filters \"Name=vpc-id,Values=vpc-************""

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ Default VPCにネットワークインターフェースなし

Default VPCを削除してSystem-VPC-4用の枠を確保します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-vpc --vpc-id vpc-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ Default VPC削除完了

これでVPC制限の枠が空きました。System-VPC-4を作成します:

(以後作業②と同様のため省略)

### **✅ 作業完了サマリー**

System部門向け新規VPC作成が正常に完了しました。

| 項目 | 詳細 | 状態 |

|------|------|------|

| VPC名 | System-VPC-4 | ✅ 作成完了 |

| VPC ID | vpc-************ | ✅ 稼働中 |

| CIDR | 10.4.0.0/16 | ✅ 設定完了 |

| DNS解決 | 有効 | ✅ 設定完了 |

| DNS名前 | 有効 | ✅ 設定完了 |

### **🌐 サブネット構成**

| サブネット名 | サブネット ID | CIDR | AZ | 状態 |

|-------------|---------------|------|----|----|

| System-VPC-4-private-2a | subnet-************ | 10.4.1.0/24 | ap-northeast-2a | ✅ 稼働中 |

| System-VPC-4-private-2b | subnet-************ | 10.4.2.0/24 | ap-northeast-2b | ✅ 稼働中 |

### **🔗 ネットワーク接続**

| 項目 | ID | 状態 |

|------|----|----|

| ルートテーブル | rtb-************ | ✅ 設定完了 |

| Transit Gateway Attachment | tgw-attach-************ | ✅ 接続完了 |

| デフォルトルート | 0.0.0.0/0 → tgw-************ | ✅ 設定完了 |

| サービスVPCルート | 10.0.0.0/8 → tgw-************ | ✅ 設定完了 |

| TGW Route Table | 10.4.0.0/16 → tgw-attach-************ | ✅ 設定完了 |

### **⚠️ 作業中の対応事項**

VPC制限対応: Default VPC(172.31.0.0/16)を削除してVPC制限枠を確保

• Internet Gateway、サブネット、セキュリティグループを順次削除

• Default VPCを正常に削除完了

### **📋 更新済みVPC利用リスト**

| VPC名 | VPC CIDRブロック | 利用部門 |

|-------|------------------|----------|

| Internet-VPC | 192.168.0.0/16 | Network |

| System-VPC-1 | 10.1.0.0/16 | System |

| Development-VPC-2 | 10.2.0.0/16 | Development |

| Operation-VPC-3 | 10.3.0.0/16 | Operation |

| System-VPC-4 | 10.4.0.0/16 | System |

### **🔧 次回利用可能CIDR**

• **10.5.0.0/16** (次に利用可能な最小番号)

### **✅ 作業確認事項**

1. ✅ CIDR採番確認(10.4.0.0/16を採番)

2. ✅ VPC制限対応(Default VPC削除)

3. ✅ VPC作成(DNS設定含む)

4. ✅ プライベートサブネット2つ作成(各AZ)

5. ✅ ルートテーブル作成・関連付け

6. ✅ Transit Gateway Attachment作成

7. ✅ ルーティング設定(VPC・TGW両方)

8. ✅ VPC利用リスト更新

System部門の新しいVPCは他の全VPCとTransit Gateway経由でフルメッシュ接続され、インターネットアクセスも可能な状態です。

デフォルトVPCの使用状況を確認したうえで削除を行い新規追加を実施しています。

デフォルトVPCが存在しない場合

では、この状態でさらにVPCの追加依頼が来るとどうなるでしょうか?利用していないVPCがあるかどうかネットワーク管理者はメトリクス等で推定はできるかもしれませんが、実際に使用していないかどうかはわかりません。したがって、次のような動作を期待します。

  • VPC作成に失敗する(クォータ制限)
  • クォータ上限緩和申請または不要なVPCを削除するよう、エスカレーションがある

Sales部門から新規のネットワーク追加依頼が来ています。対応をお願いします。

> Sales部門からの新規VPC作成依頼を承りました。ドキュメントの手順に従って作業を実行します。

## **🔧 Sales部門向け新規VPC作成作業開始**

### **手順1: CIDR採番確認**

現在の利用状況を確認します。

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-vpcs --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> 現在のCIDR利用状況:

• ✅ 192.168.0.0/16 (Internet-VPC)

• ✅ 10.1.0.0/16 (System-VPC-1)

• ✅ 10.2.0.0/16 (Development-VPC-2)

• ✅ 10.3.0.0/16 (Operation-VPC-3)

• ✅ 10.4.0.0/16 (System-VPC-4)

• ❌ 10.0.0.0/16 (予約済み・使用禁止)

次に利用可能なCIDR: 10.5.0.0/16

作業パラメータ

• **利用部門名**: Sales

• **第2オクテット**: 5

• **VPC名**: Sales-VPC-5

• **VPC CIDR**: 10.5.0.0/16

### **手順2: VPC作成**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 create-vpc --cidr-block 10.5.0.0/16 --region ap-northeast-2 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=Sales-VPC-5}]'"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ## ⚠️ エラー発生: VPC制限に再度達しました

エラー内容: VpcLimitExceeded - The maximum number of VPCs has been reached.

### **🔍 現在の状況**

現在のVPC数:5個(制限に達している)

1. Internet-VPC (192.168.0.0/16)

2. System-VPC-1 (10.1.0.0/16)

3. Development-VPC-2 (10.2.0.0/16)

4. Operation-VPC-3 (10.3.0.0/16)

5. System-VPC-4 (10.4.0.0/16)

### **📋 対応方針**

AWS アカウントのVPC制限(デフォルト5個)に再度達しているため、以下の対応が必要です:

#### **選択肢1: VPC制限の引き上げ申請(推奨)**

• AWS Support経由でVPC制限の引き上げを申請

• 通常、リージョンあたり最大100個まで引き上げ可能

• 長期的な解決策として最適

#### **選択肢2: 一時的な対応**

• 不要なVPCがあれば削除

• ただし、現在の全VPCが各部門で使用中のため削除は困難

### **🔧 推奨対応**

VPC制限引き上げ申請を行うことを強く推奨します。

現在の状況では:

• 各部門(System、Development、Operation)が複数のVPCを必要としている

• Internet-VPCは共通インフラとして必須

• 今後も部門からの追加要求が予想される

### **📞 上長へのエスカレーション**

ドキュメントの「エラー処理」セクションに従い、以下の内容で上長にエスカレーションします:

## **🚨 エスカレーション報告**

### **状況**

• **依頼部門**: Sales部門

• **要求**: 新規VPC作成(10.5.0.0/16)

• **エラー**: VPC制限(5個)に達しているため作成不可

### **現在のVPC利用状況**

| VPC名 | CIDR | 利用部門 | 状態 |

|-------|------|----------|------|

| Internet-VPC | 192.168.0.0/16 | Network | 必須(共通インフラ) |

| System-VPC-1 | 10.1.0.0/16 | System | 稼働中 |

| Development-VPC-2 | 10.2.0.0/16 | Development | 稼働中 |

| Operation-VPC-3 | 10.3.0.0/16 | Operation | 稼働中 |

| System-VPC-4 | 10.4.0.0/16 | System | 稼働中 |

### **必要な対応**

1. AWS Support経由でVPC制限引き上げ申請

• 現在の制限: 5個

• 推奨引き上げ数: 20個以上(将来の拡張を考慮)

• 申請理由: 複数部門での独立したネットワーク環境の必要性

2. 承認後の作業再開

• Sales-VPC-5(10.5.0.0/16)の作成

• 標準的なサブネット・ルーティング設定

• Transit Gateway接続

### **影響**

• **Sales部門**: 新規VPC作成が制限解除まで保留

• **他部門**: 今後の追加VPC要求も同様に制限される可能性

### **推定作業時間**

• VPC制限引き上げ申請: 1-3営業日

• 承認後のVPC作成作業: 30分程度

上長の承認とVPC制限引き上げ申請の指示をお待ちしております。

というわけでここは人間の作業時間です。今回時間軸的にVPCのクォータ上限緩和申請は行わず、各部門へのヒアリングの結果、System部門の10.1.0.0/16のVPCが不要と調整できました。(ということにします)その前後関係をプロンプトとして伝えます。

期待する成果

  • まずSystem部門の10.1.0.0/16のVPCと、関連するTransit Gatewayアタッチメントとルートテーブルを削除
  • その後、Sales部門のVPCを追加

渡りに船の情報があります。なんとSystem部門から10.1.0.0/16の削除依頼がきています。まずSystem部門のVPC削除を行ってから、Sales部門の追加を行ってください。

> 素晴らしいタイミングです!System部門から10.1.0.0/16(System-VPC-1)の削除依頼が来ているとのことですね。まず削除作業を行い、VPC枠を確保してからSales部門のVPC追加を実施します。

### **手順1: 削除対象VPCの確認**

削除対象のVPCを確認します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-vpcs --region ap-northeast-2 --filters \"Name=cidr,Values=10.1.0.0/16\""

⋮ },

⋮ "name": "call_aws"

⋮ }

> 削除対象VPC確認:

• **VPC名**: System-VPC-1

• **VPC ID**: vpc-************

• **CIDR**: 10.1.0.0/16

• **利用部門**: System(ドキュメント記載通り)

## **🗑️ System-VPC-1削除作業開始**

ドキュメントの削除手順に従って実行します。

### **手順1: Transit Gateway Route Tableから対象VPCへのルート削除**

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-transit-gateway-route --destination-cidr-block 10.1.0.0/16 --transit-gateway-route-table-id tgw-rtb-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ルートが見つからないため、Transit Gateway Route Tableの現在の状況を確認します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 search-transit-gateway-routes --transit-gateway-route-table-id tgw-rtb-************ --filters \"Name=state,Values=active\" --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

> 10.1.0.0/16のルートは「propagated」タイプなので、Transit Gateway Attachmentを削除すれば自動的に削除されます。

### **手順2: VPC内ルートテーブルからTransit Gatewayへのルート削除**

まず、System-VPC-1のルートテーブルを確認します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-route-tables --region ap-northeast-2 --filters \"Name=vpc-id,Values=vpc-************""

⋮ },

⋮ "name": "call_aws"

⋮ }

> Transit Gatewayへのルートを削除します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-route --route-table-id rtb-************ --destination-cidr-block 0.0.0.0/0 --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-route --route-table-id rtb-************ --destination-cidr-block 10.0.0.0/8 --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ### 手順3: Transit Gateway Attachment削除

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-transit-gateway-attachments --region ap-northeast-2 --filters \"Name=vpc-id,Values=vpc-************""

⋮ },

⋮ "name": "call_aws"

⋮ }

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 describe-transit-gateway-attachments --region ap-northeast-2 --filters \"Name=resource-id,Values=vpc-************""

⋮ },

⋮ "name": "call_aws"

⋮ }

> Transit Gateway Attachmentを削除します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-transit-gateway-vpc-attachment --transit-gateway-attachment-id tgw-attach-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ### 手順4: VPC内リソース削除

サブネットを削除します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-subnet --subnet-id subnet-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ルートテーブルを削除します:

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-route-table --route-table-id rtb-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ### 手順5: VPC削除

🛠️ Using tool: call_aws from mcp server awslabsaws_api_mcp_server

● Running call_aws with the param:

⋮ {

⋮ "arguments": {

⋮ "cli_command": "aws ec2 delete-vpc --vpc-id vpc-************ --region ap-northeast-2"

⋮ },

⋮ "name": "call_aws"

⋮ }

> ✅ System-VPC-1削除完了

### **手順6: VPC利用リスト更新**

🛠️ Using tool: fs_write

● Path: aws_vpc_management_guide.md

121, 121: | VPC名 | VPC CIDRブロック | 利用部門 |

122, 122: |-------|------------------|----------|

123, 123: | Internet-VPC | 192.168.0.0/16 | Network |

- 124 : | System-VPC-1 | 10.1.0.0/16 | System |

125, 124: | Development-VPC-2 | 10.2.0.0/16 | Development |

126, 125: | Operation-VPC-3 | 10.3.0.0/16 | Operation |

127, 126: | System-VPC-4 | 10.4.0.0/16 | System |

↳ Purpose: VPC利用リストからSystem-VPC-1を削除

> ## 🎉 Sales部門向けVPC作成開始

VPC枠が確保できたので、Sales部門のVPC作成を実施します。

### **手順1: Sales-VPC-5作成**

(作業②と同じため、省略)

> ## 🎉 作業完了報告

### **✅ System-VPC-1削除作業完了**

| 項目 | 詳細 | 状態 |

|------|------|------|

| 削除対象VPC | System-VPC-1 (10.1.0.0/16) | ✅ 削除完了 |

| Transit Gateway Route削除 | 10.1.0.0/16ルート | ✅ 自動削除(propagated) |

| VPCルート削除 | 0.0.0.0/0, 10.0.0.0/8 | ✅ 削除完了 |

| Transit Gateway Attachment削除 | tgw-attach-************ | ✅ 削除完了 |

| サブネット削除 | 2つのプライベートサブネット | ✅ 削除完了 |

| ルートテーブル削除 | 2つのカスタムルートテーブル | ✅ 削除完了 |

| VPC削除 | vpc-************ | ✅ 削除完了 |

### **✅ Sales-VPC-5作成作業完了**

| 項目 | 詳細 | 状態 |

|------|------|------|

| VPC名 | Sales-VPC-5 | ✅ 作成完了 |

| VPC ID | vpc-************ | ✅ 稼働中 |

| CIDR | 10.5.0.0/16 | ✅ 設定完了 |

| DNS解決 | 有効 | ✅ 設定完了 |

| DNS名前 | 有効 | ✅ 設定完了 |

### **🌐 Sales-VPC-5サブネット構成**

| サブネット名 | サブネット ID | CIDR | AZ | 状態 |

|-------------|---------------|------|----|----|

| Sales-VPC-5-private-2a | subnet-************ | 10.5.1.0/24 | ap-northeast-2a | ✅ 稼働中 |

| Sales-VPC-5-private-2b | subnet-************ | 10.5.2.0/24 | ap-northeast-2b | ✅ 稼働中 |

### **🔗 Sales-VPC-5ネットワーク接続**

| 項目 | ID | 状態 |

|------|----|----|

| ルートテーブル | rtb-************ | ✅ 設定完了 |

| Transit Gateway Attachment | tgw-attach-************ | ✅ 接続完了 |

| デフォルトルート | 0.0.0.0/0 → tgw-************ | ✅ 設定完了 |

| サービスVPCルート | 10.0.0.0/8 → tgw-************ | ✅ 設定完了 |

| TGW Route Table | 10.5.0.0/16 → tgw-attach-************ | ✅ 設定完了 |

### **📋 更新済みVPC利用リスト**

| VPC名 | VPC CIDRブロック | 利用部門 | 変更 |

|-------|------------------|----------|------|

| Internet-VPC | 192.168.0.0/16 | Network | - |

| System-VPC-1 | 10.1.0.0/16 | System | ❌ 削除済み |

| Development-VPC-2 | 10.2.0.0/16 | Development | - |

| Operation-VPC-3 | 10.3.0.0/16 | Operation | - |

| System-VPC-4 | 10.4.0.0/16 | System | - |

| Sales-VPC-5 | 10.5.0.0/16 | Sales | ✅ 新規追加 |

### **🔧 次回利用可能CIDR**

• **10.1.0.0/16** (削除により再利用可能)

• **10.6.0.0/16** (次の新規番号)

### **🎯 作業成果**

1. ✅ System部門の削除依頼(10.1.0.0/16)を正常に処理

2. ✅ VPC制限枠を確保(5個→4個→5個)

3. ✅ Sales部門の新規VPC(10.5.0.0/16)を正常に作成

4. ✅ 全VPC間のTransit Gateway接続を維持

5. ✅ ドキュメントの利用リストを正確に更新

Sales部門のVPCは他の全VPCとTransit Gateway経由でフルメッシュ接続され、インターネットアクセスも可能な状態です。

最終版のネットワーク構成は次のようになります。

作業⑤:クォータ到達時の動作を記述した作業手順書のアップデート

元の作業手順書ではクォータ到達時の動作を規定しておらず、今回と同様クォータ制限が発覚した際の対応を決める必要があるため、作業手順書を更新します。まずは、下記のような記載を行い、対話を行ってみます。

### クォータ到達時
- VPC、サブネット、ルートテーブルのクォータに達した場合
- **対応**: クォータ増加申請依頼を上長にエスカレーションし、作業を中止

クォータ制限到達時のエラー処理をaws_vpc_management_guide.mdに追加しました。対応条件を確認し、この対応で問題ないか判定してください。

> aws_vpc_management_guide.mdファイルの内容を確認して、追加されたクォータ制限到達時のエラー処理について検証いたします。

🛠️ Using tool: fs_read (trusted)

● Reading file: ~/aws_vpc_management_guide.md, all lines

● Completed in 0.0s

> ファイルの内容を確認しました。追加されたクォータ制限到達時のエラー処理について検証いたします。

## **📋 クォータ制限エラー処理の検証結果**

### **✅ 追加された対応条件**

エラー処理セクションに以下が追加されています:

markdown

### クォータ到達時

- VPC、サブネット、ルートテーブルのクォータに達した場合

- **対応**: クォータ増加申請依頼を上長にエスカレーション、作業を中止

### **🔍 実際の作業経験との照合**

今回の作業で実際に発生した状況:

1. VPC制限到達: VpcLimitExceeded エラーが発生

2. 実際の対応: Default VPCを削除してVPC枠を確保

3. 結果: Sales-VPC-5の作成に成功

### **⚠️ 対応条件の問題点と改善提案**

#### **問題点1: 対応選択肢が限定的**

現在の記載では「クォータ増加申請依頼」のみが対応策として記載されていますが、実際には他の選択肢も存在します。

#### **問題点2: 緊急時の代替手段が未記載**

クォータ増加申請は時間がかかるため、緊急時の対応策が必要です。

#### **問題点3: 具体的な判断基準が不明確**

どのような場合にどの対応を選択するかの基準が明確ではありません。

### **📝 改善提案**

以下の内容に修正することを推奨します:

markdown

### クォータ到達時

VPC、サブネット、ルートテーブルのクォータに達した場合の対応手順:

#### 1. 状況確認

- 現在のVPC使用数を確認

- Default VPCの使用状況を確認

- 不要なVPCの存在を確認

#### 2. 対応選択(優先順位順)

**優先度1: 即座対応可能**

- Default VPCが未使用の場合 → Default VPCを削除してVPC枠を確保

- 不要なVPCが存在する場合 → 部門確認後に削除

**優先度2: 部門調整**

- 他部門のVPC統合・削除が可能な場合 → 部門間調整を実施

**優先度3: クォータ申請**

- 上記が不可能な場合 → クォータ増加申請依頼を上長にエスカレーション

#### 3. 緊急時の判断基準

- **即座対応**: Default VPC未使用時は削除を優先

- **部門調整**: 1営業日以内に解決可能な場合

- **クォータ申請**: 1-3営業日の待機が可能な場合

#### 4. 作業継続条件

- 優先度1の対応で解決した場合 → 作業継続

- 優先度2-3の場合 → 作業を一時中止、解決後に再開

### **🎯 判定結果**

現在の対応条件: ❌ 不十分

理由:

1. 実際に有効だった「Default VPC削除」による即座解決策が記載されていない

2. クォータ申請のみでは緊急時に対応できない

3. 判断基準が不明確で、作業者が適切な選択をできない

### **✅ 推奨対応**

1. 即座修正: 上記の改善提案内容でエラー処理セクションを更新

2. 運用テスト: 次回のVPC制限到達時に新しい手順で対応

3. 継続改善: 実際の運用結果を基に手順を継続的に改善

この修正により、今回のような状況でも適切かつ迅速に対応できる手順書になります。

新しい提案がありますが、Amazon Q Developerは部門調整と上限緩和申請と比較して、部門調整のほうが早いと判断しています。本当に不要なVPCであればそうかもしれませんが、現実世界では不要なVPCかどうかを判断するのに何日もかかったり、状況が不透明になったりすることがあるため、比較的確実性の高い上限緩和申請を優先する方針で手順書を更新します。

不要なVPCをどのように判断するか明記したほうが良いと思いますが、ネットワーク管理者では判断が難しいところもあると思います。今回はたまたま削除依頼が来ていたため優先度2の対応ができますが、部門間調整とクォータ引き上げではクォータ引き上げの方が早く済むため、優先度を変えましょう。

> おっしゃる通りです。ネットワーク管理者の立場では不要なVPCの判断は困難で、部門間調整よりもクォータ引き上げの方が実際には迅速に解決できる場合が多いですね。

## **📝 優先度の修正提案**

### **現実的な対応優先度(修正版)**

markdown

### クォータ到達時

VPC、サブネット、ルートテーブルのクォータに達した場合の対応手順:

#### 1. 状況確認

- 現在のVPC使用数を確認

- Default VPCの使用状況を確認

- 削除依頼が来ているVPCの存在を確認

#### 2. 対応選択(優先順位順)

**優先度1: 即座対応可能**

- Default VPCが未使用の場合 → Default VPCを削除してVPC枠を確保

- 削除依頼が既に来ているVPCがある場合 → 該当VPCを削除

**優先度2: クォータ申請**

- 上記が不可能な場合 → クォータ増加申請依頼を上長にエスカレーション

- 通常1-3営業日で承認・適用

**優先度3: 部門調整**

- クォータ申請も困難な場合 → 各部門にVPC統合・削除の可能性を照会

- ネットワーク管理者単独では判断不可のため、必ず部門確認が必要

#### 3. 不要VPCの判断基準

**ネットワーク管理者が単独で削除可能**:

- Default VPC(リソースが何も配置されていない場合のみ)

- 明示的な削除依頼が来ているVPC

**部門確認が必要**:

- 上記以外の全てのVPC

- 使用状況に関わらず、部門の承認なしに削除判断は行わない

#### 4. 緊急時の判断基準

- **即座対応**: Default VPC未使用時、または削除依頼済みVPCがある場合

- **クォータ申請**: 1-3営業日の待機が可能で、継続的な拡張が見込まれる場合

- **部門調整**: 他の選択肢が全て不可能な場合のみ

#### 5. 作業継続条件

- 優先度1の対応で解決した場合 → 作業継続

- 優先度2-3の場合 → 作業を一時中止、解決後に再開

### **🎯 修正のポイント**

1. 優先度2と3を入れ替え: クォータ申請 > 部門調整

2. 判断基準の明確化: ネットワーク管理者が単独で判断できる範囲を限定

3. 現実的な対応時間: クォータ申請の方が部門調整より予測可能

4. 責任範囲の明確化: 部門のVPC削除判断はネットワーク管理者の権限外

### **📊 優先度変更の根拠**

| 対応方法 | 所要時間 | 確実性 | 管理者の権限 | 修正後優先度 |

|----------|----------|--------|--------------|--------------|

| Default VPC削除 | 即座 | 高 | 単独可能 | 1 |

| 削除依頼済みVPC | 即座 | 高 | 単独可能 | 1 |

| クォータ申請 | 1-3営業日 | 高 | 上長承認 | 2 |

| 部門調整 | 不明確 | 低 | 部門承認必要 | 3 |

この修正により、ネットワーク管理者が現実的に対応可能な手順となり、今回のような「削除依頼が来ていた」ケースも適切に優先度1として扱えるようになります。

この修正提案を受け入れることにして、「優先度の修正提案」セクションの内容でクォータ到達時の対応方法を手順書に反映し、確認してもらいます。

では、この修正を反映しましたのでご確認ください。

> 修正内容を確認いたします。aws_vpc_management_guide.mdファイルの更新された内容を確認させていただきます。

🛠️ Using tool: fs_read (trusted)

● Reading file: ~/aws_vpc_management_guide.md, from line 130 to 200

● Completed in 0.0s

> ## ✅ 修正内容の確認結果

修正内容を確認いたしました。提案した改善点が適切に反映されており、非常に実用的な手順書になっています。

### **🎯 確認できた改善点**

#### **1. 優先度の適切な修正** ✅

• **優先度2**: クォータ申請(1-3営業日、確実性高)

• **優先度3**: 部門調整(時間不明確、確実性低)

• 現実的な対応時間を考慮した優先順位になっている

#### **2. 判断基準の明確化** ✅

ネットワーク管理者が単独で削除可能:

• Default VPC(リソース未配置時のみ)

• 明示的な削除依頼が来ているVPC

部門確認が必要:

• 上記以外の全てのVPC

• 権限と責任の範囲が明確

#### **3. 状況確認の体系化** ✅

• 現在のVPC使用数確認

• Default VPC使用状況確認

• 削除依頼VPCの存在確認

• 今回の実際の作業フローと一致

#### **4. 作業継続条件の明確化** ✅

• 優先度1で解決 → 作業継続

• 優先度2-3 → 作業中止・解決後再開

• 判断に迷わない明確な基準

### **🔍 実際の作業との整合性検証**

今回実施した作業フローとの照合:

| 実際の作業 | 手順書の記載 | 整合性 |

|------------|--------------|--------|

| VPC制限エラー発生 | 状況確認 → VPC使用数確認 | ✅ 一致 |

| Default VPC確認 | Default VPC使用状況確認 | ✅ 一致 |

| System部門削除依頼 | 削除依頼VPC存在確認 | ✅ 一致 |

| 削除依頼VPCを優先削除 | 優先度1: 削除依頼済みVPC | ✅ 一致 |

| 作業継続 | 優先度1解決 → 作業継続 | ✅ 一致 |

### **📋 総合評価**

判定: ✅ 適切な修正完了

評価ポイント:

1. 実用性: 実際の運用で発生する状況を適切にカバー

2. 明確性: ネットワーク管理者の権限範囲が明確

3. 効率性: 現実的な対応時間を考慮した優先順位

4. 安全性: 部門承認なしの削除判断を適切に制限

5. 継続性: 作業中断・再開の判断基準が明確

### **🎉 手順書の完成度**

この修正により、クォータ制限到達時のエラー処理が以下の点で大幅に改善されました:

• **今回のような削除依頼があるケース**を優先度1として適切に処理

• **ネットワーク管理者の権限範囲**を明確に定義

• **現実的な対応時間**を考慮した優先順位設定

• **作業継続の判断基準**を明確化

この手順書があれば、今後同様の状況が発生した際も、適切かつ迅速に対応できると判断いたします。

ということで、手順書に基づいた作業対応とエラー対応、実際のエラー対応結果に基づく手順書のアップデートまで完了させることができました。

AWSのネットワークに関するお悩みや課題などNTT東日本のクラウドエンジニアがお応えします。お気軽にご相談ください!

この結果からわかるAWS運用作業における現在地の考察

これまでの記事と同様に、一連の動作からAmazon Q Developerを用いたネットワーク構成管理作業の現在地について考察してみたいと思います。あくまで現時点におけるデモ利用をもとにした考察のため、今後の基盤モデルの進歩や、ツール・コンテキスト・プロンプトの工夫などで大きく変わる可能性もあります。

事前準備の大切さ

今回、ネットワーク構成管理を行うための準備を入念に行いました。既存ネットワークの構成、VPCの命名規則やCIDRブロックの採番ポリシー、作業順序や利用リストの更新といった一連の作業をまとめた手順書があったことで正しく進めたものと思います。人力での作業時にも作業手順書や業務フロー、チェックリスト、必要なツールなどを作成しますがAIの場合も同様に、実現したいことと指示、利用可能なツールを明確にしておく必要があります。

保守作業を行うためのAmazon Q Developer CLIに必要な権限

今回の作業はAmazon VPCとTransit Gatewayの権限があれば完結します。実際のネットワーク管理者の場合、ネットワークトラフィックの調査や、アクセスログの確認などの運用作業が必要になることもあるため、AWSマネージドポリシーの`NetworkAdministrator`から、Amazon Q Developer CLIに任せる必要がある操作をピックアップすることをおすすめします。

(参考)NetworkAdministratorのポリシードキュメント(2025年8月時点)

{
  "Version" : "2012-10-17",
  "Statement" : [
    {
      "Sid" : "AllowDefaultNetworkAdminActions",
      "Effect" : "Allow",
      "Action" : [
        "autoscaling:Describe*",
        "cloudfront:ListDistributions",
        "cloudwatch:DeleteAlarms",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:PutMetricAlarm",
        "directconnect:*",
        "ec2:AcceptVpcEndpointConnections",
        "ec2:AllocateAddress",
        "ec2:AssignIpv6Addresses",
        "ec2:AssignPrivateIpAddresses",
        "ec2:AssociateAddress",
        "ec2:AssociateDhcpOptions",
        "ec2:AssociateRouteTable",
        "ec2:AssociateSubnetCidrBlock",
        "ec2:AssociateVpcCidrBlock",
        "ec2:AttachInternetGateway",
        "ec2:AttachNetworkInterface",
        "ec2:AttachVpnGateway",
        "ec2:CreateCarrierGateway",
        "ec2:CreateCustomerGateway",
        "ec2:CreateDefaultSubnet",
        "ec2:CreateDefaultVpc",
        "ec2:CreateDhcpOptions",
        "ec2:CreateEgressOnlyInternetGateway",
        "ec2:CreateFlowLogs",
        "ec2:CreateInternetGateway",
        "ec2:CreateNatGateway",
        "ec2:CreateNetworkAcl",
        "ec2:CreateNetworkAclEntry",
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:CreatePlacementGroup",
        "ec2:CreateRoute",
        "ec2:CreateRouteTable",
        "ec2:CreateSecurityGroup",
        "ec2:CreateSubnet",
        "ec2:CreateTags",
        "ec2:CreateVpc",
        "ec2:CreateVpcEndpoint",
        "ec2:CreateVpcEndpointConnectionNotification",
        "ec2:CreateVpcEndpointServiceConfiguration",
        "ec2:CreateVpnConnection",
        "ec2:CreateVpnConnectionRoute",
        "ec2:CreateVpnGateway",
        "ec2:DeleteCarrierGateway",
        "ec2:DeleteEgressOnlyInternetGateway",
        "ec2:DeleteFlowLogs",
        "ec2:DeleteNatGateway",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DeletePlacementGroup",
        "ec2:DeleteSubnet",
        "ec2:DeleteTags",
        "ec2:DeleteVpc",
        "ec2:DeleteVpcEndpointConnectionNotifications",
        "ec2:DeleteVpcEndpointServiceConfigurations",
        "ec2:DeleteVpcEndpoints",
        "ec2:DeleteVpnConnection",
        "ec2:DeleteVpnConnectionRoute",
        "ec2:DeleteVpnGateway",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAddresses",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeCarrierGateways",
        "ec2:DescribeClassicLinkInstances",
        "ec2:DescribeCustomerGateways",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeEgressOnlyInternetGateways",
        "ec2:DescribeFlowLogs",
        "ec2:DescribeInstances",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeIpv6Pools",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeMovingAddresses",
        "ec2:DescribeNatGateways",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeNetworkInterfaceAttribute",
        "ec2:DescribeNetworkInterfacePermissions",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribePlacementGroups",
        "ec2:DescribePrefixLists",
        "ec2:DescribePublicIpv4Pools",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroupReferences",
        "ec2:DescribeSecurityGroupRules",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeStaleSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeTags",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcClassicLink",
        "ec2:DescribeVpcClassicLinkDnsSupport",
        "ec2:DescribeVpcEndpointConnectionNotifications",
        "ec2:DescribeVpcEndpointConnections",
        "ec2:DescribeVpcEndpointServiceConfigurations",
        "ec2:DescribeVpcEndpointServicePermissions",
        "ec2:DescribeVpcEndpointServices",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcPeeringConnections",
        "ec2:DescribeVpcs",
        "ec2:DescribeVpnConnections",
        "ec2:DescribeVpnGateways",
        "ec2:DetachInternetGateway",
        "ec2:DetachNetworkInterface",
        "ec2:DetachVpnGateway",
        "ec2:DisableVgwRoutePropagation",
        "ec2:DisableVpcClassicLinkDnsSupport",
        "ec2:DisassociateAddress",
        "ec2:DisassociateRouteTable",
        "ec2:DisassociateSubnetCidrBlock",
        "ec2:DisassociateVpcCidrBlock",
        "ec2:EnableVgwRoutePropagation",
        "ec2:EnableVpcClassicLinkDnsSupport",
        "ec2:GetVpnConnectionDeviceSampleConfiguration",
        "ec2:GetVpnConnectionDeviceTypes",
        "ec2:GetVpnTunnelReplacementStatus",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:ModifySecurityGroupRules",
        "ec2:ModifySubnetAttribute",
        "ec2:ModifyVpcAttribute",
        "ec2:ModifyVpcEndpoint",
        "ec2:ModifyVpcEndpointConnectionNotification",
        "ec2:ModifyVpcEndpointServiceConfiguration",
        "ec2:ModifyVpcEndpointServicePermissions",
        "ec2:ModifyVpcPeeringConnectionOptions",
        "ec2:ModifyVpcTenancy",
        "ec2:ModifyVpnConnection",
        "ec2:ModifyVpnConnectionOptions",
        "ec2:ModifyVpnTunnelCertificate",
        "ec2:ModifyVpnTunnelOptions",
        "ec2:MoveAddressToVpc",
        "ec2:RejectVpcEndpointConnections",
        "ec2:ReleaseAddress",
        "ec2:ReplaceNetworkAclAssociation",
        "ec2:ReplaceNetworkAclEntry",
        "ec2:ReplaceRoute",
        "ec2:ReplaceRouteTableAssociation",
        "ec2:ReplaceVpnTunnel",
        "ec2:ResetNetworkInterfaceAttribute",
        "ec2:RestoreAddressToClassic",
        "ec2:UnassignIpv6Addresses",
        "ec2:UnassignPrivateIpAddresses",
        "ec2:UpdateSecurityGroupRuleDescriptionsEgress",
        "ec2:UpdateSecurityGroupRuleDescriptionsIngress",
        "elasticbeanstalk:Describe*",
        "elasticbeanstalk:List*",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticloadbalancing:*",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:GetLogEvents",
        "route53:*",
        "route53domains:*",
        "sns:CreateTopic",
        "sns:ListSubscriptionsByTopic",
        "sns:ListTopics"
      ],
      "Resource" : "*"
    },
    {
      "Sid" : "AllowVPCPermissions",
      "Effect" : "Allow",
      "Action" : [
        "ec2:AcceptVpcPeeringConnection",
        "ec2:AssociateSecurityGroupVpc",
        "ec2:AttachClassicLinkVpc",
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateVpcPeeringConnection",
        "ec2:DeleteCustomerGateway",
        "ec2:DeleteDhcpOptions",
        "ec2:DeleteInternetGateway",
        "ec2:DeleteNetworkAcl",
        "ec2:DeleteNetworkAclEntry",
        "ec2:DeleteRoute",
        "ec2:DeleteRouteTable",
        "ec2:DeleteSecurityGroup",
        "ec2:DeleteVolume",
        "ec2:DeleteVpcPeeringConnection",
        "ec2:DescribeSecurityGroupVpcAssociations",
        "ec2:DetachClassicLinkVpc",
        "ec2:DisableVpcClassicLink",
        "ec2:DisassociateSecurityGroupVpc",
        "ec2:EnableVpcClassicLink",
        "ec2:GetConsoleScreenshot",
        "ec2:GetSecurityGroupsForVpc",
        "ec2:RejectVpcPeeringConnection",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress"
      ],
      "Resource" : [
        "*"
      ]
    },
    {
      "Sid" : "AllowLocalGatewayPermissions",
      "Effect" : "Allow",
      "Action" : [
        "ec2:CreateLocalGatewayRoute",
        "ec2:CreateLocalGatewayRouteTableVpcAssociation",
        "ec2:DeleteLocalGatewayRoute",
        "ec2:DeleteLocalGatewayRouteTableVpcAssociation",
        "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations",
        "ec2:DescribeLocalGatewayRouteTableVpcAssociations",
        "ec2:DescribeLocalGatewayRouteTables",
        "ec2:DescribeLocalGatewayVirtualInterfaceGroups",
        "ec2:DescribeLocalGatewayVirtualInterfaces",
        "ec2:DescribeLocalGateways",
        "ec2:SearchLocalGatewayRoutes"
      ],
      "Resource" : "*"
    },
    {
      "Sid" : "DiscoverBuckets",
      "Effect" : "Allow",
      "Action" : [
        "s3:GetBucketLocation",
        "s3:GetBucketWebsite",
        "s3:ListBucket"
      ],
      "Resource" : [
        "*"
      ]
    },
    {
      "Sid" : "DiscoverFlowLogRoles",
      "Effect" : "Allow",
      "Action" : [
        "iam:GetRole",
        "iam:ListRoles",
        "iam:PassRole"
      ],
      "Resource" : "arn:aws:iam::*:role/flow-logs-*"
    },
    {
      "Sid" : "NetworkmanagerPermissions",
      "Effect" : "Allow",
      "Action" : [
        "networkmanager:*"
      ],
      "Resource" : "*"
    },
    {
      "Sid" : "TransitGatewayPermissions",
      "Effect" : "Allow",
      "Action" : [
        "ec2:AcceptTransitGatewayVpcAttachment",
        "ec2:AssociateTransitGatewayRouteTable",
        "ec2:CreateTransitGateway",
        "ec2:CreateTransitGatewayRoute",
        "ec2:CreateTransitGatewayRouteTable",
        "ec2:CreateTransitGatewayVpcAttachment",
        "ec2:DeleteTransitGateway",
        "ec2:DeleteTransitGatewayRoute",
        "ec2:DeleteTransitGatewayRouteTable",
        "ec2:DeleteTransitGatewayVpcAttachment",
        "ec2:DescribeTransitGatewayAttachments",
        "ec2:DescribeTransitGatewayRouteTables",
        "ec2:DescribeTransitGateways",
        "ec2:DescribeTransitGatewayVpcAttachments",
        "ec2:DisableTransitGatewayRouteTablePropagation",
        "ec2:DisassociateTransitGatewayRouteTable",
        "ec2:EnableTransitGatewayRouteTablePropagation",
        "ec2:ExportTransitGatewayRoutes",
        "ec2:GetTransitGatewayAttachmentPropagations",
        "ec2:GetTransitGatewayRouteTableAssociations",
        "ec2:GetTransitGatewayRouteTablePropagations",
        "ec2:ModifyTransitGateway",
        "ec2:ModifyTransitGatewayVpcAttachment",
        "ec2:RejectTransitGatewayVpcAttachment",
        "ec2:ReplaceTransitGatewayRoute",
        "ec2:SearchTransitGatewayRoutes"
      ],
      "Resource" : "*"
    },
    {
      "Sid" : "AllowTransitGatewaySLRCreation",
      "Effect" : "Allow",
      "Action" : [
        "iam:CreateServiceLinkedRole"
      ],
      "Resource" : "*",
      "Condition" : {
        "StringLike" : {
          "iam:AWSServiceName" : [
            "transitgateway.amazonaws.com"
          ]
        }
      }
    }
  ]
}

NetworkAdministrator

まとめ

今回はAWSのネットワーク管理作業をより簡易にできないか試してみましたが、管理手順書のドキュメントをもとに、正確な作業を行ってくれることがわかりました。こうした複数VPC構成の場合マルチアカウント構成になることが多いですが、シングルサインオンや権限管理を適切に行うことで実運用にも耐えるのではないかと思います。

NTT東日本では、AWSの構築保守だけではなく、ネットワーク設計なども含めたエンドツーエンドでのソリューション提供を行っております。

経験値豊かなメンバーがご担当させていただきますので、是非お気軽にお問い合わせください!

AWSのネットワークに関するお悩みや課題などNTT東日本のクラウドエンジニアがお応えします。お気軽にご相談ください!

ページ上部へ戻る

相談無料!プロが中立的にアドバイスいたします

クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。