この記事は公開されてから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に出力してみました:
最後に
簡単にSecurity Groupの環境定義書ができましたね。めでたしめでたし。