EC2:AMI登録解除+スナップショット削除

AMI作成の反対の処理をするものです。

AMI登録解除では、AMIのみを消しました。
ここでは、AMI登録解除してからスナップショットを削除します。

1,IAM

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

2,プログラム仕様

●入力パラメータ
・IAMユーザの”アクセスキーID”と”・シークレットアクセスキー”
・AMI ID
●処理内容
指定されたAMI IDに設定されているスナップショットIDを取得しておきます。
AMIを登録解除してから、スナップショットを削除します。
●エラー処理
特になし

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
    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
        Dim _AMIID As String = TextBox3.Text

        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)

        '①AMIの情報を取得します。
        Dim reQ1 As New Amazon.EC2.Model.DescribeImagesRequest
        reQ1.ImageIds.Add(_AMIID)
        Dim Res1 As Amazon.EC2.Model.DescribeImagesResponse
        Res1 = ec2client.DescribeImages(reQ1)

        'スナップショットはアレイリストに格納します
        Dim wSnapShots As New ArrayList
        Dim wImg As Amazon.EC2.Model.Image = Res1.Images(0)
        For Each wImgBlock As Amazon.EC2.Model.BlockDeviceMapping In wImg.BlockDeviceMappings
            If Not wImgBlock.Ebs Is Nothing Then
                wSnapShots.Add(wImgBlock.Ebs.SnapshotId)
            End If
        Next

        '②AMI登録解除します
        Dim reQ2 = New Amazon.EC2.Model.DeregisterImageRequest
        reQ2.ImageId = _AMIID
        Dim Res2 As Amazon.EC2.Model.DeregisterImageResponse
        Res2 = ec2client.DeregisterImage(reQ2)

        '③スナップショットを削除します
        For i As Integer = 0 To wSnapShots.Count - 1
            Dim reQ3 = New Amazon.EC2.Model.DeleteSnapshotRequest
            reQ3.SnapshotId = wSnapShots(i)

            Dim Res3 As Amazon.EC2.Model.DeleteSnapshotResponse
            Res3 = ec2client.DeleteSnapshot(reQ3)
        Next

    End Sub

5,解説

①11-24行目:DescribeImagesを使ってAMIの構成情報を取得します
 19行目の変数wImgにAMIのボリューム(スナップショット)情報が格納されています。
 この段階でAMIが存在するのに、スナップショットを削除することはできませんので
 いったんアレイリストに保管しておきます。
②26-30行目:AMI登録解除して
③32-39行目:スナップショットを削除します。

これで”AMI作成”の反対の意味である”削除”ができたことになります。
Comments