Skip to main content
IBM Quantum Platform

Utilizza l'API IBM Cloud Resource Controller per la gestione delle istanze

È possibile utilizzare l'API REST di IBM Cloud® Resource Controller per recuperare, creare e aggiornare le istanze in modo programmatico.

Tutti gli endpoint Resource Controller richiedono l'autenticazione tramite l'invio di un'intestazione denominata Authorization con il token bearer. Consultare la guida alla configurazione dell'API REST.


Ottieni un'istanza

Utilizza GET /v2/resource_instances/{crn} l'endpoint per ottenere informazioni su una specifica istanza. L'CRN e deve essere codificato con l'URL nel percorso.

Oltre ai campi standard di Resource Controller, la risposta include campi specifici per la meccanica quantistica sia parameters in che in extensions. extensions memorizza i metadati normalizzati dell'istanza, mentre parameters memorizza solo la richiesta più recente di modifica dell'istanza. Pertanto, dovresti leggere da extensions anziché da parameters.

extensions L'oggetto include i seguenti campi:

  • instance_limit_seconds — Numero intero, oppure null. Il limite di tempo di utilizzo dell'istanza. VediImpostazione dei limiti di allocazione delle istanze.
  • usage_allocation_seconds — Numero intero, oppure null. Il tempo assegnato a questa istanza, utilizzato dallo scheduler fair-share per determinare la priorità nella coda. Vedi Impostazione dei limiti di allocazione delle istanze.
  • backends — Array di stringhe. L'elenco dei nomi dei backend autorizzati disponibili per questa istanza. ["ANY"] significa che tutti i backend inclusi nel piano sono disponibili (impostazione predefinita). [] significa che non sono disponibili backend.
Il campo backend potrebbe non essere aggiornato

Il backends campo nell'oggetto extensions potrebbe non essere aggiornato. Ciò può verificarsi quando il supporto di IBM Quantum apporta modifiche al tuo account che hanno ripercussioni sulle istanze. Ad esempio, quando un backend viene rimosso da un account, l'istanza viene aggiornata di backends conseguenza, ma tale modifica non è ancora visibile nell'API Resource Controller.

La soluzione alternativa attuale consiste invece nell'utilizzare il IBM Quantum API REST del servizio di elaborazione con l'endpoint GET /v1/backends. (Assicurati di impostare l'intestazione Service-CRN indicando l'CRN della tua istanza.)

L' CRN e deve essere codificato con l' URL nel percorso. Sostituisci ogni : con %3A e ogni / con %2F. Ad esempio, crn:v1:bluemix:... diventa crn%3Av1%3Abluemix%3A....

curl \
  --request GET \
  --url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>'

Ottieni un elenco di tutte le istanze

Utilizza GET /v2/resource_instances l'endpoint per ottenere un elenco di tutte le tue istanze. Imposta il resource_id parametro di query su b6049020-80f4-11eb-a0f7-e35ec9b4054f per filtrare le istanze di IBM Quantum®.

Se il tuo account dispone di più piani e desideri filtrare i risultati in base al piano, imposta il resource_plan_id parametro di query su uno dei seguenti valori:

Pianifica
resource_plan_id
Premium7f666d17-7893-47d8-bf9d-2b2389fc4dfc
Flessibile53bde9d3-cdbb-46f5-a98f-60ebcadf7260
Pagamento a consumo5304b575-3cff-4455-90dc-ae4367762093
Apri850b21a7-71de-4e53-9441-1abdd202f35d

Ogni risultato include gli stessi extensions campi descritti nella sezione Ottenere un'istanza.

curl \
  --request GET \
  --url 'https://resource-controller.cloud.ibm.com/v2/resource_instances?resource_id=b6049020-80f4-11eb-a0f7-e35ec9b4054f' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>'

Aggiornare un'istanza

Utilizza l'endpoint PATCH /v2/resource_instances/{crn} per aggiornare il limite, l'allocazione e i backend consentiti per un'istanza. L'CRN e deve essere codificato con l'URL nel percorso.

"Content-Type: application/json" Inserisci nel corpo della richiesta un parameters oggetto JSON contenente i campi che desideri modificare, insieme all'intestazione. I campi omessi rimangono invariati.

  • instance_limit_seconds — Numero intero, oppure null. Il limite di tempo di utilizzo dell'istanza. VediImpostazione dei limiti di allocazione delle istanze.
  • usage_allocation_seconds — Numero intero, oppure null. Il tempo assegnato a questa istanza, utilizzato dallo scheduler fair-share per determinare la priorità nella coda. Vedi Impostazione dei limiti di allocazione delle istanze . Non applicabile alle istanze Pay-As-You-Go.
  • backends — Array di stringhe. L'elenco dei nomi dei backend autorizzati disponibili per questa istanza. ["ANY"] significa che tutti i backend inclusi nel piano sono disponibili. [] significa che non sono disponibili backend.
