6

Mục tiêu của tôi là thử nghiệm trình phối hợp của google và api của công cụ tính toán bằng cách truy xuất danh sách các phiên bản hoạt động đầu tiên. tập tin servlet được lưu trữ trong một cái bìnhLỗi tài nguyên 'projects/<my project>' không tìm thấy "khi cố gắng lấy danh sách các cá thể đang hoạt động

Tôi đang cố gắng kiểm tra công cụ tính toán java google client api. Tôi có một công việc cron để gọi servlet của dàn nhạc. Tôi cố gắng để có được danh sách các trường hợp:

... 
AppIdentityCredential credential = getCredential(computeScope); 

String appName = ConfigProperties.getInstance().getGceConfigProperties().get("projectId"); 

try { 
    httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 

    final Compute compute = new Compute.Builder(
     httpTransport, JSON_FACTORY, credential).setApplicationName(appName) 
     .build(); 
    logger.info("================== Listing Compute Engine Instances =================="); 

    Compute.Instances.List instances = compute.instances().list(projectId, zone); 
    InstanceList list = instances.execute(); 

    if (list.getItems() == null) { 
     logger.info("No instances found. Sign in to the Google APIs Console and create " 
      + "an instance at: code.google.com/apis/console"); 
    } else { 
     for (Instance instance : list.getItems()) { 
      logger.info(instance.toPrettyString()); 
     } 
    } 
... 

Có phản hồi lỗi tôi nhận được là (tôi bỏ qua tên dự án của mình f rom phản ứng, tôi khẳng định rằng tôi đang sử dụng id dự án đúng trong mã của tôi):

com.google.cloud.solutions.sampleapps.orchestration.orchestrator.server.GceClientApiUtils  
getInstances: com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 OK 
{ 
    "code" : 404, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "The resource 'projects/<project-name-here>' was not found", 
    "reason" : "notFound" 
    } ], 
    "message" : "The resource 'projects/<project-name_here>' was not found" 
} 

Tôi cũng đã cố gắng điều này bằng cách lấy một access token và thực hiện cuộc gọi RESTful để có được danh sách các trường hợp và tôi đã nhận được phản hồi giống hệt nhau. Tôi xác nhận Url được xây dựng là chính xác bằng cách so sánh nó với một truy vấn thành công của các cá thể bằng cách sử dụng trình khám phá api.

EDIT: Tôi xác định giải pháp cho vấn đề này với sự giúp đỡ của bài khác: tôi cuối cùng đã có thể tìm ra giải pháp trong bài Compute Engine API call fails with http 404

tôi cần thêm tài khoản dịch vụ công cụ ứng dụng của tôi như là một thành viên trong nhóm với khả năng chỉnh sửa, mà nó không có mặc định. Một khi tôi đã làm điều này, mã làm việc như mong đợi. Tôi phải thực hiện điều này thông qua cloud.google.com/console, như được thực hiện thông qua appengine.google.com, trạng thái đang chờ xử lý sẽ được cấp cho tài khoản dịch vụ và sẽ không có quyền truy cập.

Trả lời

2

Bạn có quyền truy cập vào bảng điều khiển dành cho nhà phát triển https://console.developers.google.com không? Dường như tài khoản người dùng @ appspot.gserviceaccount.com không truy cập được vào công cụ tính toán. Trong trường hợp của tôi, tôi thấy @ developer.gserviceaccount.com.

Nếu bạn không có một, hãy truy cập https://developers.google.com/console/help/new/#generatingoauth2 để tạo ra một ID Khách hàng mới

+0

Cuối cùng tôi đã có thể tìm ra giải pháp trong bài đăng http://stackoverflow.com/questions/21062286/compute-engine-api-call-fails-with-http-404. Tôi cần thêm tài khoản dịch vụ công cụ ứng dụng của mình làm thành viên nhóm có khả năng chỉnh sửa, tài khoản này không có mặc định. Một khi tôi đã làm điều này, mã làm việc như mong đợi. Tôi phải thực hiện điều này thông qua http://cloud.google.com/console, như được thực hiện thông qua appengine.google.com, trạng thái đang chờ xử lý sẽ được cấp cho tài khoản dịch vụ và sẽ không có quyền truy cập. – jKimo

1

Hãy chắc chắn rằng bạn đang ở trong dự án đúng, bạn có thể chạy lệnh này trên vm của bạn để xem nếu bạn đang ở trong dự án phải: gcloud danh sách cấu hình

Hãy xem bài đăng này trong Google Groups

+0

Mã đang chạy trong một cái bình trong ứng dụng công cụ ứng dụng. Tôi đã xác minh bằng cách gọi phương thức getServiceAccountName(). Kết quả là @ appspot.gserviceaccount.com – jKimo

+0

Tôi đã truy xuất thành công mã thông báo bằng AppIdentityCredential. Tuy nhiên, khi tôi thực hiện cuộc gọi để tính toán bằng cách sử dụng thông tin xác thực này, nó trả về rằng không thể tìm thấy tài nguyên. – jKimo

4

Đối với tôi tôi đã phải chắc chắn rằng tôi đã uỷ quyền. Hãy thử điều này trong thiết bị đầu cuối gcloud auth login

Các vấn đề liên quan