概要
本記事ではCloud Automator APIの利用方法・curlコマンドのサンプルを紹介します。
Cloud Automatorではユーザー向けに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をぜひご活用ください。