ここではWindows Formアプリケーションで作りますが、最終的にはWebアプリケーションで作成した方が何かと便利です。
最初のうちはFormアプリケーションの方が安心だと思いますので。
早速作ります。
例題として、サーバを起動するプログラムを作ります。
1,IAM設定
事前準備として、このプログラムが利用するユーザをIAMで作成しておきます。
下記権限を持つユーザアカウントのアクセスキーを準備しておいてください。
---------------------------------------
AWSサービス:Amazon EC2
アクション :StartInstances
Amazonリソースネーム(ARN):*
---------------------------------------
2,プログラム仕様
●入力パラメータ
・IAMユーザの”アクセスキーID”と”・シークレットアクセスキー”
・インスタンスID
●処理内容
サーバを起動する
●エラー処理
メッセージを表示する。
3,作成開始
VSを起動し、新しいプロジェクト→Windows Form アプリケーション として準備します。
下記のファイルを、参照設定として追加します。
”C:\Program Files (x86)\AWS SDK for .NET\bin\Net45\AWSSDK.dll”
4,フォームの構成
↓こんな感じで
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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 _InstanceID 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)
Dim reQ = New Amazon.EC2.Model.StartInstancesRequest
reQ.InstanceIds.Add(_InstanceID)
Dim Res As Amazon.EC2.Model.StartInstancesResponse
Res = ec2client.StartInstances(reQ)
If Res.StartingInstances(0).CurrentState.Code <> 0 Then
MsgBox("サーバは停止中ではありません。")
End If
End Sub
|
以上です。
【解説】
2
3
4
|
Dim _AWSID As String = TextBox1.Text
Dim _AWSPass As String = TextBox2.Text
Dim _InstanceID As String = TextBox3.Text
|
入力パラメータを受け取り、それぞれ・・・
_AWSID:アクセスキーID
_AWSPass:シークレットアクセスキー
_InstanceID:インスタンスID
を格納します。
本題はここからです。
① サービス単位のオブジェクトを作成します。
EC2サービス関係で何かやろうと思えば、”Amazon.EC2.AmazonEC2Client”オブジェクトを作る必要があります。
(S3サービスで何かやりたければ”Amazon.S3.AmazonS3Client”・・・という感じで定義します。)
EC2クライアントオブジェクトは、認証情報とリージョンを設定します。
6
7
8
9
| 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)
|
② リクエストを投げるためのオブジェクトを作成し、パラメータを設定する。この例のStartInstancesコマンドは、複数のインスタンスを指定できるようですので、配列になっています。
なので、Addを使って配列にインスタンスIDを放り込みます。
11
12
| Dim reQ = New Amazon.EC2.Model.StartInstancesRequest
reQ.InstanceIds.Add(_InstanceID)
|
③ レスポンス(実行後の結果)を受け取るためのオブジェクトを準備しておくRes変数
14
| Dim Res As Amazon.EC2.Model.StartInstancesResponse
|
④ 実行します。
実行時にはリクエストオブジェクトをパラメータとして指定します。
15
| Res = ec2client.StartInstances(reQ)
|
必須ではないですが、
17
18
19
|
If Res.StartingInstances(0).CurrentState.Code <> 0 Then
MsgBox("サーバは停止中ではありません。")
End If
|
戻り値の内容は・・・AWS公式ドキュメントでは、このあたり? ・・・わかりにくいですが。。
コード作成途中の入力支援に、より具体的な説明が出ています。
戻り値0=sttoping なのでサーバ停止中です。
停止中以外の状態で起動命令があれば、メッセージボックスを表示します。
|