Asynchrone Arbeitsanforderungen
In diesem Thema werden asynchrone Arbeitsanforderungen für Vorgänge mit langer Ausführungszeit bei Oracle Cloud Infrastructure-Services beschrieben. Außerdem werden Richtlinien zum Abrufen des Anforderungsstatus und zum Prüfen der Anforderungsantwort zur Filterung nach betroffenen Ressourcen bereitgestellt.
Überblick
API-Aufrufe an Oracle Cloud Infrastructure-Services können Vorgänge mit langer Ausführungszeit starten, die die Clientanforderung nicht abschließen, bevor eine Antwort zurückgegeben wird. In diesen Fällen startet der Service eine asynchrone Arbeitsanforderung, die Transparenz zum Fortschritt von Vorgängen mit langer Ausführungszeit bietet. Die Antwort auf den REST-API-Aufruf enthält eine Arbeitsanforderungs-ID im opc-work-request-id
-Header, mit der Sie den Fortschritt und Status überwachen können. Die Arbeitsanforderung selbst verbleibt in einer Queue, bis der Vorgang abgeschlossen ist.
Sie können den Status der Arbeitsanforderung jederzeit überwachen, indem Sie GetWorkRequest
aufrufen und die Arbeitsanforderungs-ID eingeben.
Einige Oracle Cloud Infrastructure-Services wie Compute und Database unterstützen Arbeitsanforderungen über die Arbeitsanforderungs-API, die den Vorgang GetWorkRequest
enthält.
Einige Services bieten Arbeitsanforderungen, die von der Service-API und nicht von der in diesem Thema beschriebenen API für Arbeitsanforderungen unterstützt werden. Diese Service-APIs umfassen Vorgänge, die ähnlich wie der Vorgang GetWorkRequest
funktionieren, der von der Arbeitsanforderungs-API verwendet wird.
Weitere Einzelheiten finden Sie in der Referenzdokumentation für die Arbeitsanforderungs-API jedes Service. Die jeweiligen Links finden Sie unter Weitere Informationen.
Zwei Features der Anforderungsantwort sind besonders wichtig: der Status der Arbeitsanforderung und eine Liste der Ressourcen, die von der Arbeitsanforderung betroffen sind. Der Status ist wichtig, weil asynchrone Arbeitsanforderungen wissen müssen, wann ein Vorgang abgeschlossen ist, noch ausgeführt wird oder ob er gar nicht erfolgreich war.
Um Informationen zu nicht erfolgreichen Arbeitsanforderungen oder Fehlern abzurufen, stellt jeder Service APIs für das Abrufen von Informationen zu Fehlern und Logs bereit. Links zur API-Referenzdokumentation für jeden Service finden Sie im Abschnitt Weitere Informationen.
Wenn ein Arbeitsanforderungsvorgang sich auf mehrere Ressourcen auswirkt, benötigen Sie zudem eine Liste der Ressourcen, auf die sich eine Arbeitsanforderung auswirkt, zusammen mit dem jeweiligen entityType
- und actionType
-Attribut.
Arbeitsanforderungsstatus
Mit asynchronen Arbeitsanforderungen können Sie den Fortschritt überwachen, indem Sie ein Statusattribut im WorkRequest
-Objekt angeben. Jeder unterstützte Service stellt eine eigene API für das Abrufen des Status bereit, wie in den folgenden Abschnitten aufgeführt.
Es gibt eine ContainerEngineWaiters-Klasse, mit der Sie einen Callback mit der
forWorkRequest
-Methode erstellen können. Mit dieser API können Sie eine Benachrichtigung weiterleiten, wenn sich der Status eines Vorgangs ändert, z.B. von IN_PROGRESS
in COMPLETED
.In der folgenden Tabelle werden Statusattribute aufgeführt, die vom WorkRequest
-Objekt in den jeweiligen Services unterstützt werden.
Service | Statusattribute |
---|---|
Application Performance Monitoring |
|
Autonomous Recovery Service |
|
Big Data-Service |
|
Blockchain-Plattform |
|
Clusterplatzierungsgruppen |
|
Berechnen |
|
Connector Hub |
|
Container Engine for Kubernetes |
|
Contentmanagement |
|
Datenbankmanagement |
|
OCI-Datenbank mit PostgreSQL |
|
Data Catalog |
|
Datenintegration |
|
Datenlabeling |
|
Data Science |
|
Datenbank |
|
Datenbankmigration |
|
DevOps |
|
Full Stack Disaster Recovery |
|
Global verteilte Autonomous Database |
|
GoldenGate |
|
IAM |
|
Integration |
|
Java-Management |
|
Load Balancer |
|
Logging Analytics für LogAnalyticsQueryJobWorkRequest |
|
Logging Analytics für LogAnalyticsStorageWorkRequest |
|
Logging Analytics für LogAnalyticsConfigWorkRequest |
|
Management Agent |
|
Netzwerkfirewall |
|
Objektspeicher |
|
Oracle Cloud Bridge |
|
Oracle Cloud Migrations |
|
OS Management Hub |
|
Prozessautomatisierung |
|
Warteschlange |
|
Resource Manager |
|
Sichere Desks |
|
Service-Mesh |
|
Anforderungsantwort filtern
Gelegentlich müssen Sie wissen, welche Ressourcen von einer bestimmten asynchronen Arbeitsanforderung betroffen sind. Wenn die Anforderungsantwort nur eine oder zwei betroffene Ressourcen umfasst, reicht der Text der Anforderungsantwort wahrscheinlich aus. Wenn sich eine Anforderungsantwort jedoch auf viele Ressourcen auswirkt, müssen Sie die Antwort filtern, um die gewünschten Ressourcen zu identifizieren.
Die Filterung von Ressourcen, die in einer Arbeitsanforderungsantwort aufgeführt werden, basiert auf zwei Attributen des Typs WorkRequestResource
: entityType
und actionType
.
- entityType: Steht für den Ressourcentyp, auf den sich die Arbeitsanforderung auswirkt. Dies ist ein optionales Attribut, jede Ressource kann jedoch nur einen
entityType
-Wert haben. - actionType: Gibt an, wie die angegebene Ressource von dem Vorgang betroffen ist, der mit der Arbeitsanforderung verknüpft ist. Jeder Service gibt eine feste Liste zulässiger
actionType
-Werte an (wird in den folgenden Abschnitten gezeigt).
Um Ressourceninformationen zu einer Arbeitsanforderung abzurufen, rufen Sie GetWorkRequest
auf, und geben Sie die Arbeitsanforderungs-ID ein. Der Aufruf gibt eine Antwort im JSON-Format zurück. Im folgenden Beispiel wird GetWorkRequest
im Object Storage-Service aufgerufen.
{
operationType: "COPY_OBJECT",
status: "IN_PROGRESS",
id: "f54527d6-029b-4221-9046-a811b7686202",
resources: [
{
entityType: "object",
actionType: "READ",
entityUri: "/n/mynamespace/b/backups/o/myobject"
},
{
entityType: "object",
actionType: "WRITTEN",
entityUri: "/n/mynamespace/b/backups/o/copyofmyobject"
},
],
timeAccepted: 2017-10-13T17:23:46.000Z,
timeStarted: 2017-10-13T17:23:52.198Z,
percentComplete: 10.0
}
Verschiedene Services geben geringfügig unterschiedliche Antworten zurück. Weitere Einzelheiten finden Sie in der Referenzdokumentation für die Arbeitsanforderungs-API jedes Service. Die jeweiligen Links finden Sie unter Weitere Informationen.
In der folgenden Tabelle werden die Entitytypen und Aktionstypen aufgeführt, die von Oracle Cloud Infrastructure-Services unterstützt werden.
Servicename | Vorgang | entityType | actionType |
---|---|---|---|
Application Performance Monitoring | apm-domains |
|
|
Autonomous Recovery Service |
ChangeProtectionPolicyCompartment ChangeRecoveryServiceSubnetCompartment |
|
|
Blockchain-Plattform | instance
|
|
|
Clusterplatzierungsgruppen |
|
|
|
Container Engine for Kubernetes |
|
|
|
Contentmanagement | oceInstance |
|
|
Datenbankmanagement |
ChangeDbManagementPrivateEndpointCompartment CreateDbManagementPrivateEndpoint DeleteDbManagementPrivateEndpoint GetDbManagementPrivateEndpoint |
private-endpoints |
|
Datenbankmigration |
|
|
|
OCI-Datenbank mit PostgreSQL | |||
Data Catalog | catalog
|
|
|
Datenintegration | disworkspace
|
|
|
Datenlabeling | datalabelingdataset |
|
|
Data Science |
|
|
|
DevOps |
|
|
|
Full Stack Disaster Recovery |
|
|
|
Global verteilte Autonomous Database |
ChangeShardedDatabaseCompartment |
|
|
GoldenGate |
|
|
|
Integration |
Hinweis: |
instance |
|
Load Balancer | LoadBalancer
|
|
|
Management Agent | DeployPlugins | managementAgent |
|
Netzwerkfirewall |
|
|
|
Object Storage | CopyObject | object
|
|
Oracle Cloud Bridge | ocbworkrequest |
|
|
Oracle Cloud Migrations |
ChangeReplicationScheduleCompartment |
ocmworkrequest |
|
OS Management Hub |
AttachManagedInstancesToLifecycleStage AttachManagedInstancesToManagedInstanceGroup AttachSoftwareSourcesToManagedInstance AttachSoftwareSourcesToManagedInstanceGroup DetachManagedInstancesFromLifecycleStage DetachManagedInstancesFromManagedInstanceGroup DetachSoftwareSourcesFromManagedInstance DisableModuleStreamOnManagedInstance DisableModuleStreamOnManagedInstanceGroup EnableModuleStreamOnManagedInstance EnableModuleStreamOnManagedInstanceGroup InstallModuleStreamProfileOnManagedInstance InstallModuleStreamProfileOnManagedInstanceGroup InstallPackagesOnManagedInstance InstallPackagesOnManagedInstanceGroup InstallWindowsUpdatesOnManagedInstance InstallAllWindowsUpdatesOnManagedInstancesInCompartment InstallWindowsUpdatesOnManagedInstanceGroup ManageModuleStreamsOnManagedInstance ManageModuleStreamsOnManagedInstanceGroup PromoteSoftwareSourceToLifecycleStage RefreshSoftwareOnManagedInstance RemoveModuleStreamProfileFromManagedInstance RemoveModuleStreamProfileFromManagedInstanceGroup RemovePackagesFromManagedInstance RemovePackagesFromManagedInstanceGroup ScheduledJob/RunScheduledJobNow SwitchModuleStreamOnManagedInstance UpdateAllPackagesOnManagedInstanceGroup UpdateAllPackagesOnManagedInstancesInCompartment |
|
|
Prozessautomatisierung | instance |
|
|
Warteschlange | |||
Resource Manager |
|
|
|
Secure Desktops |
|
|
|
Service-Mesh |
CreateVirtualServiceRouteTable UpdateVirtualServiceRouteTable DeleteVirtualServiceRouteTable CreateIngressGatewayRouteTable UpdateIngressGatewayRouteTable |
|
|
Beispiel für Anforderung/Antwort
Im Folgenden sehen Sie eine Sequenz von REST-API-Aufrufen für das Erstellen eines Clusters, was ein allgemeiner Vorgang mit langer Ausführungszeit ist. Der aufrufende Benutzer ruft die Arbeitsanforderungs-ID aus der Antwort auf den ersten POST
-Aufruf ab und fragt dann regelmäßig die WorkRequest
ab, um den Status des Vorgangs zu bestimmen. In der nachfolgenden Anforderungs-/Antwortsequenz wird dieser Workflow dargestellt:
- Der Benutzer gibt einen
CreateCluster
-API-Aufruf aus. - Der Service antwortet mit dem Statuscode 202, was bedeutet, dass die Anforderung akzeptiert wurde, und gibt eine Arbeitsanforderungs-ID im
opc-work-request-id
-Header zurück. - Als Nächstes gibt der Benutzer einen
GET
-Aufruf für die Arbeitsanforderungs-ID aus, um den Status der Arbeitsanforderung abzurufen. - Der Service antwortet mit dem Statuscode 200, der im Antworttext darauf hinweist, dass der
CLUSTER_CREATE
-Vorgang den StatusACCEPTED
hat. - Bei kontinuierlichem Polling wird ein weiterer
GET
-Aufruf für die Arbeitsanforderung angezeigt. - Der Service antwortet mit dem Statuscode 200. Der Antworttext meldet für den Vorgang den Status
SUCCEEDED
.
Schritt 1. Anfänglicher API-Aufruf zum Initiieren eines CLUSTER_CREATE
-Vorgangs
POST https://containerengine.eu-frankfurt-1.oraclecloud.com/20180222/clusters
Accept: application/json
authorization: <Redacted>
content-length: 480
Content-Type: application/json
date: Mon, 02 Jul 2018 18:20:03 GMT
host: containerengine.eu-frankfurt-1.oraclecloud.com
opc-client-info: Oracle-JavaSDK/1.2.42-preview1-SNAPSHOT
opc-request-id: D7A390ED909C47038C438BA3629FB612
User-Agent: Oracle-JavaSDK/1.2.42-preview1-SNAPSHOT (Mac OS X/10.13.5; Java/1.8.0_172; Java HotSpot(TM) 64-Bit Server VM/25.172-b11)
x-content-sha256: S8U8OKQHyTLNViAzgexkjxvF4ctncJJHTjuRfXn0ya4={
"name":"JavaSDK.CRUD",
"compartmentId":"ocid1.compartment.oc1..<unique_ID>",
"vcnId":"ocid1.vcn.oc1.eu-frankfurt-1.<unique_ID>",
"kubernetesVersion":"v1.10.3",
"options":{"serviceLbSubnetIds":["ocid1.subnet.oc1.eu-frankfurt-1.<unique_ID>",
"ocid1.subnet.oc1.eu-frankfurt-1.<unique_ID>"]}}
Schritt 2. Antwort auf den anfänglichen API-Aufruf, der die Arbeitsanforderungs-ID im Opc-Work-Request-Id-Header
enthält
202
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: opc-work-request-id
Content-Length: 0
Date: Mon, 02 Jul 2018 18:20:04 GMT
Opc-Request-Id: D7A390ED909C47038C438BA3629FB612/33EEDCAAB2E84508B34AA75CD0FD86F4/8261D1CC89814E9BB934440A1F43DA09
Opc-Work-Request-Id: ocid1.clustersworkrequest.oc1.eu-frankfurt-1.exampleuniqueID
Uri: /20180222/clusters
Vary: Accept-Encoding
X-Rate-Limit-Duration: 1
X-Rate-Limit-Limit: 16.70
X-Rate-Limit-Request-Forwarded-For: 10.237.10.0, 10.237.9.51
X-Rate-Limit-Request-Remote-Addr: 10.237.9.51:53077
Schritt 3. Da es sich um einen Vorgang mit langer Ausführungszeit handelt, fragt der Benutzer die Arbeitsanforderung regelmäßig mit einem GET
-Aufruf ab, um den Status zu bestimmen.
GET https://containerengine.eu-frankfurt-1.oraclecloud.com/20180222/workRequests/<clusters_work_request_OCID>
Accept: application/json
authorization: <Redacted>
date: Mon, 02 Jul 2018 18:20:04 GMT
host: containerengine.eu-frankfurt-1.oraclecloud.com
opc-client-info: Oracle-JavaSDK/1.2.42-preview1-SNAPSHOT
opc-request-id: E8F20DAC443346B3B0EA599F367EE294
User-Agent: Oracle-JavaSDK/1.2.42-preview1-SNAPSHOT (Mac OS X/10.13.5; Java/1.8.0_172; Java HotSpot(TM) 64-Bit Server VM/25.172-b11)
Schritt 4. Der GET
-Aufruf gibt die folgende Antwort zurück, die im Antworttext darauf hinweist, dass der CLUSTER_CREATE
-Vorgang den Status ACCEPTED
hat.
200
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: opc-work-request-id
Content-Length: 717
Content-Type: application/json
Date: Mon, 02 Jul 2018 18:20:05 GMT
Etag: 56a41efaf33d81a54933495ee910c24d7bce7a83adf18810f95e07bdd2055805
Opc-Request-Id: E8F20DAC443346B3B0EA599F367EE294/8B19C9FC3B4442CEA14685D1973D0856/0BA60B0711764DE4A4373071632708C7
Retry-After: 30
Uri: /20180222/workRequests/_id_
Vary: Accept-Encoding
X-Rate-Limit-Duration: 1
X-Rate-Limit-Limit: 16.70
X-Rate-Limit-Request-Forwarded-For: 10.237.10.0, 10.237.9.51
X-Rate-Limit-Request-Remote-Addr: 10.237.9.51:43533
{
"id": "ocid1.clustersworkrequest.oc1.eu-frankfurt-1.exampleuniqueID",
"operationType": "CLUSTER_CREATE",
"status": "ACCEPTED",
"compartmentId": "ocid1.compartment.oc1..exampleuniqueID",
"resources": [
{
"actionType": "IN_PROGRESS",
"entityType": "cluster",
"identifier": "ocid1.cluster.oc1.eu-frankfurt-1.exampleuniqueID",
"entityUri": "/clusters/ocid1.cluster.oc1.eu-frankfurt-1.exampleuniqueID"
}
],
"timeAccepted": "2018-07-02T18:20:05Z",
"timeStarted": null,
"timeFinished": null
}
Schritt 5. Der Vorgang wird fortgesetzt, und der Benutzer fragt die Arbeitsanforderung weiter mit der GET
-Methode ab.
GET https://containerengine.eu-frankfurt-1.oraclecloud.com/20180222/workRequests/<clusters_work_request_OCID>
Accept: application/json
authorization: <Redacted>
date: Mon, 02 Jul 2018 18:24:13 GMT
host: containerengine.eu-frankfurt-1.oraclecloud.com
opc-client-info: Oracle-JavaSDK/1.2.42-preview1-SNAPSHOT
opc-request-id: 64595B97E39A471A886DA29966BB6B1D
User-Agent: Oracle-JavaSDK/1.2.42-preview1-SNAPSHOT (Mac OS X/10.13.5; Java/1.8.0_172; Java HotSpot(TM) 64-Bit Server VM/25.172-b11)
Schritt 6. Der letzte GET
-Aufruf hat die folgende Antwort erzeugt, was anzeigt, dass der Vorgang abgeschlossen ist. Beachten Sie, dass der entityType
"cluster" und der actionType
"CREATED" lautet.
200
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: opc-work-request-id
Content-Length: 750
Content-Type: application/json
Date: Mon, 02 Jul 2018 18:24:14 GMT
Etag: 023d2a8ccb6d893fa8c875f64652353f21d22607825f49eeeb15b5394ae24918
Opc-Request-Id: 64595B97E39A471A886DA29966BB6B1D/3A81140991C94794AF365016E31DBE82/6245FBD8C25842B6BDF15187EA6ADB21
Uri: /20180222/workRequests/_id_
Vary: Accept-Encoding
X-Rate-Limit-Duration: 1
X-Rate-Limit-Limit: 16.70
X-Rate-Limit-Request-Forwarded-For: 10.237.3.0, 10.237.40.183
X-Rate-Limit-Request-Remote-Addr: 10.237.40.183:55856
{
"id": "ocid1.clustersworkrequest.oc1.eu-frankfurt-1.exampleuniqueID",
"operationType": "CLUSTER_CREATE",
"status": "SUCCEEDED",
"compartmentId": "ocid1.compartment.oc1..exampleuniqueID",
"resources": [
{
"actionType": "CREATED",
"entityType": "cluster",
"identifier": "ocid1.cluster.oc1.eu-frankfurt-1.exampleuniqueID",
"entityUri": "/clusters/ocid1.cluster.oc1.eu-frankfurt-1.exampleuniqueID"
}
],
"timeAccepted": "2018-07-02T18:20:05Z",
"timeStarted": "2018-07-02T18:20:10Z",
"timeFinished": "2018-07-02T18:24:01Z"
}
Weitere Informationen
- Arbeitsanforderungs-API für Application Performance Monitoring
- Arbeitsanforderungs-API für Autonomous Recovery Service
- Arbeitsanforderungs-API für Bastion
- Arbeitsanforderungen von Blockchain Platform
- Arbeitsanforderungs-API für Cloud Advisor
- Arbeitsanforderungs-API für Clusterplatzierungsgruppen
- Arbeitsanforderungs-API für Compute
-
Connector Hub:
- Arbeitsanforderungs-API für Container Engine for Kubernetes
- Arbeitsanforderungs-API für Containerinstanzen
- Arbeitsanforderungs-API für Content Management
-
Data Catalog:
- Arbeitsanforderungs-API für Data Integration
-
Data Labeling:
-
Data Science-:
- Arbeitsanforderungs-API für Database
- Arbeitsanforderungs-API für Datenbankmanagement
- Arbeitsanforderungs-API für Database Migration
- Arbeitsanforderungs-API für Datenbanktools
- OCI Database mit Arbeitsanforderungs-API PostgreSQL
- Arbeitsanforderungs-API für DevOps
- Arbeitsanforderungs-API für Full Stack Disaster Recovery
- Global verteilte Autonomous Database-Arbeitsanforderungs-API
- Arbeitsanforderungs-API für GoldenGate
-
IAM:
- Arbeitsanforderungs-API für Integration
- Arbeitsanforderungs-API für Java Management
-
Load Balancer:
- Arbeitsanforderungs-API für Logging Analytics
- Arbeitsanforderungs-API für Management Agent
- HeatWave-Arbeitsanforderungs-API
- Arbeitsanforderungs-API für Netzwerkfirewall
-
Object Storage:
- Arbeitsanforderungs-API für Oracle Cloud Bridge
- Arbeitsanforderungs-API für Oracle Cloud Migrations
- OS Management Hub-Arbeitsanforderungs-API
- Arbeitsanforderungs-API für Process Automation
- Arbeitsanforderungs-API für Queue
- Arbeitsanforderungs-API für Resource Manager
- Arbeitsanforderungs-API für sichere Desktops
- Arbeitsanforderungs-API für Service Mesh
- Arbeitsanforderungs-API für Stackmonitoring
- Arbeitsanforderungs-API für Vision
- Visual Builder Studio: WorkRequest-API
- Arbeitsanforderungs-API für Vulnerability Scanning