Skip to main content
IBM Quantum Platform

인스턴스 관리를 위해 IBM Cloud Resource Controller API를 사용하세요

IBM Cloud® ( Resource Controller ) REST API를 사용하여 프로그래밍 방식으로 인스턴스를 조회, 생성 및 업데이트할 수 있습니다.

모든 Resource Controller 엔드포인트에서는 베어러 토큰이 포함된 Authorization 헤더를 전달하여 인증해야 합니다. REST API 설정 가이드를 참조하십시오.


인스턴스 생성하기

특정 인스턴스에 대한 정보를 가져오려면 해당 GET /v2/resource_instances/{crn} 엔드포인트를 사용하십시오. CRN 는 경로에서 URL -encoded 형식으로 지정되어야 합니다.

extensions표준 Resource Controller 필드 외에도, 응답에는 및 모두에 parameters 양자 관련 필드가 포함되어 있습니다. extensions 인스턴스의 정규화된 메타데이터를 저장하는 반면 parameters , 는 인스턴스를 수정하기 위한 가장 최근의 요청만 저장합니다. parameters따라서 에서 읽어야 하며, 에서 extensions 읽으면 안 됩니다.

extensions 객체에는 다음과 같은 필드가 포함되어 있습니다:

  • instance_limit_seconds — 정수, 또는 null. 인스턴스의 사용 시간 제한. “인스턴스 할당 한도 설정”을 참조하십시오.
  • usage_allocation_seconds — 정수, 또는 null. 이 인스턴스에 할당된 시간으로, 페어-셰어 스케줄러가 큐 우선순위를 결정하는 데 사용됩니다. “인스턴스 할당 한도 설정”을 참조하십시오.
  • backends — 문자열 배열. 이 인스턴스에서 사용할 수 있는 백엔드 이름의 허용 목록입니다. ["ANY"] 이는 해당 요금제에 포함된 모든 백엔드를 사용할 수 있음을 의미합니다(기본 설정). [] 이는 사용 가능한 백엔드가 없다는 뜻입니다.
'backends' 필드의 내용이 오래된 것일 수 있습니다

객체의 extensions 해당 backends 필드가 오래된 정보일 수 있습니다. IBM Quantum 지원팀이 인스턴스에 영향을 미치는 방식으로 귀하의 계정을 변경할 때 이러한 현상이 발생할 수 있습니다. 예를 들어, 계정에서 백엔드가 제거되면 해당 인스턴스에 대한 정보가 backends 업데이트되지만, 현재 그 변경 사항은 Resource Controller API에는 아직 반영되지 않았습니다.

대신, 현재로서는 IBM Quantum GET /v1/backends 엔드포인트를 사용하여 Compute Service REST API를 호출하는 것이 임시 해결책입니다. ( Service-CRN 헤더를 해당 인스턴스의 CRN 으로 설정했는지 확인하십시오.)

CRN 는 경로에서 URL -encoded 형식으로 지정되어야 합니다. %2F: 을 로 %3A , 각 / 을 로 바꾸십시오. crn%3Av1%3Abluemix%3A...예를 들어, crn:v1:bluemix:... 는 가 됩니다.

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

모든 인스턴스 목록 가져오기

GET /v2/resource_instances 엔드포인트를 사용하여 모든 인스턴스 목록을 가져오세요. 쿼리 매개변수를 resource_idb6049020-80f4-11eb-a0f7-e35ec9b4054f 설정하여 IBM Quantum® 인스턴스로 필터링하십시오.

계정에 여러 요금제가 있고 요금제별로 필터링하려면 쿼리 resource_plan_id 매개변수를 다음 값 중 하나로 설정하세요:

계획
resource_plan_id
프리미엄7f666d17-7893-47d8-bf9d-2b2389fc4dfc
플렉스53bde9d3-cdbb-46f5-a98f-60ebcadf7260
종량과금제5304b575-3cff-4455-90dc-ae4367762093
열기850b21a7-71de-4e53-9441-1abdd202f35d

각 결과에는 ‘인스턴스 가져오기’ 섹션에 설명된 것과 동일한 extensions 필드가 포함됩니다.

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

인스턴스 업데이트

PATCH /v2/resource_instances/{crn} 엔드포인트를 사용하여 인스턴스의 제한, 할당량 및 허용된 백엔드를 업데이트하십시오. CRN 는 경로에서 URL -encoded 형식으로 지정되어야 합니다.

