Skip to main content
IBM Quantum Platform

Utilisez l'API IBM Cloud Resource Controller pour la gestion des instances

Vous pouvez utiliser l'API REST de l' IBM Cloud® Resource Controller pour récupérer, créer et mettre à jour des instances par programmation.

Tous les points de terminaison de l' Resource Controller exigent que vous vous authentifiiez en transmettant un en-tête appelé Authorization contenant le jeton « bearer ». Consultez le guide de configuration de l'API REST.


Obtenir une instance

Utilisez le GET /v2/resource_instances/{crn} point de terminaison pour obtenir des informations sur une instance spécifique. L' CRN e doit être encodée selon le format « URL » dans le chemin d'accès.

Outre les champs standard de l' Resource Controller, la réponse comprend des champs spécifiques à Quantum, tant parameters dans que dans extensions. extensions stocke les métadonnées normalisées de l'instance, tandis que parameters ne stocke que la dernière demande de modification de l'instance. Par conséquent, vous devriez lire à partir de extensions plutôt que de parameters.

extensions L'objet comprend les champs suivants :

  • instance_limit_seconds — Nombre entier, ou null. La durée maximale d'utilisation de l'instance. Voir « Définir les limites d'allocation des instances ».
  • usage_allocation_seconds — Nombre entier, ou null. Le temps alloué à cette instance, utilisé par le planificateur « fair-share » pour déterminer la priorité dans la file d'attente. Voir « Définir les limites d'allocation des instances ».
  • backends — Tableau de chaînes de caractères. La liste blanche des noms de backends disponibles pour cette instance. ["ANY"] signifie que tous les backends du forfait sont disponibles (c'est le réglage par défaut). [] signifie qu'aucun backend n'est disponible.
Le champ « backends » est peut-être obsolète

Le backends champ de l'objet extensions est peut-être obsolète. Cela peut se produire lorsque le service d'assistance d' IBM Quantum apporte des modifications à votre compte qui ont des répercussions sur les instances. Par exemple, lorsqu'un backend est supprimé d'un compte, cela met à jour l'instance backends , mais cette modification n'est pour l'instant pas encore prise en compte dans l'API Resource Controller.

La solution de contournement actuelle consiste plutôt à utiliser le IBM Quantum API REST du service de calcul avec le point GET /v1/backends de terminaison. (Veillez à définir l'en-tête Service-CRN avec l'adresse CRN de votre instance.)

L' CRN e doit être encodée selon le format « URL » dans le chemin d'accès. Remplacez chaque : par %3A et chaque / par %2F. Par exemple, crn:v1:bluemix:... devient 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>'

Obtenir la liste de toutes les instances

Utilisez le GET /v2/resource_instances point de terminaison pour obtenir la liste de toutes vos instances. Définissez le resource_id paramètre de requête sur b6049020-80f4-11eb-a0f7-e35ec9b4054f pour filtrer les instances de IBM Quantum®.

Si votre compte comporte plusieurs forfaits et que vous souhaitez filtrer par forfait, définissez le resource_plan_id paramètre de requête sur l'une des valeurs suivantes :

Plan
resource_plan_id
Premium7f666d17-7893-47d8-bf9d-2b2389fc4dfc
Flexible53bde9d3-cdbb-46f5-a98f-60ebcadf7260
Paiement à la carte5304b575-3cff-4455-90dc-ae4367762093
Ouvrir850b21a7-71de-4e53-9441-1abdd202f35d

Chaque résultat comprend les mêmes extensions champs que ceux décrits dans la section « Obtenir une instance ».

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>'

Mettre à jour une instance

Utilisez le PATCH /v2/resource_instances/{crn} point de terminaison pour mettre à jour la limite, l'allocation et les backends autorisés pour une instance. L' CRN e doit être encodée selon le format « URL » dans le chemin d'accès.

"Content-Type: application/json"Transmettez un parameters objet JSON dans le corps de la requête, contenant les champs que vous souhaitez modifier, ainsi que l'en-tête. Les champs omis restent inchangés.

  • instance_limit_seconds — Nombre entier, ou null. La durée maximale d'utilisation de l'instance. Voir « Définir les limites d'allocation des instances ».
  • usage_allocation_seconds — Nombre entier, ou null. Le temps alloué à cette instance, utilisé par le planificateur « fair-share » pour déterminer la priorité dans la file d'attente. Voir « Définir les limites d'allocation des instances ». Ne s'applique pas aux instances en mode « Pay-As-You-Go ».
  • backends — Tableau de chaînes de caractères. La liste blanche des noms de backends disponibles pour cette instance. ["ANY"] signifie que tous les backends du forfait sont disponibles. [] signifie qu'aucun backend n'est disponible.
Veillez à toujours inclure un horodatage unique

L'API ignore la requête sans avertissement si parameters celle-ci est identique à la requête précédente. Dans l'objet parameters , veillez à toujours inclure un timestamp champ défini sur l'heure actuelle afin que chaque requête soit considérée comme unique.

La réponse du point de terminaison est similaire à celle obtenue lors de la création d'une instance, notamment en ce qui concerne la manière dont il gère l'objet extensions .

L' CRN e doit être encodée selon le format « URL » dans le chemin d'accès. Remplacez chaque : par %3A et chaque / par %2F. Par exemple, crn:v1:bluemix:... devient 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
    }
}"

Créer une instance

Utilisez le POST /v2/resource_instances point de terminaison pour créer (mettre en service) une nouvelle instance. Transmettez un corps JSON avec l'en-tête "Content-Type: application/json".

Champs requis :

  • name — Un nom lisible par l'utilisateur pour l'instance.
  • target — La région, comme us-east ou eu-de.
  • resource_plan_id — Le plan pour cette instance. Consultez le tableau des identifiants de plan.
  • resource_group — Le groupe de ressources à utiliser.

Vous pouvez également inclure un parameters objet pour définir des valeurs spécifiques à Quantum :

  • instance_limit_seconds — Nombre entier, ou null. La durée maximale d'utilisation de l'instance. Voir « Définir les limites d'allocation des instances ».
  • usage_allocation_seconds — Nombre entier, ou null. Le temps alloué à cette instance, utilisé par le planificateur « fair-share » pour déterminer la priorité dans la file d'attente. Voir « Définir les limites d'allocation des instances ». Ne s'applique pas aux instances en mode « Pay-As-You-Go ».
  • backends — Tableau de chaînes de caractères. La liste blanche des noms de backends disponibles pour cette instance. ["ANY"] signifie que tous les backends du forfait sont disponibles. [] signifie qu'aucun backend n'est disponible.
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
      }
  }'

Configurer l'accès à Qiskit Functions sur une instance

Suivez ces instructions pour configurer l'accès à « Qiskit Functions » sur une instance existante d' IBM Quantum Compute Service à l'aide de l'API IBM Cloud Resource Controller. Suivez les instructions dans l'ordre, car les commandes s'enchaînent les unes après les autres. Par exemple, des variables telles que le jeton et l' URL e sont définies en une seule étape et réutilisées dans les étapes suivantes.

Prérequis

  • Une clé API d' IBM Cloud s (également appelée « jeton »). Si nécessaire, créez votre clé API sur le tableau de bord.
  • L' CRN e de l'instance que vous souhaitez configurer. L' CRN s relatives à l'instance figurent sur votre page « Instances ».

Étape 1 : Obtenir un jeton au porteur

Échangez votre clé API contre un jeton « bearer ». Vous devrez transmettre ce jeton dans l'en-tête d'autorisation de toutes les requêtes adressées au contrôleur de ressources. Exécutez le code suivant pour générer un jeton « 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 réponse comprend un access_token champ, qui correspond à votre jeton « bearer ». Copiez cette valeur.

