Messaggi di richiesta-risposta gridwich

App per la logica di Azure
Archiviazione di Azure

Questo articolo descrive in dettaglio gli eventi specifici di Griglia di eventi che formano la sequenza di risposta di richiesta per diverse operazioni di Gridwich.

Eventi di Gridwich

Gridwich Acknowledgementment e Gridwich Failure sono diversi da altri eventi di Gridwich. In particolare:

  • Gridwich Acknowledgementment (ACK) indica che Gridwich ha ricevuto, ma non necessariamente elaborato, la richiesta in una sequenza Request-ACK-Response.
  • Ogni operazione ha uno o più eventi di risposta success univoci, ma quasi tutte le operazioni usano lo stesso evento Gridwich Failure per comunicare l'errore.

Eventi di codifica

Eventi di archiviazione BLOB e contenitori

chiavi Archiviazione

Contesto dell'operazione

Gridwich accetta un oggetto JSON operationContext come parte dei messaggi di richiesta. In generale, Gridwich restituisce un oggetto corrispondente nei messaggi di risposta e non riguarda la struttura interna o il contenuto specifico dell'oggetto contesto.

L'eccezione è che l'oggetto contesto di risposta può avere proprietà JSON aggiuntive rispetto all'equivalente della richiesta. Queste proprietà aggiuntive sono interne a Gridwich e i loro nomi iniziano sempre con il carattere tilde ~. Le proprietà della richiesta sono sempre presenti nell'oggetto contesto di risposta.

Come nel codice JSON normale, le proprietà dell'oggetto risposta possono essere visualizzate in un ordine diverso rispetto all'oggetto richiesta.

Per altre informazioni sul contesto dell'operazione, vedere Contesto dell'operazione nell'articolo Architettura di Gridwich.

Messaggi di Griglia di eventi

Per altre informazioni sul flusso dei messaggi di richiesta/risposta, vedere il flusso della richiesta di architettura.

Nelle descrizioni degli eventi seguenti i valori delle proprietà JSON sono i soliti tipi stringa, numero o booleano. Le descrizioni usano i tipi di contenuto stringa specifici seguenti. Se la descrizione include "opaco", il contenuto e il formato del valore sono arbitrari.

  • GUID-string, come "b621f33d-d01e-0002-7ae5-4008f006664e" è un valore ID a 16 byte specificato in 36 caratteri (32 cifre esadecimale, più 4 trattini). Si noti la mancanza di parentesi graffe. Il valore non fa distinzione tra maiuscole e minuscole. Questo formato corrisponde al risultato di System.GUID.ToString("D").
  • Topic-string, come "/subscriptions/5edeadbe-ef64-4022-a3aa-133bfef1d7a2/resourceGroups/gws-shared-rg-sb/providers/Microsoft.EventGrid/topics/gws-gws-egt-sb", è una stringa di contenuto opaco.
  • Subject-string, come "/blobServices/default/containers/telestreamoutput/blobs/db08122195b66be71db9e54ae04c58df/503220533TAGHD23976fps16x990266772067587.mxf", è una stringa di contenuto opaco.
  • EventType-string, come "request.operation.requested" in genere è una stringa del formato : {"request"|"response"}.operation[.qualifier].
  • DataVersion-string, ad esempio "1.0", è un indicatore di controllo delle versioni usato dai processori di messaggi per distinguere diverse evoluzione della stessa operazione. Gridwich richiede questo campo. Il HandlesEvent metodo determina le versioni che un singolo gestore griglia di eventi può elaborare.
  • URL-string è un URL assoluto che spesso punta ai log di Application Insights. Queste stringhe sono in genere un URL di firma di accesso condiviso, a causa dei requisiti di autorizzazione di destinazione.
  • StorageURL-stringè un URL assoluto che spesso punta a un BLOB o a un contenitore Archiviazione di Azure. Questa stringa non è in genere un URL di firma di accesso condiviso.
  • StorageURL-SAS-stringè un URL di firma di accesso condiviso assoluto che spesso punta a un BLOB o a un contenitore Archiviazione di Azure.
  • OperationContextObject, come { "prodID": 10, "dc": "abc" }, è un oggetto JSON arbitrario accettato nelle richieste in ingresso e restituito come parte degli eventi di risposta gridwich.
  • Metadata-Dictionaryè un dizionario oggetti JSON da stringa a stringa con le coppie nome-valore che rappresentano Archiviazione di Azure metadati BLOB.
  • Encoder-Context è un oggetto JSON opaco di proprietà specifiche di un particolare codificatore.

