概要
Cloud Automatorにはいくつかのトリガーが用意されています。HTTPトリガーを使用したジョブを作成すると、ジョブの詳細からリクエストの送信先URLとアクセストークンが表示されます。実行サンプルにはcurlによる実行方法を掲載しておりますが、コマンドライン以外での実行することも可能です。
今回、Windows PowerShellを使ったジョブの実行方法をご紹介します。
手順
前提
- Windows PowerShellを使用できる環境であること
- HTTPトリガーを用いたジョブが作成されていること
- HTTPトリガーについてはこちらの記事等をご確認ください
Windows PowerShell を使ったジョブの実行
ジョブ作成時にアクションパラメーターを指定する場合
作成済のジョブの詳細画面を表示し、以下赤枠部分を確認します。
PowerShellを起動し、以下のように実行します。認証情報部分(XXXXXX)は読み替えて頂ますよう、お願いします。
> $headers = @{"Authorization" = "CAAuth XXXXXX"}
> Invoke-RestMethod -Method Post -Uri https://manager.cloudautomator.com/trigger/XXXXXX -Headers $headers -ContentType "application/json" -RetryIntervalSec 10 -MaximumRetryCount 2160
ジョブ実行時にアクションパラメーターを指定する場合
作成済のジョブの詳細画面を表示し、以下赤、黄、青枠部分を確認します。
PowerShellを起動し、以下のように実行します。認証情報部分(XXXXXX)は読み替えて頂ますよう、お願いします。また、対象リージョンは選択されたものをご入力ください。
> $headers = @{"Authorization" = "CAAuth XXXXXX"}
> $Params = @{region="ap-northeast-1"; specify_instance="identifier"; instance_id="i-XXXXXXXXXX"; trace_status="false"}
> Invoke-RestMethod -Method Post -Uri https://manager.cloudautomator.com/trigger/XXXXXX -Headers $headers -ContentType "application/json" -Body ($Params|Convertto-Json) -RetryIntervalSec 10 -MaximumRetryCount 2160
SSL/TLSのバージョンについて
Cloud Automatorではご使用いただくSSL/TLSは最新バージョンを推奨しております。
執筆時点では1.2となりますので、ご使用の環境のSSL/TSLがTLS 1.2より前のバージョンである場合、以下のように明示的にTLS 1.2を指定して実行頂ますよう、お願いいたします。
> [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
リトライについて
Cloud Automator で一時的に負荷が上昇している場合などに、稀にステータスコードが500番台のレスポンスを返す場合がございます。ステータスコードが400~500番台のレスポンスの場合、ジョブは実行されないため、リトライの設定を行うことを推奨しております。
上記のコード例ではRetryIntervalSec
オプションに 「10」、MaximumRetryCount
オプションに 「2160」を設定しており、ジョブが成功しない場合最大で2160回まで、10秒間隔でリトライします。
リトライに関する注意点
Cloud Automatorの負荷上昇時にはレスポンスを返すまで最大30秒かかることがあるため、この設定値では最大までリトライした場合に24時間程度遅れてジョブが実行される可能性がございます。
また、HTTPトリガーではURLやトークンが不正な場合、ジョブの状態が無効になっている場合などに400番台のレスポンスを返すことがございます。Invoke-RestMethodのリトライ設定ではステータスコードが400番台でもリトライするため、リクエストが成功しない状況でもリトライし続けてしまう可能性がございます。
実際の運用の際にはユースケースに合わせてリトライ間隔やリトライ回数を調整していただくことを推奨いたします。