Includere sempre un timestamp univoco

L'API ignora silenziosamente la richiesta se parameters questa è identica a quella precedente. Nell'oggetto parameters, includere sempre un timestamp campo impostato sull'ora corrente, in modo che ogni richiesta venga considerata unica.

La risposta dell'endpoint è simile a quella che si ottiene quando si recupera un'istanza, compreso il modo in cui gestisce l'oggetto extensions.

L' CRN e deve essere codificato con l' URL nel percorso. Sostituisci ogni : con %3A e ogni / con %2F. Ad esempio, crn:v1:bluemix:... diventa crn%3Av1%3Abluemix%3A....

curl \
--request PATCH \
--url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
--header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
--header 'Content-Type: application/json' \
--data "{
    \"parameters\": {
        \"timestamp\": \"$(date -u +"%Y-%m-%dT%H:%M:%SZ")\",
        \"usage_allocation_seconds\": 220
    }
}"

Crea una nuova istanza

Utilizza POST /v2/resource_instances l'endpoint per creare (provisionare) una nuova istanza. Invia un corpo JSON con l'intestazione "Content-Type: application/json".

Campi obbligatori:

  • name — Un nome comprensibile per l'istanza.
  • target — La regione, ad esempio us-east o eu-de.
  • resource_plan_id — Il piano per questa situazione. Consultare la tabella degli ID dei piani.
  • resource_group — Il gruppo di risorse da utilizzare.

È inoltre possibile includere un parameters oggetto per impostare valori specifici di Quantum:

  • instance_limit_seconds — Numero intero, oppure null. Il limite di tempo di utilizzo dell'istanza. VediImpostazione dei limiti di allocazione delle istanze.
  • usage_allocation_seconds — Numero intero, oppure null. Il tempo assegnato a questa istanza, utilizzato dallo scheduler fair-share per determinare la priorità nella coda. Vedi Impostazione dei limiti di allocazione delle istanze . Non applicabile alle istanze Pay-As-You-Go.
  • backends — Array di stringhe. L'elenco dei nomi dei backend autorizzati disponibili per questa istanza. ["ANY"] significa che tutti i backend inclusi nel piano sono disponibili. [] significa che non sono disponibili backend.
curl \
  --request POST \
  --url 'https://resource-controller.cloud.ibm.com/v2/resource_instances' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
      "name": "my-new-instance",
      "target": "us-east",
      "resource_plan_id": "7f666d17-7893-47d8-bf9d-2b2389fc4dfc",
      "resource_group": "<YOUR_RESOURCE_GROUP_ID>",
      "parameters": {
          "instance_limit_seconds": 300,
          "usage_allocation_seconds": 220
      }
  }'

Configurare l'accesso a Qiskit Functions su un'istanza

Seguire queste istruzioni per configurare l'accesso a Qiskit Functions su un'istanza esistente di IBM Quantum Compute Service utilizzando l'API IBM Cloud Resource Controller. Segui le istruzioni in ordine, poiché i comandi si basano l'uno sull'altro. Ad esempio, variabili come il token e l’ URL e vengono impostate in una fase e riutilizzate nelle fasi successive.

Prerequisiti

  • Una chiave API di IBM Cloud (chiamata anche “token”). Se necessario, crea la tua chiave API nella dashboard.
  • L' CRN e dell'istanza che si desidera configurare. L' CRN e dell'istanza è riportata nella pagina " Istanze ".

Passaggio 1: Ottenere un token al portatore

Scambia la tua chiave API con un token bearer. Dovrai includere questo token nell'intestazione di autorizzazione di tutte le richieste inviate al controller delle risorse. Esegui il codice seguente per generare un token bearer:

curl --request POST \
--url 'https://iam.cloud.ibm.com/identity/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'apikey=<YOUR_API_KEY>&grant_type=urn%3Aibm%3Aparams%3Aoauth%3Agrant-type%3Aapikey'
--silent | jq .

La risposta include un access_token campo, che rappresenta il tuo token bearer. Copia questo valore.

Fase 2: Verifica dell'accesso

Prima di apportare qualsiasi modifica, verifica che il tuo token funzioni e controlla la configurazione corrente dell'istanza.

Importante

Il percorso " CRN " deve essere specificato manualmente nel percorso con il formato " URL ". Sostituisci ogni : con %3A e ogni con / %2F. Ad esempio, diventa crn:v1:bluemix:... crn%3Av1%3Abluemix%3A....

curl --request GET \
--url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
--header 'Authorization: Bearer <YOUR_BEARER_TOKEN>'