Risposta ACK generica gridwich

Gridwich>Requester usa ResponseAcknowledgeDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "eventType": "request.blob.metadata.create"
    },
    "eventType": "response.acknowledge"
}

Il data.eventType valore stringa è la proprietà di primo livello eventType dell'evento Request. Ad esempio, per una richiesta di analisi BLOB, il data.eventType valore stringa èrequest.blob.analysis.create .

Risposta di errore generica gridwich

Gridwich>Requester usa ResponseFailureDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "logEventId": 30001,
        "logEventMessage": "the message text for eventId 30001",
        "logRecordId": "GUID-string",
        "logRecordUrl": "URL-string", // AppInsight URL to the logRecordId
        "eventHandlerClassName": "string",
        "handlerId": "GUID-string"
    },
    "eventType": "response.failure"
}

L'evento Failure non include il valore della richiesta eventType originale, ma include il contesto dell'operazione e il nome del gestore che stava elaborando la richiesta. Le log* proprietà sono correlate alle informazioni sul problema registrate dall'istanza di Application Insights configurata.

Per un set limitato di operazioni, l'oggetto evento Failure differisce in modo significativo rispetto al messaggio precedente. Per altre informazioni, vedere Roll storage keys .For more information, see Roll storage keys.

Il richiedente chiede a Gridwich di inserire alcuni metadati in un BLOB

Il richiedente>Gridwich usa RequestBlobMetadataCreateDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "blobMetadata": <Metadata-Dictionary>
    },
    "eventType": "request.blob.metadata.create"
}

blobMetadata è un oggetto di proprietà con valori stringa che rappresentano tutte le coppie nome-valore dei metadati blob desiderati.

Gridwich>Requester usa ResponseBlobMetadataSuccessDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "blobMetadata": <Metadata-Dictionary>
    },
    "eventType": "response.blob.metadata.success"
}

Per recuperare in un secondo momento i metadati correnti per un BLOB, vedere la richiesta Di analisi del BLOB .

Il richiedente chiede a Gridwich di eseguire un'analisi di un BLOB tramite MediaInfo

Il richiedente>Gridwich usa RequestBlobAnalysisCreateDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "analyzerSpecificData": {
            "mediaInfo": {
                  "commandLineOptions": {
                    "Complete": "1",
                    "Output": "JSON"
                  }
            }
        }
    },
    "eventType": "request.blob.analysis.create"
}

Gridwich>Requester usa ResponseBlobAnalysisSuccessSDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "blobMetadata": <Metadata-Dictionary>,
        "analysisResults": <Analysis-Result-Object>
    },
    "eventType": "response.blob.analysis.success"
}

Il analysisResults contenuto dell'oggetto non è specificato. Nel progetto corrente si tratta dell'output MediaInfo.

Il blobMetadata valore è un > dizionario stringa stringa.oggetto di proprietà con valori stringa che rappresentano tutte le coppie nome-valore dei metadati del BLOB specificato.

Come di consueto con Archiviazione di Azure, i nomi degli elementi di metadati devono essere conformi alle regole di denominazione degli identificatori C#. Per altre informazioni, vedere l'API REST SetBlobMetadata di Azure e le regole di denominazione C#.

Il richiedente chiede a Gridwich di copiare un BLOB in una nuova destinazione

Il richiedente>Gridwich usa RequestBlobCopyDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "sourceUri": "StorageURL-string",
        "destinationUri": "StorageURL-string"
    },
    "eventType": "request.blob.copy"
}

Gridwich>Requester usa ResponseBlobCopyScheduledDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "sourceUri": "URL-string",
        "blobMetadata": <Metadata-Dictionary>,
        "destinationUri": "StorageURL-string"
    },
    "eventType": "response.blob.copy.scheduled"
}

Gridwich indica al richiedente che ha creato un BLOB

Gridwich potrebbe aver creato il BLOB da qualsiasi origine, ad esempio un risultato di copia, l'arrivo della posta in arrivo o codificare il risultato.

Gridwich>Requester usa ResponseBlobCreatedSuccessDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "blobMetadata": <Metadata-Dictionary>
    },
    "eventType": "response.blob.created.success"
}

Il richiedente chiede a Gridwich di eliminare un BLOB

Il richiedente>Gridwich usa RequestBlobDeleteDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
    },
    "eventType": "request.blob.delete"
}

Gridwich>Requester usa ResponseBlobDeleteScheduledDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "blobMetadata": <Metadata-Dictionary>
    },
    "eventType": "response.blob.delete.scheduled"
}

