Cloud Automator APIの利用方法

概要

本記事ではCloud Automator APIの利用方法・curlコマンドのサンプルを紹介します。

Cloud Automatorではユーザー向けにCloud Automator APIを公開しています。
Cloud Automator APIを利用することで、運用ジョブの新規作成や設定情報の更新、取得などが可能です。

Cloud Automator APIドキュメント

ジョブと後処理の情報を取得できるコマンドラインツールも公開しております。
コマンドラインツールの利用方法や詳細については以下のURLをご参照ください。

Cloud Automator APIの利用方法

今回はcurlコマンドを用いて、ジョブの作成・更新・取得・削除を実施する場合のサンプルを紹介します。

注意事項

(1)APIキーについて

Cloud Automator APIを利用するにはAPIキーが必要です。
APIキーは、アカウント設定画面にて作成できます。

アカウント設定

今回紹介するサンプルでは、APIキーを`xxxx`と表示します。
サンプルを実行する際は、"Authorization: Bearer xxxx"の`xxxx`をご自身のAPIキーに書き換えてご利用ください。

(2)グループとAWS認証情報について

Cloud Automator APIを利用して、ジョブの操作を実施する場合、ジョブやグループ、AWS認証情報などのIDを指定する必要があります。

  • ジョブのIDは、ジョブ一覧画面にて確認できます。
  • グループのIDは、グループ一覧画面にて確認できます。
  • AWS認証情報のIDは、グループ内の「AWSアカウント」タブにて確認できます。

グループ管理

今回紹介するサンプルでは、これらのIDを`1`と表示します。
サンプルを実行する際は、ご自身のIDに書き換えてご利用ください。

(3)jsonの構文間違いについて

ジョブの作成や更新をする場合、パラメーターをjson形式で渡す必要があります。
パラメーターはオプション「-d」の後に、シングルクォーテーションをつけて記載します。

このパラメーターに構文エラーがあると、Cloud Automator APIは情報を受け取ることができず、ジョブの作成や更新に失敗します。ジョブの作成や更新がうまくいかない場合、パラメーターに構文エラーがないかを構文チェッカーなどで確認してください。

構文チェッカーは検索エンジンで「json 構文チェッカー」のようなキーワードで検索すると出てきます。
なお、構文チェッカーで確認する際は、外側のシングルクォーテーションを外して、データのみを確認しましょう。

curlコマンドのサンプル

 

ジョブの作成

タイマートリガーで平日朝8時に、タグで指定したEC2インスタンスを起動するジョブを作成する


curl -X POST https://manager.cloudautomator.com/api/v1/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer xxxx" \
-d '{
  "name":"api-test-start-instance",
  "aws_account_id": 1,
  "group_id": 1,
  "rule_type": "cron",
  "rule_value": {
    "hour": 8,
    "minutes": 0,
    "schedule_type": "weekly",
    "weekly_schedule": ["monday","tuesday","wednesday","thursday","friday"]
  },
  "action_type": "start_instances",
  "action_value": {
    "region": "ap-northeast-1",
    "tag_key": "Name",
    "tag_value": "test-instance",
    "trace_status": "true",
    "specify_instance": "tag"
  }
}'

 

タイマートリガーで毎週金曜日の夜8時に、IDで指定したEC2インスタンスを停止するジョブを作成する


curl -X POST https://manager.cloudautomator.com/api/v1/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer xxxx" \
-d '{
  "name":"api-test-stop-instance",
  "aws_account_id": 1,
  "group_id": 1,
  "rule_type": "cron",
  "rule_value": {
    "hour": 20,
    "minutes": 0,
    "schedule_type": "weekly",
    "weekly_schedule": ["friday"]
  },
  "action_type": "stop_instances",
  "action_value": {
    "region": "ap-northeast-1",
    "instance_id": "i-XXXXXXXXXXXX",
    "trace_status": "true",
    "specify_instance": "identifier"
  }
}'

 

HTTPトリガーで、IDで指定したEC2インスタンスのAMIを作成するジョブを作成する


curl -X POST https://manager.cloudautomator.com/api/v1/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer xxxx" \
-d '{
"name":"api-test-create-ami", "aws_account_id": 1, "group_id": 1, "rule_type": "webhook", "action_type": "create_image", "action_value": { "region": "ap-northeast-1", "instance_id": "i-XXXXXXXXXXXX", "generation": 1, "image_name": "api-test-ami", "trace_status": "true", "reboot_instance": "false", "specify_image_instance": "identifier", "add_same_tag_to_snapshot": "false" } }'

 

ジョブワークフロー用、IDで指定したEBSボリュームのスナップショットを作成する後続ジョブを作成する


curl -X POST https://manager.cloudautomator.com/api/v1/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer xxxx" \
-d '{
  "name":"api-test-create-ebs-snapshot",
  "aws_account_id": 1,
  "group_id": 1,
  "rule_type": "no_rule",
  "for_workflow": "true",
  "action_type": "create_ebs_snapshot",
  "action_value": {
    "region": "ap-northeast-1",
    "specify_volume": "identifier",
    "volume_id": "vol-xxxx",
    "generation": 1
  }
}'

 

ジョブの更新

EC2インスタンスを起動ジョブ(ジョブIDが1)にて、指定用のタグの値を更新する


curl -X PATCH https://manager.cloudautomator.com/api/v1/jobs/1 \
-H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-d '{
  "action_value": {
    "tag_value": "test-value"
  }
}'

 

3件のEC2インスタンスを起動ジョブにて、指定用のタグの値を更新する

繰り返し処理を利用したサンプルを紹介します。


#!/bin/sh
​
set -eu
​
# ジョブIDをスペース区切りで列挙する
JOB_IDS=(1 2 3)
​
for job_id in ${JOB_IDS[@]}
do
  curl --location --request PATCH --retry 5 "http://manager.cloudautomator.com/api/v1/jobs/$job_id" \
  -H 'Authorization: Bearer xxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "action_value": {
      "tag_value": "test-value"
    }
  }'
​
  sleep 1
done

 

ジョブ情報の取得

ジョブIDが1のジョブの情報を取得する


curl https://manager.cloudautomator.com/api/v1/jobs/1 \
-H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json"

 

複数ジョブの情報を取得する

ジョブ数によっては全件取得できない場合があります。レスポンスの「links」キーの値を確認し、別のジョブがまだあれば、追加のリクエストを実行する等の処理が必要です。


curl https://manager.cloudautomator.com/api/v1/jobs \
-H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json"

 

ジョブの削除

ジョブIDが1のジョブを削除する


curl -X DELETE https://manager.cloudautomator.com/api/v1/jobs/1 \
-H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json"

サンプルは以上となります。
Cloud Automator APIをぜひご活用ください。

Cloud Automator APIドキュメント

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください