Cloud Assistant のイベントをサブスクライブすることで、運用とメンテナンスの自動応答ワークフローを構築できます。たとえば、ソフトウェアのインストールや検査スクリプトの実行といった自動化されたタスクが失敗した場合に、即座にアラートを受信できます。これにより、コストがかかり、高レイテンシーの手動ポーリングが不要になります。
操作手順
次の手順では、例として Cloud Assistant タスクステータスイベント のサブスクリプションについて説明します。 詳細については、「Cloud Assistant イベントの説明」をご参照ください。
EventBridge の使用
作業を開始する前に、 EventBridge を有効化し、必要な権限が付与されている ことを確認してください。
EventBridge コンソールにログインします。左側のナビゲーションペインで、[イベントバス] をクリックします。
上部メニューで、リージョンを選択します。
[イベントバス] ページで、[デフォルト] をクリックします。
[イベントバス] ページで、左側のナビゲーションバーの イベントルール をクリックし、次に ルールの作成 をクリックします。
[基本情報の設定] タブで、[名前] フィールドにルールの名前を、[説明] フィールドに説明を入力し、次へ をクリックします。
[イベントパターンの設定] タブで、以下の設定を行い、次へ をクリックします。
イベントソース ドロップダウンリストから、acs.ecs を選択します。
[イベントタイプ] ドロップダウンリストから、目的の Cloud Assistant イベントタイプを選択します。
[クラウドアシスタントのタスクステータスのイベント]:
ecs:CloudAssistant:TaskCompleted。[イベントパターンデバッグ] セクションには、サブスクライブされたイベントタイプのサンプルが表示されます。
{ "id": "45ef4dewdwe1-7c35-447a-bd93-fab****", "source": "acs.ecs", "specversion": "1.0", "subject": "acs.ecs:cn-hangzhou:123456789098****:215672", "time": "2020-11-19T21:04:41+08:00", "type": "ecs:CloudAssistant:TaskCompleted", "aliyunaccountid": "123456789098****", "aliyunpublishtime": "2020-11-19T21:04:42Z", "aliyuneventbusname": "default", "aliyunregionid": "cn-hangzhou", "aliyunpublishaddr": "172.25.XX.XX", "data": { "commandId": "c-hz045**********", "commandName": "hello-linux.sh", "exitCode": "0", "finishTime": "2023-12-14T07:39:48Z", "instanceId": "i-bp114***************", "invocationStatus": "Success", "invokeId": "t-hz045**********", "ownerId": "158*************", "playerUid": "256***************", "repeatMode": "Once", "repeats": "1", "startTime": "2023-12-14T07:39:48Z", "errorCode": "0", "errorDesc": "" } }サンプルの下で、テスト をクリックしてイベントをシミュレートします。メッセージ [照合に成功しました。イベントは想定どおりにトリガーされます。] が表示された場合、イベントをトリガーできることが確認されます。
イベントターゲットを設定します。サービスタイプ を選択し、プッシュシナリオを設定します。
プッシュシナリオの詳細については、「プッシュシナリオの設定」をご参照ください。
CloudMonitor の使用
CloudMonitor コンソール にログインします。
左側のナビゲーションペインで、を選択します。
サブスクリプションポリシー タブで、[サブスクリプションポリシーの作成] をクリックします。
[サブスクリプションポリシーの作成] ページで、Cloud Assistant のイベントにサブスクライブするためのパラメーターを設定します。
この例では、 Cloud Assistant イベントに関連するパラメーターのみを示します。 詳細については、「サブスクリプションポリシーのパラメーター」をご参照ください。
[サブスクリプションタイプ]:[システムイベント] を選択します。
[サブスクリプション範囲]:
[サービス]: ECS を選択します。
[イベントタイプ]: [通知] を選択します。
[イベント名]:CloudAssistant:TaskCompletedを選択します。
[送信] をクリックします。
関連するイベントがトリガーされると、通知が届きます。 また、 DescribeSystemEventAttribute オペレーション を呼び出して、システムイベントの詳細をクエリすることもできます。
Cloud Assistant のイベントの説明
Cloud Assistant のタスクステータスイベント
イベントの説明
コマンドやスクリプトの実行には時間がかかります。Cloud Assistant のタスクステータスイベントを使用すると、タスクの完了状況を追跡できます。このイベントは、以下の目的で使用できます。
Cloud Assistant のタスクが失敗または完了したときに通知を受信できます。通知をアラートや後続の操作に使用できます。
ポーリングは API 呼び出しのクォータを消費します。これを回避するために、イベントサブスクリプションを使用します。
ロングポーリングプロセス中に発生する可能性のあるアプリケーションのリリースによる中断を防ぎます。イベントを使用すると、ワークフローが簡素化されます。
トリガー条件と制限
トリガー条件: RunCommand または InvokeCommand API を呼び出してタスクを実行すると、Cloud Assistant はタスクのステータスを監視します。タスクが完了すると、タスクステータスイベントが送信されます。
制限:
Cloud Assistant のタスクステータスイベントは、ECS インスタンス上のタスクが以下のいずれかの最終状態 (InvocationStatus) になったときにのみ送信されます。
Aborted: タスクの送信に失敗しました。
Success: タスクは成功しました。
Failed: タスクは失敗しました。
Invalid: タスクの内容が無効です。
Timeout: タスクはタイムアウトしました。
Cancelled: タスクはキャンセル済みです。
Terminated: タスクは終了しました。
DescribeInvocations および DescribeInvocationResults API は、
array<object>フォーマットでデータを返します。ただし、タスクステータスイベントは、複数のタスクではなく、単一のインスタンス上の単一のタスクのステータスを報告します。
イベントフィールド
フィールド | 説明 | 例 |
instanceId | インスタンス ID。 | i-bp114*************** |
invokeId | コマンド実行 ID。 | t-hz045********** |
commandId | コマンド ID。 | c-hz045********** |
commandName | コマンド名。 | ACS-ECS-ResetPassword-for-linux.sh |
ownerUid | コマンドが実行されるインスタンスを所有するアカウント。 | 158************* |
playerUid | コマンドを実行するためにロールを引き受けるアカウントの ID。 | 256*************** |
repeatMode | コマンドの実行モード。InstanceId も指定されている場合、このパラメーターは無視されます。有効値:
| Once |
repeats | インスタンスでコマンドが実行された回数。
| 0 |
invocationStatus | コマンドの実行ステータス。
| Success |
exitCode | コマンドプロセスの終了コード。 | 0 |
startTime | タスクの開始時刻。 | 2023-12-20T06:15:55Z |
finishTime | タスクの終了時刻。 | 2023-12-20T06:15:59Z |
errorCode | コマンドの送信または実行に失敗した場合に返されるエラーコード。 | 0 |
errorDesc | コマンドの送信または実行の失敗の詳細。 | - |
Cloud Assistant の初回ハートビートイベント
イベントの説明
Cloud Assistant のハートビートは、インスタンスのオペレーティングシステムのステータスを判断する方法の 1 つです。初回ハートビートは、オペレーティングシステムが起動したタイミングを示します。この情報を使用して、インスタンスの正常性を確認したり、Cloud Assistant コマンドを送信するタイミングを決定したりできます。
DescribeCloudAssistantStatus API をポーリングする代わりに初回ハートビートイベントを使用すると、以下の問題が解決されます。
DescribeCloudAssistantStatus をポーリングしてステータスが true に変更されたかどうかを確認するのは複雑です。不適切なポーリング間隔は、リクエストが過多になり、スロットリングをトリガーしたり、システムに負担をかけたりする可能性があります。
インスタンスのオペレーティングシステムの起動時間は大きく異なる場合があります。一部の Windows インスタンスは起動に最大 5 分かかる場合があり、ポーリングの合計期間を制御することが困難です。
DescribeCloudAssistantStatus が返すステータスには遅延が発生する可能性があります。ハートビートが停止してからステータスが変更されるまでに 2 分の遅延が生じます。これにより、DescribeCloudAssistantStatus がインスタンスの再起動を検出することが困難になります。
トリガー条件と制限
トリガー条件: Cloud Assistant がハートビートを報告するとき、Cloud Assistant クライアントの起動後の最初のハートビートであることを検出すると、最初のハートビートイベントを送信します。
Cloud Assistant のバージョンの制限:
Windows インスタンス:Cloud Assistant Agent のバージョンは 1.0.0.149 より新しい必要があります。
Linux インスタンス:Cloud Assistant Agent のバージョンは 1.0.2.569 より新しい必要があります。
古いバージョンの Cloud Assistant は、毎分ハートビートを報告しないか、index フィールドを報告しません。その結果、起動後の最初のハートビートを正確に識別できません。これらの古いバージョンはサポートされていません。
イベントフィールド
フィールド | 説明 | 例 |
bizEventId | イベント ID。 | ea33c3e2-aaf0-****-****-5d49b1ecce99 |
vmName | イベントに関連付けられたインスタンスの ID。 | i-bp19**************** |
extensions | ビジネス拡張に関する情報。 | - |
azone | ゾーン。 | cn-shenzhen-e |
region | リージョン。 | cn-shenzhen |
agentVersion | Cloud Assistant Agent のバージョン。 | 2.2.3.529 |
uptime | オペレーティングシステムが実行されている時間 (ミリ秒単位)。 | 19000 |
Cloud Assistant のタスク実行出力の配信結果イベント
イベントの説明
コマンドを実行すると、最大 24 KB のコマンド出力が保持されます。この制限を超える出力は切り捨てられます。
完全な出力を取得したり、出力を永続化したりする場合は、コマンドの実行が最終状態に達したときに出力をObject Storage Service (OSS) パスに配信するように設定できます。
このイベントは、以下の目的で使用できます。
出力の配信に関する通知と詳細を受信できます。成功通知を受信すると、対応する OSS バケットから出力ファイルをダウンロードできます。これにより、DescribeInvocations API をポーリングして結果を取得する必要がなくなり、効率が向上します。
配信が失敗した場合、イベントから失敗の詳細な理由を取得できます。
トリガー条件と制限
トリガー条件: RunCommand または InvokeCommand API を使用してタスクを実行し、有効な OssOutputDelivery パラメーターを指定すると、タスクが最終状態に達したときにこのイベントが送信されます。
制限:
イベントは、インスタンス上のタスクが以下のいずれかの最終状態 (InvocationStatus) になったときにのみ送信されます。
Aborted: タスクの送信に失敗しました。
Success: タスクは成功しました。
Failed: タスクは失敗しました。
Invalid: タスクの内容が無効です。
Timeout: タスクはタイムアウトしました。
Cancelled: タスクはキャンセル済みです。
Terminated: タスクは終了しました。
Cloud Assistant のバージョンの制限:
Windows インスタンス:Cloud Assistant Agent のバージョンは 2.1.4.1007 より新しい必要があります。
Linux インスタンス:Cloud Assistant Agent のバージョンは 2.2.4.1007 より新しい必要があります。
イベントフィールド
フィールド | 説明 |
instanceId | インスタンス ID。 |
invokeId | コマンド実行 ID。 |
ownerUid | コマンドが実行されるインスタンスを所有するアカウント。 |
playerUid | コマンドを実行するためにロールを引き受けるアカウントの ID。 |
repeatMode | コマンドの実行モード。有効値:
|
repeats | インスタンスでコマンドが実行された回数。
|
ossOutputDelivery | コマンド出力を配信するための OSS 設定。 |
ossOutputUri | コマンド出力が配信される OSS ファイルの URI。 |
status | 配信ステータス。
|
statusCode | 配信ステータスコード。このパラメーターは、ステータスが Failed の場合にのみ返されます。 |
errorCode | 配信失敗のエラーコード。このパラメーターは、ステータスが Failed の場合にのみ返されます。有効値:
|
errorInfo | 配信失敗のエラー詳細。このパラメーターは、ステータスが Failed の場合にのみ返されます。 |
Cloud Assistant Agent のアップグレード失敗通知イベント
イベントの説明
Cloud Assistant Agent は、デフォルトで 30 分ごとにバージョンのアップグレードを自動的にチェックします。
アップグレード失敗通知イベントをサブスクライブして、失敗の理由と解決策を迅速に把握できます。これにより、トラブルシューティングが簡素化されます。
イベントフィールドの説明
フィールド | 説明 | 例 |
instanceId | インスタンス ID。 | i-bp114*************** |
currentVersion | Cloud Assistant Agent の現在のバージョン。 | 2.2.3.529 |
expectedVersion | アップグレード先の Cloud Assistant Agent のバージョン。 | 2.2.4.1007 |
errorCode | アップグレード失敗のエラーコード。エラーコードの詳細については、以下の「エラーコードの説明」をご参照ください。 | AgentUpdateFailure:DownloadPackageFailed:NetworkTimeout |
errorInfo | アップグレード失敗の理由。 | The Alibaba Cloud service network is blocked. |
occurrenceTime | アップグレードが失敗した時刻。 | 2026-02-28T03:30:00Z |
エラーコードの説明
エラーコードには、プレフィックス AgentUpdateFailure: が付きます。以下の表に、エラーコードの詳細を示します。
失敗の理由 | エラーの説明 | errorCode |
ダウンロードの失敗 | アクセスが拒否されました。 | DownloadPackageFailed:AccessDenied |
ネットワークタイムアウト。 | DownloadPackageFailed:NetworkTimeout | |
ディスク容量が不足しています。 | DownloadPackageFailed:NoEnoughSpace | |
予期しないファイルの終わり (データが不完全、または接続が途中で終了)。 | DownloadPackageFailed:UnexpectedEOF | |
MD5 検証の失敗 | MD5 検証に失敗しました。 | CheckMD5Failed |
パッケージ抽出の失敗 | パッケージの抽出に失敗しました。 | ExtractPackageFailed |
実行可能ファイルの検証の失敗 | 実行可能ファイルの検証に失敗しました。 | ValidateExecutableFailed |
アップグレードスクリプト実行のタイムアウト | スクリプトファイルが存在しません。 | ExecuteUpdateScriptRunnerTimeout:FileNotExist |
プロセスがシグナル (SIGKILL や SIGTERM など) によって終了しました。 | ExecuteUpdateScriptRunnerTimeout:ExitedBySignal | |
プロセスが強制終了されました。 | ExecuteUpdateScriptRunnerTimeout:Killed | |
異常なプロセス終了ステータス (予期しない終了コード)。 | ExecuteUpdateScriptRunnerTimeout:UnexpectedExitStatus | |
アップグレードスクリプト実行の失敗 | スクリプトファイルが存在しません。 | ExecuteUpdateScriptRunnerFailed:FileNotExist |
プロセスがシグナル (SIGKILL や SIGTERM など) によって終了しました。 | ExecuteUpdateScriptRunnerFailed:ExitedBySignal | |
プロセスが強制終了されました。 | ExecuteUpdateScriptRunnerFailed:Killed | |
異常なプロセス終了ステータス (予期しない終了コード)。 | ExecuteUpdateScriptRunnerFailed:UnexpectedExitStatus |
イベント JSON のサンプル
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234****",
"source": "acs.ecs",
"specversion": "1.0",
"subject": "acs.ecs:cn-hangzhou:123456789098****:215672",
"time": "2026-02-28T03:30:00+08:00",
"type": "ecs:CloudAssistant:UpdateFailed",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2026-02-28T03:30:01Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"instanceId": "i-bp114***************",
"currentVersion": "2.2.3.529",
"expectedVersion": "2.2.4.1007",
"errorCode": "AgentUpdateFailure:DownloadPackageFailed:NetworkTimeout",
"errorInfo": "The aliyun service network is blocked.",
"occurrenceTime": "2026-02-28T03:30:00Z"
}
}Cloud Assistant Agent のアップグレード成功通知イベント
イベントの説明
Cloud Assistant Agent は、デフォルトで 30 分ごとにバージョンのアップグレードを自動的にチェックします。
アップグレード成功通知イベントをサブスクライブして、アップグレードのステータスを常に把握できます。これにより、トラブルシューティングが簡素化されます。
イベントフィールドの説明
フィールド | 説明 | 例 |
instanceId | インスタンス ID。 | i-bp114*************** |
currentVersion | Cloud Assistant Agent の現在のバージョン。 | 2.2.4.1007 |
occurrenceTime | アップグレードが成功した時刻。 | 2026-02-28T03:30:00Z |
イベント JSON のサンプル
{
"id": "f1e2d3c4-b5a6-7890-abcd-123456****",
"source": "acs.ecs",
"specversion": "1.0",
"subject": "acs.ecs:cn-hangzhou:123456789098****:215672",
"time": "2026-02-28T03:30:00+08:00",
"type": "ecs:CloudAssistant:UpdateCompleted",
"aliyunaccountid": "123456789098****",
"aliyunpublishtime": "2026-02-28T03:30:01Z",
"aliyuneventbusname": "default",
"aliyunregionid": "cn-hangzhou",
"aliyunpublishaddr": "172.25.XX.XX",
"data": {
"instanceId": "i-bp114***************",
"currentVersion": "2.2.4.1007",
"occurrenceTime": "2026-02-28T03:30:00Z"
}
}本番環境に関する推奨事項
べき等性: イベントシステムは、ネットワークの問題や再試行により、同じイベントを複数回配信することがあります。 処理ロジックはべき等である必要があります。 これは、同じイベントを複数回処理しても、1 回処理した場合と同じ結果になることを意味します。 イベントの
idまたはdata.bizEventIdを一意の識別子として使用できます。 イベントを処理する前に、この ID がすでに処理されているかどうかを確認してください。再試行とデッドレターキュー: EventBridge のイベントターゲットを設定する際は、再試行ポリシーと デッドレターキュー を設定することを強く推奨します。 処理関数が一時的に失敗した場合、EventBridge は自動的に再試行します。 再試行に失敗した場合、イベントは Message Service (MNS) キューなどのデッドレターキューに送信されます。 その後、イベントを手動で調査して復旧することで、データ損失を防ぐことができます。
モニタリングとアラート: イベント処理関数自体を監視してください。 その実行成功率、所要時間、エラーログを監視し、アラートを設定してください。 これにより、処理ロジックが一貫して失敗した場合に、即座に介入できます。
よくある質問
EventBridge で Cloud Assistant イベントをサブスクライブしても、イベント通知が届かないのはなぜですか?
前提条件の確認: Cloud Assistant Agent のバージョンが要件を満たしていることを確認してください。
EventBridge ルールの確認:
EventBridge コンソールにログインします。ルールの イベントパターン が正しいことを確認してください。
sourceはacs.ecsであり、typeは正しいイベントタイプである必要があります。イベントパターンデバッグ 機能を使用して、ルールが実際のイベントの JSON サンプルと一致するかどうかをテストしてください。
イベントターゲットの健全性の確認:
EventBridge コンソール のイベントルール詳細ページで、イベントターゲット の呼び出しレコードとエラーログを確認してください。
Function Compute や Webhook などのターゲットサービスが正常に実行されており、ネットワーク経由で到達可能であることを確認してください。