2014-01-23 5 views
0

나는 파이썬 API를 사용하여 GCE에서 일부 인스턴스를 시작하고 인스턴스를 만들 때 몇 가지 문제가 발생합니다.디스크를 요청할 때 HTTP 400

HttpError 400 when requesting https://www.googleapis.com/compute/v1beta16/projects/projectid/zones/us-central1-a/instances?alt=json returned "Invalid value for field 'resource.disks[0].source': 'https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/disks/hm'. Must be a URL to a Compute resource in the same zone." 

그리고 디스크의 JSON은 다음과 같습니다 :

"disks": [ 
      { 
       "kind": "compute#attachedDisk", 
       "boot": "true", 
       "type": "PERSISTENT", 
       "mode": "READ_WRITE", 
       "deviceName": "%s" % instance_name, 
       "zone": "https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/", 
       "source": "https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/disks/%s" % instance_name, 
      } 
      ] 

나는 그것이 나에게 다음과 같은 오류를 제공 인스턴스를 만들려고 할 때 나는 그러나 내 인스턴스에 영구 디스크를 연결하기 위해 노력하고있어 변수 'instance_name'이 파이썬에 의해 삽입됩니다.

디스크가 존재하고 이것이 같은 영역에있는 이유는 확실하지 않습니다.

아무도 제안 사항이 있습니까?

감사합니다,

조지

** UPDATE ** 당신이에 영구 디스크를 연결하려고하기 때문에

+1

"projectid"에 대한 대체 값이 누락 된 것 같습니다. –

+0

죄송합니다.이 예에서는 실제 프로젝트 ID를 "projectid"로 바꿨다고합니다. –

답변

0

v1 API로 업데이트하여이 문제를 해결했습니다

0

이 인 V1의 API로 업데이트하여 문제를 해결

하나의 영역 (us_central1-a)을 다른 영역의 인스턴스에 할당합니다. 영구 디스크는 영역마다 있으며 인스턴스 간에는 여러 영역에 연결할 수 없으며 여러 영역에서 디스크 스냅 숏 만 액세스 할 수 있습니다.

HttpError 400 when requesting https://www.googleapis.com/compute/v1beta16/projects/projectid/zones/us-central1-a/instances?alt=json returned "Invalid value for field 'resource.disks[0].source': ' https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/disks/hm '. Must be a URL to a Compute resource in the same zone."

디스크가 에 우리-센트럴 1-A, 어떤 영역 당신이 당신의 인스턴스를 만들려고 :

당신이지고있는 오류 메시지의 맨 마지막 부분이 표시?

다른 영역에 해당 디스크를 사용하려면, 같은 유럽 - west1-A 다음에 당신이 가진 것 중 하나 :

1) 디스크를 부착, 같은 지역에 임시 인스턴스를 생성 그런 다음 gcutil moveinstances 명령을 사용하여 인스턴스를 필요한 영역으로 이동합니다. 이렇게하면 디스크가 이동하고 새 영역의 해당 인스턴스에서 디스크를 분리하여 사용할 수 있습니다.

또는

2

) 디스크의 스냅 샷을 생성 한 다음 인스턴스 영구 디스크 만들기 위해 그것을 사용

  1. 이 영구 디스크의 스냅 샷 (snapshot1) (HM)의 생성을 미국 센트럴 1-A :

    gcutil addsnapshot snapshot1 --zone 우리-센트럴 1-A

  2. 새로운 영구 디스크 (DISK2)를 작성 --source_disk 흠 이리저리 m 필요한 지역 (snapshot1) 스냅 샷이 :

    gcutil의 adddisk "DISK2"--zone = "유럽-west1-A"--source_snapshot = "snapshot1"

  3. 당신의 새로운 인스턴스 (인스턴스 2) 만들기 새로운 영구 디스크를 사용하여 (DISK2) :

    gcutil에서 addinstance "인스턴스 2"--zone = "유럽-west1-A '--disk ="DISK2, 장치 이름 = DISK2, 모드 = READ_WRITE, 부팅 "

+0

답장을 보내 주셔서 감사합니다,하지만 내 질문에 두 리소스가 같은 영역에있다. 나는 내가 사용하고 있던 API 버전을 업데이트함으로써 문제를 해결했다는 것을 알려야했다. –

관련 문제