Étape 2 : Vérifier l'accès

Avant d'effectuer la moindre modification, assurez-vous que votre jeton fonctionne et vérifiez la configuration actuelle de l'instance.

Important

L' CRN e doit être codé manuellement en « URL » dans le chemin d'accès. Remplacez chaque : par %3A et chaque par / %2F. Par exemple, devient 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>'

Une réponse 200 OK confirme que votre jeton est valide. La configuration actuelle de l'instance se trouve dans le champ « extensions » de la réponse. Utilisez ceci à la place des paramètres, qui pourraient être obsolètes.

Étape 3 : Consulter la configuration des fonctions au niveau du compte

Une instance ne peut se voir accorder l'accès qu'aux éléments auxquels le compte a droit. Avant de configurer l'instance, consultez la configuration du compte afin de savoir quelles fonctions, quels modèles commerciaux et quelles autorisations vous pouvez attribuer. Il s'agit de la source de référence pour les valeurs que vous devrez saisir à l'étape 4.

Appelez l'API « Qiskit Runtime » à GET /accounts/{id} l'aide de votre clé API. Il {id} s'agit de l'identifiant de votre compte sans le préfixe a/ . Vous pouvez le trouver à partir de l'instance 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>'

Chaque plan de la réponse comprend un tableau de fonctions et, s'il est configuré, un objet custom_functions . Ces informations précisent le nom exact, le fournisseur, le modèle économique et les autorisations que vous pouvez attribuer à une instance dans le cadre de cette offre.

Note

GET /accounts/{id} indique les montants disponibles pour l'octroi de subventions au niveau du compte. GET /functions (voir « Vérifier le résultat ») indique ce qui a déjà été accordé à une instance spécifique. Utilisez le point de terminaison « account » pour identifier les valeurs valides, et le point de terminaison « functions » pour vérifier le résultat.

Étape 4 : Configurer l'accès aux fonctions

Mettez à jour l'instance afin d'accorder l'accès aux fonctions du catalogue et aux fonctions personnalisées.

Remarques importantes
  • Les valeurs business_model name, provider, et dans les fonctions doivent correspondre exactement aux éléments configurés au niveau du compte (voir l' étape précédente). Les autorisations doivent constituer un sous-ensemble non vide des autorisations dont dispose le compte pour cette fonction. De même, custom_functions.permissions doit être un sous-ensemble non vide des autorisations custom_functions du compte.
  • Ajoutez un horodatage dans les paramètres de chaque requête PATCH. L' Resource Controller e les requêtes PATCH en comparant les paramètres entrants à la dernière valeur qu'il a enregistrée. Si elles correspondent, la requête est discrètement ignorée sans 200 OK atteindre le service. Pour éviter cela, ajoutez une valeur d'horodatage variable.
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"
    ]
  }
}
}'

Une réponse 200 OK indique que l'opération a réussi. La configuration mise à jour apparaît dans le champ « extensions » de la réponse.

Supprimer l'accès aux fonctions

Fonctions du catalogue

Pour supprimer des fonctions de catalogue d'une instance, envoyez une requête PATCH contenant les éléments suivants "functions": null:

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

Définir ( "functions": [] un tableau vide) revient à effacer les fonctions du catalogue. null C'est la forme canonique.

Fonctions personnalisées

Pour supprimer des fonctions personnalisées d'une instance, envoyez une requête PATCH contenant "custom_functions": null:

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

La définition de cette option efface également "custom_functions": {"permissions": []} les fonctions personnalisées. null C'est la forme canonique.

Vérifier le résultat

Pour vérifier que l'instance dispose de la configuration correcte d' Qiskit Functions, utilisez GET /functions l'API Qiskit Runtime à la place de Resource Controller. L'état enregistré de l' Resource Controller peut être obsolète si des modifications au niveau du compte ont mis à jour l'instance en dehors de l' 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 réponse répertorie les fonctions auxquelles l'instance a actuellement accès.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.