"Content-Type: application/json"변경하려는 필드가 포함된 JSON 객체를 parameters 헤더와 함께 요청 본문에 전달하십시오. 생략된 필드는 변경되지 않은 상태로 유지됩니다.

  • instance_limit_seconds — 정수, 또는 null. 인스턴스의 사용 시간 제한. “인스턴스 할당 한도 설정”을 참조하십시오.
  • usage_allocation_seconds — 정수, 또는 null. 이 인스턴스에 할당된 시간으로, 페어-셰어 스케줄러가 큐 우선순위를 결정하는 데 사용됩니다. “인스턴스 할당 한도 설정”을 참조하십시오. Pay-As-You-Go 인스턴스에는 적용되지 않습니다.
  • backends — 문자열 배열. 이 인스턴스에서 사용할 수 있는 백엔드 이름의 허용 목록입니다. ["ANY"] 이는 해당 요금제에 포함된 모든 백엔드를 이용할 수 있음을 의미합니다. [] 이는 사용 가능한 백엔드가 없다는 뜻입니다.
항상 고유한 타임스탬프를 포함해야 합니다

이 요청이 이전 요청과 동일할 경우 parameters , API는 아무런 오류 메시지 없이 해당 요청을 무시합니다. 객체에는 parameters 각 요청이 고유한 것으로 처리될 수 있도록 항상 현재 시각으로 설정된 필드를 timestamp 포함시켜야 합니다.

엔드포인트의 응답은 인스턴스를 가져오는 것과 유사하며, 객체를 extensions 처리하는 방식도 마찬가지입니다.

CRN 는 경로에서 URL -encoded 형식으로 지정되어야 합니다. %2F: 을 로 %3A , 각 / 을 로 바꾸십시오. crn%3Av1%3Abluemix%3A...예를 들어, crn:v1:bluemix:... 는 가 됩니다.

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
    }
}"

새 인스턴스 작성

POST /v2/resource_instances 엔드포인트를 사용하여 새 인스턴스를 생성(프로비저닝)하십시오. "Content-Type: application/json"헤더와 함께 JSON 본문을 전달합니다.

필수 필드:

  • name — 인스턴스에 대한 사람이 읽기 쉬운 이름.
  • eu-de``target — 나 와 us-east 같은 지역.
  • resource_plan_id — 이번 사례에 대한 계획. 계획 ID 표 를 참조하십시오.
  • resource_group — 사용할 리소스 그룹.

또한 객체를 parameters 포함하여 quantum에 특화된 값을 설정할 수도 있습니다:

  • instance_limit_seconds — 정수, 또는 null. 인스턴스의 사용 시간 제한. “인스턴스 할당 한도 설정”을 참조하십시오.
  • usage_allocation_seconds — 정수, 또는 null. 이 인스턴스에 할당된 시간으로, 페어-셰어 스케줄러가 큐 우선순위를 결정하는 데 사용됩니다. “인스턴스 할당 한도 설정”을 참조하십시오. Pay-As-You-Go 인스턴스에는 적용되지 않습니다.
  • backends — 문자열 배열. 이 인스턴스에서 사용할 수 있는 백엔드 이름의 허용 목록입니다. ["ANY"] 이는 해당 요금제에 포함된 모든 백엔드를 이용할 수 있음을 의미합니다. [] 이는 사용 가능한 백엔드가 없다는 뜻입니다.
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
      }
  }'

인스턴스에서 Qiskit Functions 액세스 구성하기

이 지침을 따라 IBM Cloud Resource Controller API를 사용하여 기존 ‘ IBM Quantum Compute ’ 서비스 인스턴스에서 ‘ Qiskit Functions ’에 대한 액세스 권한을 구성하십시오. 명령어들은 서로 연결되어 있으므로, 순서대로 지침을 따르십시오. 예를 들어, ‘token’이나 ‘ URL ’과 같은 변수는 한 단계에서 설정된 후 이후 단계에서 재사용됩니다.

전제조건

  • IBM Cloud API 키(토큰이라고도 함). 필요한 경우 대시보드 에서 API 키를 생성하세요.
  • 구성하려는 인스턴스의 CRN. 인스턴스의 CRN 는 ‘인스턴스’ 페이지에 표시됩니다.

1단계: 베어러 토큰 획득하기

API 키를 베어러 토큰으로 교환하세요. 이 토큰을 모든 리소스 컨트롤러 요청의 인증 헤더에 포함시켜야 합니다. 베어러 토큰을 생성하려면 다음 코드를 실행하세요:

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 .

이 응답에는 베어러 토큰인 access_token 필드가 포함되어 있습니다. 이 값을 복사하세요.

