我的目标是通过首先检索活动实例列表来测试google的orchestrator和计算引擎api。包含servlet文件的orchestrator项目存储在jar中。
我试图测试java google计算引擎客户端API。我有一个调用orchestrator servlet的cron作业。 cron的目标是后端。从中我尝试获取实例列表:
...
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());
}
}
...
我得到的错误响应是(我从响应中省略了我的项目名称,我确认我在代码中使用了正确的项目ID):
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"
}
我还通过检索访问令牌并进行RESTful调用以获取实例列表来尝试此操作,并且我收到了完全相同的响应。我通过将它与使用api explorer成功查询实例进行比较,确认构建的Url是正确的。
编辑:我在另一篇文章的帮助下确定了问题的解决方案: 我终于能够在帖子Compute Engine API call fails with http 404 中找到解决方案我需要将我的应用引擎服务帐户添加为具有编辑功能的团队成员,默认情况下它没有。一旦我这样做,代码按预期工作。我必须通过cloud.google.com/console执行此操作,就像通过appengine.google.com完成一样,将向服务帐户提供待处理状态,并且无权访问。
答案 0 :(得分:4)
对我来说,我必须确保我有授权。在终端gcloud auth login
答案 1 :(得分:2)
您是否可以访问开发者控制台https://console.developers.google.com? 似乎用户帐户@ appspot.gserviceaccount.com无法访问计算引擎。就我而言,我看到@ developer.gserviceaccount.com。
如果您没有,请访问https://developers.google.com/console/help/new/#generatingoauth2以创建新的客户ID
答案 2 :(得分:1)
确保您在正确的项目中,您可以在您的虚拟机上运行此命令,看看您是否在正确的项目中: gcloud配置列表
中查看此帖子