Cloud Automator APIの利用方法

概要

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

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

Cloud Automator APIドキュメント

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人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください