【Excel改造】AWS環境定義書自動生成【SecurityGroup編】
この記事は下記AWS環境定義書自動生成記事の続編です。 【Excel改造】AWS環境定義書自動生成【EC2編】
AWS環境構成仕様書の作成
今回はSecurity Groupの一覧を作成したいと思います。
他のSecurity Groupの仕様作成記事としては下記があります:
開発環境
- Windows 8.1
- Visual Studio 2012(C#)
- Excel 2013
- AWS SDK for .NET 2.3.5
フランクフルトリージョンが追加されたこともあり、AWS Toolkit for Visual Studioを今回最新版にバージョンアップしてみました(記事の内容には関係ありません)
EC2のSecurity Group一覧の取得と関連するEC2インスタンス一覧の取得
それでは実際にC#のコードを見て行きましょう。今回は画面構築部分やExcelとやりとりする処理の一部は省略します。
#region ■AWSアクセスクライアントの作成 var ec2Client = new AmazonEC2Client(Amazon.RegionEndpoint.APNortheast1); #endregion #region ■EC2インスタンス一覧の取得 DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResponse response = ec2Client.DescribeInstances(request); List<Reservation> reservationList = response.Reservations; List<Instance> instanceList = new List<Instance>(); foreach (var reservation in reservationList) { instanceList.AddRange(reservation.Instances); } #endregion #region ■Security Group一覧の取得 DescribeSecurityGroupsRequest sgRequest = new DescribeSecurityGroupsRequest(); DescribeSecurityGroupsResponse sgResponse = ec2Client.DescribeSecurityGroups(sgRequest); #endregion #region ■アクティブシート参照の取得とセル変数の宣言 #region ■シート名の変更 #region ■シートヘッダーの作成 #region ■Security Group詳細の描画 foreach (var securityGroup in sgResponse.SecurityGroups) { // Security Group詳細タイトル cell = activeWorksheet.get_Range("B" + rowCounter); cell.Value2 = "■Security Group"; cell = activeWorksheet.get_Range("C" + rowCounter); cell.Value2 = securityGroup.GroupName; rowCounter++; int instanceDescStart = rowCounter; // Security Group詳細ヘッダー cell = activeWorksheet.get_Range("B" + rowCounter); cell.Value2 = "EC2 Instance Id"; cell.Interior.ColorIndex = 33; cell = activeWorksheet.get_Range("C" + rowCounter); cell.Value2 = "Instance Name"; cell.Interior.ColorIndex = 33; rowCounter++; foreach (var instance in instanceList) { foreach (var ec2SecurityGroup in instance.SecurityGroups) { if (ec2SecurityGroup.GroupName == securityGroup.GroupName) { // インスタンス詳細 string name = (from tag in instance.Tags where tag.Key == "Name" select tag.Value).ToArray()[0]; cell = activeWorksheet.get_Range("B" + rowCounter); cell.Value2 = instance.InstanceId; cell = activeWorksheet.get_Range("C" + rowCounter); cell.Value2 = name; rowCounter++; } } } int instanceDescEnd = rowCounter - 1; // インスタンス詳細に個別に罫線を引く activeWorksheet.get_Range("B" + instanceDescStart + ":" + "C" + instanceDescEnd).Borders.LineStyle = true; // 次のインスタンス用に改行 rowCounter++; } #endregion
AWS環境定義書完成イメージ
弊社植木の個人環境のSecurity Group一覧をExcelに出力してみました:
最後に
簡単にSecurity Groupの環境定義書ができましたね。めでたしめでたし。