2단계: 액세스 확인

변경 사항을 적용하기 전에 토큰이 정상적으로 작동하는지 확인하고 현재 인스턴스 구성을 점검하십시오.

중요

CRN 는 경로에 수동으로 URL 형식으로 인코딩되어야 합니다. 각 을 로 :``%3A , 각 을 / 로 바꾸십시오 %2F. 예를 들어, 는 가 됩니다 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>'

200 OK 응답을 통해 귀하의 토큰이 유효한 것으로 확인됩니다. 현재 인스턴스 구성은 응답의 ‘extensions’ 필드에 포함되어 있습니다. 오래되어 정확하지 않을 수 있는 매개변수 대신 이것을 사용하세요.

3단계: 계정 수준 함수 구성을 확인합니다

인스턴스에는 해당 계정이 권한을 가진 항목에 대해서만 액세스 권한이 부여될 수 있습니다. 인스턴스를 구성하기 전에, 해당 계정의 구성 정보를 확인하여 어떤 기능, 비즈니스 모델 및 권한을 부여할 수 있는지 파악하십시오. 이것이 4단계에서 전송하게 될 값에 대한 신뢰할 수 있는 정보원입니다.

API 키를 사용하여 Qiskit Runtime API를 GET /accounts/{id} 호출하세요. 는 a/ 접두사 를 제외한 귀하의 계정 ID입니다 {id} . 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>'

응답의 각 플랜에는 함수 배열과, 구성되어 있는 경우 custom_functions 객체가 포함됩니다. 여기에는 해당 요금제 하에서 인스턴스에 부여할 수 있는 정확한 이름, 제공업체, 비즈니스 모델 및 권한 값이 나열되어 있습니다.

Note

GET /accounts/{id} 계정 단위로 부여할 수 있는 항목을 보여줍니다. GET /functions ( ‘결과 확인’ 참조)에서는 특정 인스턴스에 이미 부여된 권한을 보여줍니다. 계정 엔드포인트를 사용하여 유효한 값을 확인하고, 함수 엔드포인트를 사용하여 결과를 확인하십시오.

4단계: 함수 액세스 구성

인스턴스를 업데이트하여 카탈로그 함수 및 사용자 정의 함수에 대한 액세스 권한을 부여하십시오.

중요한 참고사항
  • 함수 내의 name, provider, 및 business_model 값은 계정 수준에서 구성된 항목과 정확히 일치해야 합니다( 이전 단계 참조). 권한은 해당 기능에 대해 계정이 가진 권한 중 비어 있지 않은 부분집합이어야 합니다. 마찬가지로, 는 해당 계정의 권한 custom_functions 중 비어 있지 않은 부분집합이어야 합니다 custom_functions.permissions .
  • 모든 PATCH 요청의 매개변수에 타임스탬프를 포함하십시오. Resource Controller 는 수신된 매개변수를 마지막으로 저장된 값과 비교하여 PATCH 요청의 중복을 제거합니다. 일치할 경우, 요청은 서비스에 도달하지 200 OK 못한 채 아무런 알림 없이 무시됩니다. 이를 방지하려면 변경되는 타임스탬프 값을 포함시키세요.
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"
    ]
  }
}
}'

200 OK 응답이 표시되면 성공한 것입니다. 업데이트된 구성은 응답의 ‘extensions’ 필드에 표시됩니다.

함수 액세스 제거

카탈로그 함수

인스턴스에서 카탈로그 함수를 제거하려면 다음 내용을 포함하여 PATCH 요청을 전송하십시오 "functions": null:

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

Setting( "functions": [] 빈 배열)을 설정하면 Catalog Functions가 지워집니다. null 이것이 표준형입니다.

사용자 정의 기능

인스턴스에서 사용자 정의 함수를 제거하려면 다음 내용을 포함하여 PATCH 요청을 전송하십시오 "custom_functions": null:

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

이 설정을 "custom_functions": {"permissions": []} 적용하면 사용자 정의 함수도 함께 초기화됩니다. null 이것이 표준형입니다.

결과 확인

인스턴스의 Qiskit Functions 구성이 올바른지 확인하려면, Resource Controller 대신 Qiskit Runtime API의 ``를 GET /functions 사용하십시오. 계정 수준의 변경 사항으로 인해 Resource Controller 외부에서 인스턴스가 업데이트된 경우, 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>'

이 응답에는 해당 인스턴스가 현재 액세스할 수 있는 함수들이 나열되어 있습니다.

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.