1,IAM
---------------------------------------
AWSサービス:Amazon EC2
アクション :DescribeInstances
Amazonリソースネーム(ARN):*
---------------------------------------
2,プログラム仕様
●入力パラメータ
・IAMユーザの”アクセスキーID”と”・シークレットアクセスキー”
●処理内容
EC2インスタンスを取得して、DataGridViewに表示する
●エラー処理
特になし
3,画面構成
4,プログラム
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 | Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim _AWSID As String = TextBox1.Text
Dim _AWSPass As String = TextBox2.Text
'EC2クライアント作成
Dim cred As Amazon.Runtime.BasicAWSCredentials
cred = New Amazon.Runtime.BasicAWSCredentials(_AWSID, _AWSPass)
Dim ec2client As Amazon.EC2.AmazonEC2Client
ec2client = New Amazon.EC2.AmazonEC2Client(cred, Amazon.RegionEndpoint.APNortheast1)
'リクエストオブジェクトを定義
Dim reQ = New Amazon.EC2.Model.DescribeInstancesRequest
'特定のインスタンスIDのみを調べたい場合はここでパラメータ設定する
'reQ.InstanceIds.Add(インスタンスID)
'レスポンスオブジェクトを定義して、実行。
Dim Res As Amazon.EC2.Model.DescribeInstancesResponse = ec2client.DescribeInstances(reQ)
'表示用のデータテーブルを作成する。
Dim Dt As New Data.DataTable
Dt.Columns.Add("Instance-ID")
Dt.Columns.Add("PrivateIP")
Dt.Columns.Add("Global-IP")
Dt.Columns.Add("Type")
Dt.Columns.Add("State-Code")
Dt.Columns.Add("State-Name")
Dt.Columns.Add("Name")
Dt.Columns.Add("SecurityGroup")
Dt.Columns.Add("SecurityG-ID")
'データテーブルに取得値を格納する。
Dim Dr As Data.DataRow
For Each instance In Res.Reservations
Dr = Dt.NewRow()
Dr("Instance-ID") = instance.Instances(0).InstanceId
Dr("PrivateIP") = instance.Instances(0).PrivateIpAddress
Dr("Global-IP") = instance.Instances(0).PublicIpAddress
Dr("Type") = instance.Instances(0).InstanceType
Dr("State-Code") = instance.Instances(0).State.Code
Dr("State-Name") = instance.Instances(0).State.Name
'NameはTagの一種なので、こうやってとります。
For Each wName In instance.Instances(0).Tags
If wName.Key = "Name" Then Dr("Name") = wName.Value
Next
'セキュリティグループは複数指定ができるので、とりあえず最初の1つだけ。
If instance.Instances(0).SecurityGroups.Count > 0 Then
Dr("SecurityGroup") = instance.Instances(0).SecurityGroups(0).GroupName.ToString
Dr("SecurityG-ID") = instance.Instances(0).SecurityGroups(0).GroupId.ToString
End If
'最後にDataRowをDataTableに入れる
Dt.Rows.Add(Dr)
Next
'画面表示する。
DataGridView1.DataSource = Dt
End Sub
|
5,解説17行目までで、EC2からインスタンス一覧を取得します。 19-29行で、DataTable用を準備して 31-56行で、DataTableにEC2から取得した値を設定します。
取得できる値は、17行目終了時点でのResオブジェクトを覗いてみてください。
”インスタンスの状態”の詳細ステータスはDescribeInstancesでは取れません。 DescribeInstanceStatus で取れますので、同じような造りで作成してください。なお、DescribeInstanceStatusのIAMの許可をお忘れなく
|