Gridwich informa il richiedente che ha eliminato un BLOB

L'eliminazione del BLOB può provenire da qualsiasi origine, ad esempio una richiesta esplicita da un richiedente o da un risultato di operazioni interne.

Gridwich>Requester usa ResponseBlobDeleteSuccessDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string"
    },
    "eventType": "response.blob.delete.success"
}

Il richiedente chiede a Gridwich di restituire un URL di firma di accesso condiviso del contenuto di scadenza

Il richiedente>Gridwich usa RequestBlobSasUrlCreateDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "secToLive": 1200
    },
    "eventType": "request.blob.sas-url.create"
}

Gridwich>Requester usa ResponseBlobSasUrlSuccessDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "sasUrl": "StorageURL-SAS-string"
    },
    "eventType": "response.blob.sas-url.success"
}

Il richiedente chiede a Gridwich di codificare tramite il flusso di lavoro CloudPort

Il richiedente>Gridwich usa RequestCloudPortEncodeCreateDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
          "inputs": [
                {"blobUri": "StorageURL-string" }
          ],
          "outputContainer": "https://<storageaccountname>.blob.core.windows.net/<containername>/",
          "workflowName": "TestWorkflow2",
          "parameters": [ { "prop1": "value1" } ],
           "secToLive": 18000
  },
  "eventType": "request.encode.cloudport.create",
}

Il richiedente chiede a Gridwich di codificare tramite Flip

Il richiedente>Gridwich usa RequestFlipEncodeCreateDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
          "inputs": [
                {"blobUri": "StorageURL-string" }
          ],
          "outputContainer": "StorageURL-string", // of the Storage container
          "factoryName": "gws-dev-flip",
          "profiles": "h264",
          "parameters": [ { "prop1": "value1" } ],
           "secToLive": 18000
      },
      "eventType": "request.encode.flip.create"
}

Esempio di RequestFlipEncodeCreateDTO

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": { "progId": 1234 },
          "inputs": [
            {
                "blobUri": "https://gws-sa1.blob.core.windows.net/Vid0001Container/input.mp4"
            }
          ],
          "outputContainer": "https://gws-sa22out.blob.core.windows.net/Out0004/",
          "factoryName": "gws-dev-flip",
          "profiles": "h264",
          "parameters": [ { "someProperty1": "someValue1" } ],
          "secToLive": 18000
      },
      "eventType": "request.encode.flip.create"
}

Risposta di invio riuscita della richiesta comune dei codificatori Gridwich

Gridwich>Requester usa ResponseEncodeDispatchedDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "encoderContext": <EncoderContext>,
        "workflowJobName": "CloudPort or Flip assigned job name for workflow instance."
    },
    "eventType": "response.encode.<encodername>.dispatched"
}

è <encodername> uno di cloudport o flip.

Messaggi di stato asincroni del codificatore Gridwich

I codificatori Gridwich generano quattro tipi di eventi durante o alla fine della codifica:

  • Pianificati
  • in lavorazione
  • Riuscita
  • Annullati

Un errore di richiesta di codifica genera un evento Gridwich Failure.

Stato di codifica pianificato

Gridwich>Requester usa ResponseEncodeScheduledDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "encoderContext":  <EncoderContext>,
        "workflowJobName": "CloudPort or Flip assigned job name for workflow instance."
    },
    "eventType": "response.encode.<encodername>.scheduled"
}

Elaborazione dello stato di codifica

Gridwich>Requester usa ResponseEncodeProcessingDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "encoderContext": <EncoderContext>,
        "workflowJobName": "CloudPort or Flip assigned job name for workflow instance.",
        "currentStatus": "string",
        "percentComplete": 50,
    },
    "eventType": "response.encode.<encodername>.processing"
}

Esito positivo dello stato di codifica

Gridwich>Requester usa ResponseEncodeSuccessDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,,
        "encoderContext": <EncoderContext>,
        "workflowJobName": "CloudPort or Flip assigned job name for workflow instance.",
        "outputs":[
            { "blobUri": "StorageURL-string" }
        ]
    },
    "eventType": "response.encode.<encodername>.success"
}

Stato di codifica annullato

Gridwich>Requester usa ResponseEncodeCanceledDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "encoderContext": <EncoderContext>,
        "workflowJobName": "CloudPort or Flip assigned job name for workflow instance."
    },
    "eventType": "response.encode.<encodername>.canceled"
}

Il richiedente chiede a Gridwich di modificare il livello di archiviazione di un BLOB

