このドキュメントでは、ワークロード オーケストレーションでのソリューション バージョンの外部検証のための Event Grid ペイロードの詳細について説明します。 これには、ソリューション バージョンのリソースを取得し、外部検証状態を更新するための Event Grid メッセージ形式、フィールドの説明、API エンドポイントに関する情報が含まれています。
詳細については、「 ワークロード オーケストレーションの外部検証」を参照してください。
Event Grid ペイロード Microsoft.Edge.SolutionVersionPublished
ソリューション バージョンが発行されると、コンテキスト リソースに関連付けられている Event Grid トピックにイベントが送信されます。 このイベントには、ソリューションのバージョンに関する情報と、外部検証の状態を更新するためのコールバック URL が含まれています。
Event Grid メッセージの JSON ペイロードには、次のフィールドが含まれています。
data
セクションには、外部検証要求の一意識別子であるexternalValidationId
と、検証結果の受信後に呼び出されるエンドポイントであるcallbackUrl
が含まれます。
[
{
"id": "event-id-guid",
"topic": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/contexts/<context-name>",
"subject": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>",
"eventType": "Microsoft.Edge.SolutionVersionPublished",
"eventTime": "2025-04-21T11:19:25.281991Z",
"data": {
"externalValidationId": "validation-id-guid",
"targetId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>",
"solutionTemplateId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/solutionTemplates/<template-name>",
"solutionTemplateVersionId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/solutionTemplates/<template-name>/versions/<template-version>",
"solutionVersionId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>",
"apiVersion": "2025-01-01-preview",
"callbackUrl": "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/updateExternalValidationStatus?api-version=2025-01-01-preview"
},
"dataVersion": "1"
}
]
次の表では、Event Grid ペイロードのフィールドについて説明します。
フィールド | 説明 |
---|---|
id |
イベント専用の識別子。 |
topic |
トピック名。ここでは、コンテキスト リソースを示します。 |
subject |
イベントのルーティング/フィルター処理に使用される、発行済みソリューション バージョンのリソース パス。 |
eventType |
発行されたイベントの種類 - Microsoft.Edge.SolutionVersionPublished 。 |
eventTime |
イベントが発生したときのタイムスタンプ (UTC 形式)。 |
data.externalValidationId |
外部検証要求の関連付け ID。 |
data.targetId |
ターゲット リソースの ARM リソース ID。 |
data.solutionTemplateId |
ソリューション テンプレートの ARM リソース ID。 |
data.solutionTemplateVersionId |
ソリューション テンプレートの特定のバージョンの ARM ID。 |
data.solutionVersionId |
検証対象の実際のソリューション バージョンの ARM ID。 |
data.apiVersion |
リソースのクエリに使用できる API バージョン。 |
data.callbackUrl |
検証後に呼び出されるエンドポイントには、 api-version が含まれます。 |
dataVersion |
データ スキーマのバージョン。 |
GET API – ソリューション バージョンのリソースを取得する
ソリューション バージョン リソースで GET API
コマンドを実行して、解決された構成をフェッチできます。 ここで、ソリューション バージョンの ARM ID には、Event Grid ペイロードのdata.apiVersion
から data.solutionVersionId
属性と API バージョンからアクセスできます。
Event Grid ペイロード内の他のリソース ID も、同様の GET API
を使用して照会できます。
エンドポイント:
GET https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>?api-version=2025-01-01-preview
ヘッダー:
Content-Type: application/json
Authorization: Bearer <access-token>
応答本文:
{
"properties": {
"solutionTemplateVersionId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/solutionTemplates/<template-name>/versions/<template-version>",
"revision": 1,
"targetDisplayName": "<target-name>",
"configuration": "<config-data>",
"specification": {
"components": [
{
"name": "helmcomponent",
"type": "helm.v3",
"properties": {
"chart": {
"repo": "<acr-url>/helm/<chart-name>:<chart-tag>",
"version": "0.3.0",
"wait": true,
"timeout": "5m"
},
"values": {
"AppName": "Hotmelt",
"TemperatureRangeMax": "100",
"ErrorThreshold": "20",
"HealthCheckEndpoint": "localhost:8080",
"EnableLocalLog": "true",
"AgentEndpoint": "localhost:8080",
"HealthCheckEnabled": "true",
"ApplicationEndpoint": "localhost:8080"
}
}
}
]
},
"reviewId": "<review-id-guid>",
"externalValidationId": "<validation-id-guid>",
"state": "PendingExternalValidation",
"solutionInstanceName": "<solution-name>",
"provisioningState": "Succeeded"
},
"extendedLocation": {
"name": "/subscriptions/<subscription-id>/resourceGroups/<cluster-rg>/providers/Microsoft.ExtendedLocation/customLocations/<custom-location>",
"type": "CustomLocation"
},
"eTag": "\"<etag-value>\"",
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>",
"name": "<version-name>",
"type": "microsoft.edge/targets/solutions/versions"
}
POST API – 外部検証の状態を更新する
POST API
コマンドは、ソリューション バージョンの外部検証状態を更新するために使用されます。 この API は、外部検証プロセスが完了した後に呼び出され、検証結果でソリューション バージョン リソースが更新されます。
エンドポイント:
POST https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/updateExternalValidationStatus?api-version=2025-01-01-preview
ヘッダー:
Content-Type: application/json
Authorization: Bearer <access-token>
リクエストボディ:
{
"externalValidationId": "validation-id-guid",
"solutionVersionId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>",
"validationStatus": "Invalid",
"errorDetails": {} //explained below
}
要求本文には、次のフィールドが含まれています。
-
externalValidationId
: 検証操作を追跡するための一意の GUID。 Event Grid メッセージ ペイロード (data.externalValidationId) から受信したのと同じ GUID を渡す必要があります。これは、古い更新を確実に行うのに役立ちます。 -
solutionVersionId
: 検証対象のソリューション バージョンの完全な ARM ID。 Event Grid メッセージ ペイロード (data.solutionVersionId) に存在します。
エラーの詳細オブジェクト
検証の状態が "Invalid" に設定されている場合に要求本文に含めることができるサンプル errorDetails
オブジェクトを次に示します。 このオブジェクトは、検証エラーに関する追加情報を提供します。
{
"code": "InvalidConfigurations",
"message": "The provided configurations are invalid.",
"target": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>",
"additionalInfo": [
{
"type": "InvalidHelmChart",
"info": {
"level": "Error",
"message": "The Helm chart provided is invalid or not supported."
}
}
]
}
errorDetails
オブジェクトには、検証エラーに関する情報が含まれています。 次のフィールドが含まれています。
code
: 問題のカテゴリを示す、コンピューターで読み取り可能なエラー コード。message
: 問題が発生した内容を人間が判読できる説明。target
: エラーの影響を受ける ARM リソース パス。additionalInfo[]
:-
type
: 障害に関連するカテゴリまたはコンポーネント (Helm など)。 -
info.level
: エラーの重大度 (Error
、Warning
など)。 -
info.message
: トラブルシューティングのためのその他のコンテキスト。
-
注
検証の状態が "Valid"
に設定されている場合、errorDetails
オブジェクトは必要ありません。 その場合は、要求本文から errorDetails
フィールドを省略できます。
POST API 応答
POST API の応答本文は、新しい検証状態で更新されたソリューション バージョン リソースを返します。
state
フィールドには新しい状態が反映され、検証の状態が"Invalid"
に設定されている場合は、errorDetails
フィールドにエラー情報が含まれます。
{
"properties": {
"solutionTemplateVersionId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/solutionTemplates/<template-name>/versions/<template-version>",
"revision": 1,
"errorDetails": {
"code": "InvalidConfigurations",
"message": "The provided configurations are invalid.",
"target": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>",
"additionalInfo": [
{
"type": "InvalidHelmChart",
"info": {
"level": "Error",
"message": "The Helm chart provided is invalid or not supported."
}
}
]
},
"targetDisplayName": "<target-name>",
"configuration": "<config-data>",
"specification": {
"components": [
{
"name": "helmcomponent",
"type": "helm.v3",
"properties": {
"chart": {
"repo": "<acr-url>/helm/<chart-name>:<chart-tag>",
"version": "0.3.0",
"wait": true,
"timeout": "5m"
},
"values": {
"AppName": "Hotmelt",
"TemperatureRangeMax": "100",
"ErrorThreshold": "20",
"HealthCheckEndpoint": "localhost:8080",
"EnableLocalLog": "true",
"AgentEndpoint": "localhost:8080",
"HealthCheckEnabled": "true",
"ApplicationEndpoint": "localhost:8080"
}
}
}
]
},
"reviewId": "<review-id-guid>",
"externalValidationId": "<validation-id-guid>",
"state": "ExternalValidationFailed",
"solutionInstanceName": "<solution-name>",
"provisioningState": "Succeeded"
},
"extendedLocation": {
"name": "/subscriptions/<subscription-id>/resourceGroups/<cluster-rg>/providers/Microsoft.ExtendedLocation/customLocations/<custom-location>",
"type": "CustomLocation"
},
"eTag": "\"<etag-value>\"",
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Edge/targets/<target-name>/solutions/<solution-name>/versions/<version>",
"name": "<version-name>",
"type": "microsoft.edge/targets/solutions/versions"
}
外部検証の状態を更新する
validationStatus
フィールドは検証の結果を示します。検証の結果は、"Valid"
または"Invalid"
できます。 詳細については、 CLI を使用したソリューション バージョンの状態の確認を参照してください。
有効な構成を設定する
az workload-orchestration target update-external-validation-status \
--resource-group <rg-name> \
--target-name <target-name> \
--external-validation-id <external-validation-id> \
--solution-version-id <solution-version-id> \
--validation-status "Valid"
無効な構成を設定する
az workload-orchestration target update-external-validation-status \
--resource-group <rg-name> \
--target-name <target-name> \
--external-validation-id <external-validation-id> \
--solution-version-id <solution-version-id> \
--validation-status "Invalid" \
--error-details "@error.json"
error.json ファイルは、errorDetails
オブジェクトと同じスキーマに従います。