3-4-1:作成準備

作成中・・・。

1,IAMの準備

AWS IAM管理コンソールから、これらのプログラム実行権限を持つユーザを作成、アクセスキーを準備しておきます。
作成方法はこちらを参照

このプログラム必要な権限は・・・
 目的  AWSサービス  アクション  ARN
 サーバ起動  Amazon EC2  StartInstances  *
 サーバ停止  Amazon EC2  StopInstances  *
       
       

アクセスキーID、シークレットアクセスキーを準備しておきます。

2,プログラムの書き方

2-1,プロジェクトの作成

バッチ処理なので、コンソールアプリケーションとします。
もっと効率的な書き方もあるでしょうが、ここでは1プロジェクト=1処理として書きます。

2-2,App.Configの設定

3-3に記載しているサンプルでは、アクセスキーID・シークレットアクセスキーを、フォーム入力としていましたが、
ここではapp.configに書きます。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>

  <appSettings>
    <add key="AWSAccessKey" value="AKIAxxxxxxxxxxxxxVLA"/>
    <add key="AWSSecretKey" value="p9CpORxxxxxxxxxxxxxxxxxxxxxxxxxo6xa"/>
    <add key="AWSRegion" value="ap-northeast-1"/>
  </appSettings>
</configuration>
 8行目:キー名:AWSAccessKey に アクセスキーID設定
 9行目:キー名:AWSSecretKey にシークレットアクセスキーを設定
10行目:キー名:AWSRegion   にリージョン(ここでは東京を指すap-northeast-1を設定

としておき、
プログラム側では、下記の一行でOKです
1
        Dim ec2client As New Amazon.EC2.AmazonEC2Client

ちなみにサンプルでは下記のように4行書いていましたが、app.configに書けば上記の通り1行で済みます
1
2
3
4
        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)

2-3、共通エラー処理

OSのイベントログに実行結果およびエラー内容を書きだします。
 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
Module Module1

    Sub Main()

    End Sub

    ''' <summary>
    ''' イベントログに書き込む
    ''' </summary>
    ''' <param name="Msg">書き込む文字列</param>
    ''' <param name="isErr">エラーならTrueを指定</param>
    ''' <remarks></remarks>
    Private Sub writeEventLog(ByVal Msg As String, Optional ByVal isErr As Boolean = False)
        '自分のexeファイル名をソース名にする
        Dim sourceName As String = IO.Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location)
        'ソースが存在していない時は作成する
        If Not System.Diagnostics.EventLog.SourceExists(sourceName) Then
            System.Diagnostics.EventLog.CreateEventSource(sourceName, "")
        End If

        'イベントログにエントリを書き込む
        If isErr Then
            'エラーの場合、イベントIDを1、分類を1000とする
            System.Diagnostics.EventLog.WriteEntry(sourceName, Msg, System.Diagnostics.EventLogEntryType.Error, 1, 1000)
        Else
            System.Diagnostics.EventLog.WriteEntry(sourceName, Msg)
        End If
    End Sub

End Module
ちなみに、VSを管理者として実行していない場合は、17行目でエラーになると思われます。

主処理を書く

sub Main に実行する処理を書き、1つの実行体(exeファイル)として保管します。
タスクスケジューラでこのexeファイルを起動するものとします。


Comments