Azure Automationアカウント(Runbook)でSendGridを使ったメール送信
Azure AutomationアカウントのRunbookでSendGridを使ったメール送信を試してみました。
今回はAzure VMのPower Statusを取得してメール送信するRunbook(PowerShell)を作成してみました。
SendGridのアカウント作成についてはこちら。
SendGridアカウント作成後の設定についてはこちら。
Automationアカウントの資格情報にSendGridアカウントを保存
SendGridを使ってメール送信する場合はSendGridの認証が必要になります。
今回はSendGridでの送信はSmtp Relayを利用します。(Web Api Keyによる方法もあります。)
Automationアカウントの場合は資格情報に保存します。
資格情報のメニューで資格情報の追加をクリックします。
新しい資格情報が表示されるので、SendGridアカウントの名前、ユーザー名、パスワードを入力します。SendGridでApi Keyを利用している場合はAPI Keyの値を入力します。今回名前はSendGridAccountとしています。
-
-
- 名前:任意の名前(今回はSendGridAccountと設定)
- ユーザー名:apikey(API Keyを利用の場合)
- パスワード:SendGridのAPI Keyに設定されているパスワード
-
作成が完了すると、下記のように資格情報の一覧が表示されます。
AutomationアカウントでRunbookを作成
AutomationアカウントでPowerShellを実行する為にはRunbookを使います。
1) Runbook をクリックし画面上部の [Runbook の追加] をクリックします。
2)Runbookの作成画面が表示されます。名前(今回はVM-Status)を入力し、Runbookの種類を選択します。今回はPowerShellを選択します。
これでRunbookの作成は終了です。
Runbookを編集(SendGrid(SMTP Relay)を使ってメール送信)
Runbookの編集画面が表示されますのでこちらのサンプルを入力してください。GitHubにも同じものを置いてます。
今回はVMのステータスを取得してSendGrid経由でメール送信を行うようにしています。資格情報名(今回は”SendGridAccount”としています)は必要に応じて修正下さい。
-
-
- Azure VMを指定(VM名、リソースグループ名)
- FromアドレスとToアドレスを指定
-
#VM Status $Conn = Get-AutomationConnection -Name AzureRunAsConnection # VMのステータスを取得 # SendGrid の資格情報を取得 function EncodeSubject($s) { $Subject = EncodeSubject(EncodeSubject(“$vmName のステータス")) Send-MailMessage ` |
AutomationアカウントでRunbookのテストをする
Runbookで編集を選択します。
Runbookのテストはテストウィンドウを利用します。
テストウィンドウを開くと以下のようにパラメータが表示されますので、確認したいVMや送信したいメールアドレス等を環境に合わせて設定します。設定が終わったら開始をクリックします。
無事に完了すると完了のメッセージが表示されます。
ToMailAddressに指定したメールアドレスへ、VMのStatusメールを送信する事が出来ました。