AWS のマネージメントコンソールから各リージョンの情報を確認するには、右上のリージョンを選択しなおす必要があって面倒です。最近では、EC2 Global View で各リージョンの VPC 数が見えたりしますが、少し物足りません。リージョンをまたがってリソース状況を調べるなら AWS CLI を組み合わせてやる方法もあります。
そこで今回は、AWS SDK for .NET を使用して各リージョンの VPC 情報の取得を試してみました。
EC2 Global View の例

.NET コンソールアプリを作成
$ appname=mnrawsdev
$ dotnet new console --output $appname --framework net6.0 --use-program-main
$ cd $appname
$ code Program.cs
$ dotnet run
Hello, World!
.NET に AWSSDK.EC2 パッケージを追加
$ dotnet add package AWSSDK.EC2
Program.cs を下記ようなコードに変更
using System;
using System.Threading.Tasks;
using Amazon;
using Amazon.EC2;
using Amazon.EC2.Model;
namespace mnrawsdev;
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Hello, World!");
var ec2Client = new AmazonEC2Client();
DescribeRegionsResponse describeRegionsResponse = await ec2Client.DescribeRegionsAsync();
foreach (var region in describeRegionsResponse.Regions)
{
Console.WriteLine($"{region.RegionName}: {region.Endpoint}: {region.OptInStatus}");
await DescribeVpcs(region.RegionName);
}
}
static async Task DescribeVpcs(string region)
{
var newRegion = RegionEndpoint.GetBySystemName(region);
var ec2Client = new AmazonEC2Client(newRegion);
DescribeVpcsResponse describeVpcsResponse = await ec2Client.DescribeVpcsAsync();
foreach (var vpc in describeVpcsResponse.Vpcs)
{
Console.WriteLine($" -> {vpc.VpcId}: {vpc.CidrBlock}: IsDefault={vpc.IsDefault}");
}
}
}
動作確認
$ dotnet run
Hello, World!
ap-south-1: ec2.ap-south-1.amazonaws.com: opt-in-not-required
-> vpc-0ce526b9cf1a42a60: 172.31.0.0/16: IsDefault=True
eu-north-1: ec2.eu-north-1.amazonaws.com: opt-in-not-required
-> vpc-0c7e0d4ef134dafce: 172.31.0.0/16: IsDefault=True
eu-west-3: ec2.eu-west-3.amazonaws.com: opt-in-not-required
-> vpc-019dd14abc436c714: 172.31.0.0/16: IsDefault=True
eu-west-2: ec2.eu-west-2.amazonaws.com: opt-in-not-required
-> vpc-00598c45c7027b677: 172.31.0.0/16: IsDefault=True
eu-west-1: ec2.eu-west-1.amazonaws.com: opt-in-not-required
-> vpc-04a437b798a48d739: 172.31.0.0/16: IsDefault=True
ap-northeast-3: ec2.ap-northeast-3.amazonaws.com: opt-in-not-required
-> vpc-08f528ccae8cea775: 172.31.0.0/16: IsDefault=True
ap-northeast-2: ec2.ap-northeast-2.amazonaws.com: opt-in-not-required
-> vpc-017618237beba3920: 172.31.0.0/16: IsDefault=True
ap-northeast-1: ec2.ap-northeast-1.amazonaws.com: opt-in-not-required
ca-central-1: ec2.ca-central-1.amazonaws.com: opt-in-not-required
-> vpc-0161ade2c2124034c: 172.31.0.0/16: IsDefault=True
sa-east-1: ec2.sa-east-1.amazonaws.com: opt-in-not-required
-> vpc-04c2c5088c2151de6: 172.31.0.0/16: IsDefault=True
ap-east-1: ec2.ap-east-1.amazonaws.com: opted-in
-> vpc-0906d47710b8f6721: 172.31.0.0/16: IsDefault=True
ap-southeast-1: ec2.ap-southeast-1.amazonaws.com: opt-in-not-required
-> vpc-070302e54c13fd364: 172.31.0.0/16: IsDefault=True
ap-southeast-2: ec2.ap-southeast-2.amazonaws.com: opt-in-not-required
-> vpc-0ff6aae36a229ac3f: 172.31.0.0/16: IsDefault=True
eu-central-1: ec2.eu-central-1.amazonaws.com: opt-in-not-required
-> vpc-0eb091b4662c234a1: 172.31.0.0/16: IsDefault=True
us-east-1: ec2.us-east-1.amazonaws.com: opt-in-not-required
-> vpc-0538ca2212aa6e428: 172.31.0.0/16: IsDefault=True
us-east-2: ec2.us-east-2.amazonaws.com: opt-in-not-required
-> vpc-041551da06dcd9e92: 172.31.0.0/16: IsDefault=True
us-west-1: ec2.us-west-1.amazonaws.com: opt-in-not-required
-> vpc-0be4cce199fe0b3b9: 172.31.0.0/16: IsDefault=True
us-west-2: ec2.us-west-2.amazonaws.com: opt-in-not-required
-> vpc-0423af0b6eb4d6055: 172.31.0.0/16: IsDefault=True
参考
https://learn.microsoft.com/ja-jp/dotnet/core/tutorials/with-visual-studio-code?pivots=dotnet-6-0
https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-new
https://docs.aws.amazon.com/ja_jp/sdk-for-net/v3/developer-guide/welcome.html
https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/EC2/TEC2Client.html
タグ: .NET, AWS, AWS SDK