Il richiedente>Gridwich usa RequestBlobTierChangeDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "accessTier": "string",
        "rehydratePriority": "string"
    },
    "eventType": "request.blob.tier.change"
}
  • La accessTier proprietà è Hot, Coolo Archive.
  • La rehydratePriority proprietà è Standard o High.

Gridwich>Requester usa ResponseBlobTierChangeSuccessDTO

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "blobUri": "StorageURL-string",
        "accessTier": "string",
        "rehydratePriority": "string"
    },
    "eventType":"response.blob.tier.success"
}

Il richiedente chiede a Gridwich di creare un contenitore BLOB

La richiesta fornisce il nome dell'account e del contenitore Archiviazione.

Il richiedente>Gridwich usa RequestContainerCreateDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "storageAccountName": "string", // e.g. mySA1
        "containerName": "string"       // e.g. mycontainer
    },
    "eventType": "request.blob.container.create"
}

Gridwich>Requester usa ResponseContainerCreatedSuccessSDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "storageAccountName": "string",
        "containerName": "string"
    },
    "eventType": "response.blob.container.create.success"
}

Il richiedente chiede a Gridwich di eliminare un contenitore BLOB

La richiesta fornisce il nome dell'account e del contenitore Archiviazione.

Il richiedente>Gridwich usa RequestContainerDeleteDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "storageAccountName": "string",
        "containerName": "string"
    },
    "eventType": "request.blob.container.delete"
}

Gridwich>Requester usa ResponseContainerDeleteSuccessDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "storageAccountName": "string",
        "containerName": "string"
    },
    "eventType": "response.blob.container.delete.success"
}

Il richiedente chiede a Gridwich di modificare l'accesso pubblico di un contenitore

La richiesta fornisce il nome del contenitore e un accessType oggetto , BlobBlobContainero None.

Il richiedente>Gridwich usa RequestContainerAccessChangeDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "storageAccountName": "string",
        "containerName": "string",
        "accessType": "string"
    },
    "eventType": "request.blob.container.access.change"
}

Gridwich>Requester usa ResponseContainerAccessChangeSuccessDTO.

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "storageAccountName": "string",
        "containerName": "string",
        "accessType": "string"
    },
    "eventType": "response.blob.container.access.change.success"
}

Il richiedente chiede a Gridwich di ruotare su una nuova chiave di archiviazione

La Rollkey famiglia di eventi è diversa da quella di Gridwich, mentre la richiesta accetta un operationContext valore, nessuno degli eventi di risposta lo include.

Gli eventi di errore non sono del tipo di evento response.failure normale, ma hanno invece un valore di response.rollkey.storage.failuretipo .

Eventi response.rollkey.storage.failure di errore:

  • Non includere alcuna delle normali proprietà dei dati delle informazioni log di registrazione degli eventi di errore.
  • Contiene una proprietà di dati aggiuntiva denominata error che contiene il testo del messaggio di errore. Altri errori di Gridwich contengono il testo nella proprietà dei logEventMessage dati.

Questi punti riflettono lo stato corrente dell'app per la logica di Azure che esegue l'operazione RollKey. La definizione dell'app per la logica si trova nel file infrastructure/terraform/keyroller/main.tf Terraform.

keyName Corrisponde al nome della chiave definito Archiviazione di Azure nell'operazione Get Keys.

Requester>Gridwich

{
    "id": "GUID-string",
    "topic": "Topic-string",
    "subject": "Subject-string",
    "dataVersion": "DataVersion-string",
    "data": {
        "operationContext": <OperationContextObject>,
        "account": "storageAccountName",
        "keyName": "key1"
    },
    "eventType": "request.rollkey.storage"
}

Richiedente Gridwich>

  • Operazione riuscita:

    {
        "id": "GUID-string",
        "topic": "Topic-string",
        "subject": "Subject-string",
        "dataVersion": "DataVersion-string",
        "data": {
            "account": "storageAccountName",
            "keyName": "key1"
        },
        "eventType": "response.rollkey.storage.success"
    }
    
  • Operazione non riuscita:

    {
        "id": "GUID-string",
        "topic": "Topic-string",
        "subject": "Subject-string",
        "dataVersion": "1.0",
        "data": {
           "account": "storageAccountName1",
            "keyName": "key1",
            "error": "error message text"
        },
        "eventType": "response.rollkey.storage.failure"
    }
    

    I risultati degli errori per questa operazione non vengono completati come normali errori di Gridwich.

Passaggi successivi

Documentazione sui prodotti:

Moduli di Microsoft Learn: