cloudtasks.CreateTask 失?。篳缺少 IAM 權(quán)限
我正在關(guān)注創(chuàng)建 HTTP 目標(biāo)任務(wù)指南。當(dāng)我運(yùn)行下面發(fā)布的代碼時(shí),出現(xiàn)此錯(cuò)誤:cloudtasks.CreateTask: rpc error: code = PermissionDenied desc = The principal (user or service account)lacks IAM permission "cloudtasks.tasks.create" for the resource "projects/my_project/locations/europe-west1/queues/my_queue" (or the resource may not exist).我已使用 登錄gcloud auth login my@email.com。my@email.com 具有由我的自定義云任務(wù)角色設(shè)置的以下權(quán)限:cloudtasks.locations.getcloudtasks.locations.listcloudtasks.queues.getcloudtasks.queues.listcloudtasks.tasks.createcloudtasks.tasks.deletecloudtasks.tasks.fullViewcloudtasks.tasks.getcloudtasks.tasks.listcloudtasks.tasks.run我不明白。我還應(yīng)該檢查什么?main.go// Run `PROJECT_ID=my_project QUEUE_ID=my_queue go run main.go`package mainimport ( "context" "fmt" "os" cloudtasks "cloud.google.com/go/cloudtasks/apiv2" taskspb "google.golang.org/genproto/googleapis/cloud/tasks/v2")var ( locationID = "europe-west1" url = "example.com/callback" message = "testing")func main() { projectID := os.Getenv("PROJECT_ID") queueID := os.Getenv("QUEUE_ID") task, err := createHTTPTask(projectID, locationID, queueID, url, message) if err != nil { fmt.Println(err) } fmt.Println(task)}// createHTTPTask creates a new task with a HTTP target then adds it to a Queue.func createHTTPTask(projectID, locationID, queueID, url, message string) (*taskspb.Task, error) { // Create a new Cloud Tasks client instance. // See https://godoc.org/cloud.google.com/go/cloudtasks/apiv2 ctx := context.Background() client, err := cloudtasks.NewClient(ctx) if err != nil { return nil, fmt.Errorf("NewClient: %v", err) } // Build the Task queue path. queuePath := fmt.Sprintf("projects/%s/locations/%s/queues/%s", projectID, locationID, queueID) // Build the Task payload. // https://godoc.org/google.golang.org/genproto/googleapis/cloud/tasks/v2#CreateTaskRequest req := &taskspb.CreateTaskRequest{ Parent: queuePath, }, }, }, }Cloud Tasks API已啟用。
查看完整描述