Dataproc을 사용하여 새로운 Compute 클러스터를 만들려고 할 때 "us-west1-a"또는 "us-central1"과 같은 "실제"영역을 지정할 때 불평합니다 -f ",이 엔드 포인트에서 지정된 영역이 지원되지 않는다는 오류 메시지가 수신됩니다. (아래 오류 텍스트 참조)Java SDK를 사용하여 Dataproc의 GceClusterConfig에서 ZoneUri를 지정하는 방법
오류에 따르면, 영역에 "전역"이 표시 될 것으로 예상됩니다. 그러나 전역으로 지정하면 "전역"이 올바른 영역이 아니라는 오류가 생성됩니다. "[global]"으로 지정하는 것과 같은 어리석은 일을 수행하면 잘못된 URI 형식이 생성됩니다. 영역을 지정하지 않으면 영역을 설정해야한다는 불평을하게됩니다.
따라서 논리적으로 가능한 모든 값은 제거되므로이를 해결하기 위해 취해야 할 다른 단계가 있음을 알 수 있습니다.
에러이 발생
Reason: 400 Bad Request
{
"errors" : [
{
"reason" : "badRequest",
"domain" : "global",
"message" : "Region us-central1-f invalid or not supported by this endpoint; permitted regions: [global]"
}
],
"status" : "INVALID_ARGUMENT",
"code" : 400,
"message" : "Region us-central1-f invalid or not supported by this endpoint; permitted regions: [global]"
}
코드 조각 :
Cluster cluster = createClusterSpec();
createOp = dataproc.projects().regions().clusters()
.create(projectId, region, cluster);
createOp.setBearerToken(credentials.getAccessToken().getTokenValue());
createOp.execute();
// I'm cheating here: the actual code pulls the config from various
// inputs and properties, but we can replicate with hard-coded values.
private Cluster createClusterSpec() {
GceClusterConfig computeEngineConfig = new GceClusterConfig();
// ZONE_URI_FORMAT =
// "https://www.googleapis.com/compute/v1/projects/%s/zones/%s"
computeEngineConfig.setZoneUri(
String.format(ZONE_URI_FORMAT, "funny-project-001",
"us-central1-f"));
InstanceGroupConfig masterConfig = new InstanceGroupConfig();
masterConfig.setMachineTypeUri(
String.format(MACHINE_TYPE_URI_FORMAT,
"funny-project-001", "us-central1-f",
"n1-standard-1"))
.setNumInstances(1);
InstanceGroupConfig workerConfig = new InstanceGroupConfig();
workerConfig.setMachineTypeUri(
String.format(MACHINE_TYPE_URI_FORMAT,
"funny-project-001", "us-central1-f",
"n1-standard-1"))
.setNumInstances(1);
ClusterConfig googClusterConfig = new ClusterConfig();
googClusterConfig.setGceClusterConfig(computeEngineConfig);
googClusterConfig.setMasterConfig(masterConfig);
googClusterConfig.setWorkerConfig(workerConfig);
Cluster returnVal = new Cluster();
returnVal.setProjectId("funny-project-001");
returnVal.setConfig(googClusterConfig);
returnVal.setClusterName("mrfoo");
return returnVal;
}