ちょっと話題の記事

【Excel改造】AWS環境定義書自動生成【SecurityGroup編】

2014.11.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

この記事は下記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に出力してみました:

ueki-sg

最後に

簡単にSecurity Groupの環境定義書ができましたね。めでたしめでたし。