J'essaie d'obtenir la liste des seaux dans mon projet de cloud Google en utilisant le compte de service.Google cloud storgae - Bucket list error: 403 Interdit
est le programme ici:
package com.mypackage.api;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.google.api.services.storage.Storage;
import com.google.api.services.storage.StorageScopes;
import com.google.api.services.storage.model.Bucket;
public class TestClass {
public static void main(String args[]) throws IOException, GeneralSecurityException {
String project = "my-project";
Storage storage = createStorageService();
List<String> list = new ArrayList<String>();
List<Bucket> buckets = storage.buckets().list(project).execute().getItems();
if(buckets != null) {
for(Bucket b : buckets) {
list.add(b.getName());
}
}
}
public static Storage createStorageService() throws IOException, GeneralSecurityException {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = GoogleCredential.getApplicationDefault();
if (credential.createScopedRequired()) {
credential = credential.createScoped(Arrays.asList(StorageScopes.DEVSTORAGE_FULL_CONTROL, "https://www.googleapis.com/auth/cloud-platform"));
}
return new Storage.Builder(httpTransport, jsonFactory,
credential).setApplicationName("My Application")
.build();
}
}
Et j'ai eu l'erreur ci-dessous:
Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "[email protected] does not have storage.buckets.list access to project 333XXXXX67.",
"reason" : "forbidden"
} ],
"message" : "[email protected] does not have storage.buckets.list access to project 333XXXXX67."
}
J'ai ajouté la portée "propriétaire" à mon compte de service. Mais je reçois toujours une erreur d'autorisation refusée.
Toute aide est appréciée.