概要
サーバーワークスの提供するAWS運用自動化ツールCloud AutomatorはAPIを提供しており、運用ジョブの作成・編集等が可能です。ユースケースとしては大量のジョブを一括で作成したり、ジョブ情報の保存等に用いられています。
今回代表的なHTTPリクエストの実行方法の1つである curl コマンドを用いたCloud Automator APIの実行方法のサンプル集をまとめてみました。今回は、運用ジョブを中心にまとめました。
前提
- コマンドのパラメータとしてジョブIDやグループIDの指定が必要な場合がありますが、今回は全て
1
を例としてコマンド例を記載しています。 - ジョブ名等のパラメータも実際に利用可能な値をサンプルとして記載していますので、適宜読み替えて頂ますよう、お願いします。
- 利用にはAPIキーの取得が必要ですが、それらの手順はAPIドキュメント等を参照ください。本記事では
xxxx
のようにマスキングしています。
コマンドサンプル
ジョブ作成
トリガー( rule_type
)やアクション( action_type
)によって設定値( rule_value
, action_value
)が必要な場合があるのでAPIドキュメントを参照しながら構成します。
HTTPトリガー / 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-job","aws_account_id": 1,"group_id": 1,"rule_type": "webhook","action_type": "create_image","action_value": {"region": "ap-northeast-1","tag_key": "target_group","tag_value": "enabled","generation": 1,"image_name": "api-test-ami","trace_status": "true","reboot_instance": "false","specify_image_instance": "tag","add_same_tag_to_snapshot": "false"}}'
HTTPトリガー / Route53: リソースレコードセットを更新アクション
curl -X POST https://manager.cloudautomator.com/api/v1/jobs \ -H "Content-Type: application/json" \ -H "Authorization: Bearer xxxx" \ -d '{"name":"api-test-job","aws_account_id": 1,"group_id": 1,"rule_type": "webhook","action_type": "update_record_set","action_value": {"zone_name": "cloudautomator.local", "record_set_name": "www.cloudautomator.local", "record_set_type": "A", "record_set_value": "8.8.8.8"}}'
HTTPトリガー / EC2: EBSスナップショットを作成アクション
curl -X POST https://manager.cloudautomator.com/api/v1/jobs \ -H "Content-Type: application/json" \ -H "Authorization: Bearer xxxx" \ -d '{"name":"api-test-job","aws_account_id": 1,"group_id": 1,"rule_type": "webhook","action_type": "create_ebs_snapshot","action_value": {"region": "ap-northeast-1", "specify_volume": "identifier", "volume_id": "vol-xxxx", "generation": 1}}'
即時実行トリガー / EC2: EBSスナップショットを作成アクション
curl -X POST https://manager.cloudautomator.com/api/v1/jobs \ -H "Content-Type: application/json" \ -H "Authorization: Bearer xxxx" \ -d '{"name":"api-test-job","aws_account_id": 1,"group_id": 1,"rule_type": "immediate_execution","action_type": "create_ebs_snapshot","action_value": {"region": "ap-northeast-1", "specify_volume": "identifier", "volume_id": "vol-xxxx", "generation": 1}}'
タイマートリガー / EC2: EBSスナップショットを作成アクション
curl -X POST https://manager.cloudautomator.com/api/v1/jobs \ -H "Content-Type: application/json" \ -H "Authorization: Bearer xxxx" \ -d '{"name":"api-test-job","aws_account_id": 1,"group_id": 1,"rule_type": "cron", "rule_value": {"hour": 1, "minutes": 1, "schedule_type": "one_time", "one_time_schedule": "2025/01/31"}, "action_type": "create_ebs_snapshot","action_value": {"region": "ap-northeast-1", "specify_volume": "identifier", "volume_id": "vol-0ea55022cefed4280", "generation": 1}}'
ジョブ取得
1件取得
curl https://manager.cloudautomator.com/api/v1/jobs/1 \ -H "Authorization: Bearer xxxx" \ -H "Content-Type: application/json"
複数取得
このAPIで注意が必要なのは、ジョブ数によっては全件取得できるとは限りません。 レスポンスの links キーの値等を確認して別のジョブがまだあるようでしたら、追加のリクエストを実行する等の処理が必要です。
curl https://manager.cloudautomator.com/api/v1/jobs \-H "Authorization: Bearer xxxx" \ -H "Content-Type: application/json"
ジョブ編集
ジョブ名を編集するパターンです。
curl -X PATCH https://manager.cloudautomator.com/api/v1/jobs/1 \ -H "Authorization: Bearer xxxx" \ -H "Content-Type: application/json" \ -d '{"name": "edit from api"}'
ジョブ削除
curl -X DELETE https://manager.cloudautomator.com/api/v1/jobs/1 \ -H "Authorization: Bearer xxxx" \ -H "Content-Type: application/json"
以上です。APIを活用して効率的な運用を実現していきましょう。
参考
紅林輝(くればやしあきら)(サービス開発部) 記事一覧
サービス開発部所属。2015年にサーバーワークスにJOIN。クラウドインテグレーション部を経て、現在はCloud Automatorの開発に従事。ドラクエ部。推しナンバーはⅤ、推しモンスターはクックルー。