EC2:AMIの一覧を取得する

1,IAM

---------------------------------------
AWSサービス:Amazon EC2
アクション     :DescribeImages
Amazonリソースネーム(ARN):*
---------------------------------------

2,プログラム仕様

●入力パラメータ
・IAMユーザの”アクセスキーID”と”・シークレットアクセスキー”
●処理内容
自己所有のAMIをすべて取得し、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
    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.DescribeImagesRequest
        '特定のインスタンスIDのみを調べたい場合はここでパラメータ設定する
        'reQ.ImageIds.Add(AMI ID)
        '自己所有のみ表示します
        reQ.Owners.Add("self")

        'レスポンスオブジェクトを定義して、実行。
        Dim Res As Amazon.EC2.Model.DescribeImagesResponse
        Res = ec2client.DescribeImages(reQ)

        '表示用のデータテーブルを作成する。
        Dim Dt As New Data.DataTable
        Dt.Columns.Add("ImageId")       '			AMI ID
        Dt.Columns.Add("Name")          '			AMI名
        Dt.Columns.Add("Description")   '			AMI説明
        Dt.Columns.Add("ImageState")    '			状態"available"など
        Dt.Columns.Add("Architecture")  '       	    "x86_64" or "i386"
        Dt.Columns.Add("Platform")      '			"windows"など
        Dt.Columns.Add("OwnerId")       '			オーナーAWSアカウント
        Dt.Columns.Add("Public")        '			Public公開されているかどうか
        'ほかにも取得できます。デバッグして見て。

        'データテーブルに取得値を格納する。
        Dim Dr As Data.DataRow
        For Each wImg As Amazon.EC2.Model.Image In Res.Images
            Dr = Dt.NewRow()

            Dr("ImageId") = wImg.ImageId
            Dr("Name") = wImg.Name
            Dr("Description") = wImg.Description
            Dr("ImageState") = wImg.State  
            Dr("Architecture") = wImg.Architecture
            Dr("Platform") = wImg.Platform
            Dr("OwnerId") = wImg.OwnerId
            If wImg.Public Then
                Dr("Public") = "Public"
            Else
                Dr("Public") = "Private"
            End If

            '最後にDataRowをDataTableに入れる
            Dt.Rows.Add(Dr)
        Next

        '画面表示する。
        DataGridView1.DataSource = Dt

    End Sub

5,解説

16行目:reQ.Owners.Add("self") としておくことで、自己所有のみが選択されます。
     これを入れないと、全部抽出対象になるので・・・。
37行目あたりでブレークポイント設定して、wImgの中身を見ると、取得できるもの全てがわかります。

参考:Imagesオブジェクトのプロパティはこちら

Comments