Una risposta 200 OK conferma che il tuo token è valido. La configurazione corrente dell'istanza è riportata nel campo "extensions" della risposta. Utilizza questo al posto dei parametri, che potrebbero non essere aggiornati.

Fase 3: Verificare la configurazione delle funzioni a livello di account

A un'istanza può essere concesso l'accesso solo a ciò a cui l'account ha diritto. Prima di configurare l'istanza, consulta la configurazione dell'account per verificare quali funzioni, modelli di business e autorizzazioni è possibile concedere. Questa è la fonte attendibile dei valori che invierai al Passo 4.

Effettua una chiamata GET /accounts/{id} all'API di Qiskit Runtime utilizzando la tua chiave API. Il {id} è l'ID del tuo account senza il prefisso a/ . È possibile trovarlo nell'istanza CRN (crn:v1:bluemix:public:quantum-computing:...:a/<ACCOUNT_ID>:...).

curl --request GET \
--url 'https://quantum.cloud.ibm.com/api/v1/accounts/<ACCOUNT_ID>' \
--header 'Authorization: apikey <YOUR_API_KEY>'

Ogni piano nella risposta include un array di funzioni e, se configurato, un oggetto custom_functions . Qui sono riportati il nome esatto, il fornitore, il modello di business e i valori delle autorizzazioni che è possibile concedere a un'istanza nell'ambito di quel piano.

Note

GET /accounts/{id} mostra le risorse disponibili per la concessione a livello di conto. GET /functions (vedi "Verifica del risultato ") mostra ciò che è già stato concesso a una specifica istanza. Utilizza l'endpoint dell'account per individuare i valori validi e l'endpoint delle funzioni per confermare il risultato.

Fase 4: Configurazione dell'accesso alle funzioni

Aggiorna l'istanza per concedere l'accesso alle funzioni del catalogo e alle funzioni personalizzate.

Note importanti
  • I valori business_model name, provider, e nelle funzioni devono corrispondere esattamente alle voci configurate a livello di account (vedere il passaggio precedente ). Le autorizzazioni devono costituire un sottoinsieme non vuoto delle autorizzazioni dell'account per quella funzione. Analogamente, custom_functions.permissions deve essere un sottoinsieme non vuoto delle autorizzazioni custom_functions dell’account.
  • Includere un timestamp nei parametri di ogni richiesta PATCH. L' Resource Controller a le richieste PATCH confrontando i parametri in entrata con l'ultimo valore memorizzato. Se corrispondono, la richiesta viene ignorata in modo silenzioso 200 OK senza raggiungere il servizio. Per evitare che ciò accada, includere un valore di timestamp variabile.
curl --request PATCH \
--url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
--header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"parameters": {
  "timestamp": "2026-06-30T00:00:00Z",
  "functions": [
    {
      "name": "<FUNCTION_NAME>",
      "provider": "<PROVIDER>",
      "business_model": "<BUSINESS_MODEL>",
      "permissions": [
        "function.read",
        "function.run",
        "function-files.read",
        "function-files.write"
      ]
    }
  ],
  "custom_functions": {
    "permissions": [
      "function-custom.write",
      "function-custom.run"
    ]
  }
}
}'

Una risposta 200 OK indica che l'operazione è andata a buon fine. La configurazione aggiornata viene visualizzata nel campo delle estensioni della risposta.

Rimuovi l'accesso alle funzioni

Per rimuovere le funzioni del catalogo da un'istanza, inviare un PATCH con "functions": null:

--data '{
"parameters": {
"timestamp": "2026-06-30T00:00:01Z",
"functions": null
}
}'

L'impostazione di ( "functions": [] un array vuoto) ha l'effetto equivalente a azzerare le funzioni del catalogo. null è la forma canonica.

Personalizzazione delle funzioni

Per rimuovere le funzioni personalizzate da un'istanza, inviare una richiesta PATCH con "custom_functions": null:

--data '{
"parameters": {
"timestamp": "2026-06-30T00:00:02Z",
"custom_functions": null
}
}'

L'impostazione cancella, in modo equivalente "custom_functions": {"permissions": []} , le funzioni personalizzate. null è la forma canonica.

Verifica il risultato

Per verificare che l'istanza disponga della corretta configurazione di Qiskit Functions, utilizzare GET /functions l'API Qiskit Runtime al posto di Resource Controller. Lo stato memorizzato dell' Resource Controller potrebbe non essere aggiornato se alcune modifiche a livello di account hanno aggiornato l'istanza al di fuori dell' Resource Controller.

curl --request GET \
--url 'https://quantum.cloud.ibm.com/api/v1/functions' \
--header 'Authorization: apikey <YOUR_API_KEY>' \
--header 'Service-CRN: <YOUR_INSTANCE_CRN>'

La risposta elenca le funzioni a cui l'istanza ha attualmente accesso.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.