// 创建NAT网关(每个AZ一个)
MERGE (nat1a:NatGateway {id: 'nat-gw-1a', az: 'cn-north-1a'})
ON CREATE SET nat1a.accountId = '018778855179';
MERGE (nat1b:NatGateway {id: 'nat-gw-1b', az: 'cn-north-1b'})
ON CREATE SET nat1b.accountId = '018778855179';
// 创建IGW
MERGE (igw:InternetGateway {id: 'igw-1', name: 'VPC-A IGW'})
ON CREATE SET igw.accountId = '018778855179';
// 创建网关终端节点(S3和DDB)
MERGE (s3:GatewayEndpoint {id: 's3-endpoint', type: 'S3'})
ON CREATE SET s3.accountId = '018778855179';
MERGE (ddb:GatewayEndpoint {id: 'ddb-endpoint', type: 'DynamoDB'})
ON CREATE SET ddb.accountId = '018778855179';
// 将IGW关联到公共子网
MERGE (sub1a1)-[:HAS_ROUTE]->(igw);
MERGE (sub1b1)-[:HAS_ROUTE]->(igw);
// 将NAT网关关联到需要NAT的私有子网(排除DB子网)
MERGE (sub1a2)-[:HAS_ROUTE]->(nat1a); // Bastion (1a)
MERGE (sub1a3)-[:HAS_ROUTE]->(nat1a); // EKS (1a)
MERGE (sub1a4)-[:HAS_ROUTE]->(nat1a); // Lambda (1a)
MERGE (sub1a5)-[:HAS_ROUTE]->(nat1a); // Proxy (1a)
MERGE (sub1b2)-[:HAS_ROUTE]->(nat1b); // Bastion (1b)
MERGE (sub1b3)-[:HAS_ROUTE]->(nat1b); // EKS (1b)
MERGE (sub1b4)-[:HAS_ROUTE]->(nat1b); // Lambda (1b)
MERGE (sub1b5)-[:HAS_ROUTE]->(nat1b); // Proxy (1b)
// 将网关终端节点关联到除公共和DB子网外的私有子网
MERGE (sub1a2)-[:HAS_ROUTE]->(s3);
MERGE (sub1a3)-[:HAS_ROUTE]->(s3);
MERGE (sub1a4)-[:HAS_ROUTE]->(s3);
MERGE (sub1a5)-[:HAS_ROUTE]->(s3);
MERGE (sub1b2)-[:HAS_ROUTE]->(s3);
MERGE (sub1b3)-[:HAS_ROUTE]->(s3);
MERGE (sub1b4)-[:HAS_ROUTE]->(s3);
MERGE (sub1b5)-[:HAS_ROUTE]->(s3);
MERGE (sub1a2)-[:HAS_ROUTE]->(ddb);
MERGE (sub1a3)-[:HAS_ROUTE]->(ddb);
MERGE (sub1a4)-[:HAS_ROUTE]->(ddb);
MERGE (sub1a5)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b2)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b3)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b4)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b5)-[:HAS_ROUTE]->(ddb);
// 创建7个路由表(示例,可根据实际调整)
MERGE (rtb1:RouteTable {id: 'vpca-rtb-1', name: 'Public Route Table'})
ON CREATE SET rtb1.accountId = '018778855179';
MERGE (rtb2:RouteTable {id: 'vpca-rtb-2', name: 'Private Bastion Route Table'})
ON CREATE SET rtb2.accountId = '018778855179';
MERGE (rtb3:RouteTable {id: 'vpca-rtb-3', name: 'Private EKS Route Table'})
ON CREATE SET rtb3.accountId = '018778855179';
MERGE (rtb4:RouteTable {id: 'vpca-rtb-4', name: 'Private Lambda Route Table'})
ON CREATE SET rtb4.accountId = '018778855179';
MERGE (rtb5:RouteTable {id: 'vpca-rtb-5', name: 'Private Proxy Route Table'})
ON CREATE SET rtb5.accountId = '018778855179';
MERGE (rtb6:RouteTable {id: 'vpca-rtb-6', name: 'DB ElastiCache Route Table'})
ON CREATE SET rtb6.accountId = '018778855179';
MERGE (rtb7:RouteTable {id: 'vpca-rtb-7', name: 'DB RDS Route Table'})
ON CREATE SET rtb7.accountId = '018778855179';
// 将路由表关联到子网
MERGE (sub1a1)-[:ASSOCIATED_WITH]->(rtb1);
MERGE (sub1b1)-[:ASSOCIATED_WITH]->(rtb1);
MERGE (sub1a2)-[:ASSOCIATED_WITH]->(rtb2);
MERGE (sub1b2)-[:ASSOCIATED_WITH]->(rtb2);
MERGE (sub1a3)-[:ASSOCIATED_WITH]->(rtb3);
MERGE (sub1b3)-[:ASSOCIATED_WITH]->(rtb3);
MERGE (sub1a4)-[:ASSOCIATED_WITH]->(rtb4);
MERGE (sub1b4)-[:ASSOCIATED_WITH]->(rtb4);
MERGE (sub1a5)-[:ASSOCIATED_WITH]->(rtb5);
MERGE (sub1b5)-[:ASSOCIATED_WITH]->(rtb5);
MERGE (sub1a6)-[:ASSOCIATED_WITH]->(rtb6);
MERGE (sub1b6)-[:ASSOCIATED_WITH]->(rtb6);
MERGE (sub1a7)-[:ASSOCIATED_WITH]->(rtb7);
MERGE (sub1b7)-[:ASSOCIATED_WITH]->(rtb7);
MERGE (nat1a:NatGateway {id: 'nat-gw-1a', az: 'cn-north-1a'})
ON CREATE SET nat1a.accountId = '018778855179';
MERGE (nat1b:NatGateway {id: 'nat-gw-1b', az: 'cn-north-1b'})
ON CREATE SET nat1b.accountId = '018778855179';
// 创建IGW
MERGE (igw:InternetGateway {id: 'igw-1', name: 'VPC-A IGW'})
ON CREATE SET igw.accountId = '018778855179';
// 创建网关终端节点(S3和DDB)
MERGE (s3:GatewayEndpoint {id: 's3-endpoint', type: 'S3'})
ON CREATE SET s3.accountId = '018778855179';
MERGE (ddb:GatewayEndpoint {id: 'ddb-endpoint', type: 'DynamoDB'})
ON CREATE SET ddb.accountId = '018778855179';
// 将IGW关联到公共子网
MERGE (sub1a1)-[:HAS_ROUTE]->(igw);
MERGE (sub1b1)-[:HAS_ROUTE]->(igw);
// 将NAT网关关联到需要NAT的私有子网(排除DB子网)
MERGE (sub1a2)-[:HAS_ROUTE]->(nat1a); // Bastion (1a)
MERGE (sub1a3)-[:HAS_ROUTE]->(nat1a); // EKS (1a)
MERGE (sub1a4)-[:HAS_ROUTE]->(nat1a); // Lambda (1a)
MERGE (sub1a5)-[:HAS_ROUTE]->(nat1a); // Proxy (1a)
MERGE (sub1b2)-[:HAS_ROUTE]->(nat1b); // Bastion (1b)
MERGE (sub1b3)-[:HAS_ROUTE]->(nat1b); // EKS (1b)
MERGE (sub1b4)-[:HAS_ROUTE]->(nat1b); // Lambda (1b)
MERGE (sub1b5)-[:HAS_ROUTE]->(nat1b); // Proxy (1b)
// 将网关终端节点关联到除公共和DB子网外的私有子网
MERGE (sub1a2)-[:HAS_ROUTE]->(s3);
MERGE (sub1a3)-[:HAS_ROUTE]->(s3);
MERGE (sub1a4)-[:HAS_ROUTE]->(s3);
MERGE (sub1a5)-[:HAS_ROUTE]->(s3);
MERGE (sub1b2)-[:HAS_ROUTE]->(s3);
MERGE (sub1b3)-[:HAS_ROUTE]->(s3);
MERGE (sub1b4)-[:HAS_ROUTE]->(s3);
MERGE (sub1b5)-[:HAS_ROUTE]->(s3);
MERGE (sub1a2)-[:HAS_ROUTE]->(ddb);
MERGE (sub1a3)-[:HAS_ROUTE]->(ddb);
MERGE (sub1a4)-[:HAS_ROUTE]->(ddb);
MERGE (sub1a5)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b2)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b3)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b4)-[:HAS_ROUTE]->(ddb);
MERGE (sub1b5)-[:HAS_ROUTE]->(ddb);
// 创建7个路由表(示例,可根据实际调整)
MERGE (rtb1:RouteTable {id: 'vpca-rtb-1', name: 'Public Route Table'})
ON CREATE SET rtb1.accountId = '018778855179';
MERGE (rtb2:RouteTable {id: 'vpca-rtb-2', name: 'Private Bastion Route Table'})
ON CREATE SET rtb2.accountId = '018778855179';
MERGE (rtb3:RouteTable {id: 'vpca-rtb-3', name: 'Private EKS Route Table'})
ON CREATE SET rtb3.accountId = '018778855179';
MERGE (rtb4:RouteTable {id: 'vpca-rtb-4', name: 'Private Lambda Route Table'})
ON CREATE SET rtb4.accountId = '018778855179';
MERGE (rtb5:RouteTable {id: 'vpca-rtb-5', name: 'Private Proxy Route Table'})
ON CREATE SET rtb5.accountId = '018778855179';
MERGE (rtb6:RouteTable {id: 'vpca-rtb-6', name: 'DB ElastiCache Route Table'})
ON CREATE SET rtb6.accountId = '018778855179';
MERGE (rtb7:RouteTable {id: 'vpca-rtb-7', name: 'DB RDS Route Table'})
ON CREATE SET rtb7.accountId = '018778855179';
// 将路由表关联到子网
MERGE (sub1a1)-[:ASSOCIATED_WITH]->(rtb1);
MERGE (sub1b1)-[:ASSOCIATED_WITH]->(rtb1);
MERGE (sub1a2)-[:ASSOCIATED_WITH]->(rtb2);
MERGE (sub1b2)-[:ASSOCIATED_WITH]->(rtb2);
MERGE (sub1a3)-[:ASSOCIATED_WITH]->(rtb3);
MERGE (sub1b3)-[:ASSOCIATED_WITH]->(rtb3);
MERGE (sub1a4)-[:ASSOCIATED_WITH]->(rtb4);
MERGE (sub1b4)-[:ASSOCIATED_WITH]->(rtb4);
MERGE (sub1a5)-[:ASSOCIATED_WITH]->(rtb5);
MERGE (sub1b5)-[:ASSOCIATED_WITH]->(rtb5);
MERGE (sub1a6)-[:ASSOCIATED_WITH]->(rtb6);
MERGE (sub1b6)-[:ASSOCIATED_WITH]->(rtb6);
MERGE (sub1a7)-[:ASSOCIATED_WITH]->(rtb7);
MERGE (sub1b7)-[:ASSOCIATED_WITH]->(rtb7);