2017-10-08 49 views
0

創建服務用戶以管理該項目下的terraform並將其授予roles/owner。爲這個terraform用戶創建了關鍵字。GCP上的Terraform未能創建pubsub主題,聲明權限被拒絕

Terraform代碼很簡單:

resource "google_pubsub_topic" "my_topic" { 
    name = "my_topic" 
    project = "${var.project_id}" 
} 

只創建一個發佈 - 訂閱話題。

terraform plan的作品,但terraform申請給我:

google_pubsub_topic.my_topic:googleapi:錯誤403:用戶無權執行此操作時,禁止

我都甚至試圖給該服務。帳戶roles/pubsub.admin不確定我知道發生了什麼,因爲我的服務帳戶擁有與其關聯的所有者角色,但它無法創建pubsub主題。

有人可以幫我解決這個問題嗎?

在此先感謝。

編輯(擴展我的評論有關什麼工作): 我已經使用gcloud創建服務帳戶。

gcloud iam service-accounts create terraform \ 
    --display-name "Terraform admin account" 

gcloud projects add-iam-policy-binding myproject-182220 \ 
--member serviceAccount:[email protected] \ 
--role roles/owner 

gcloud iam service-accounts keys create terraform-admin.json \ 
--iam-account [email protected] 

繼續我的調試,我使用控制檯/ GUI創建了一個新的服務帳戶 - > API &服務 - >憑證 - >創建憑據 - >服務帳戶鍵 - >新的服務帳戶(擁有所有者角色)。有了這個新的服務密鑰json文件,我能夠毫無問題地運行我的terraform代碼。

現在我的困惑是,爲什麼這個工作,但不是當我用gcloud創建一個服務帳戶,並賦予它相同的角色?

+0

你可以運行'gcloud'創建這個主題嗎?我想你會得到同樣的錯誤。仔細檢查你是否獲得了正確的許可。 – BMW

+0

我沒有問題與我的用戶帳戶運行gcloud並創建主題。我不確定我如何使用gcloud和服務帳戶憑證。我顯然可以在Python或其他東西中使用服務帳戶來創建pubsub,看看我是否得到相同的錯誤。我的用戶帳戶在項目上也具有「所有者」角色,與服務帳戶相同 – Amit

+0

我嘗試使用擁有者角色創建具有相同服務帳戶的其他資源,但仍然拒絕了權限。我不確定我需要做些什麼來創建一個服務帳戶,我可以使用這個帳戶來創建terraform資源。 – Amit

回答

-1

爲谷歌提供的樣品使用配置看上去更像是:

// Configure the Google Cloud provider 
provider "google" { 
    credentials = "${file("account.json")}" 
    project  = "my-gce-project" 
    region  = "us-central1" 
} 

// Create a new instance 
resource "google_compute_instance" "default" { 
    # ... 
} 

這可以更詳細地從Terraform「谷歌雲供應商」的文件page讀取。

+0

新創建的帳戶這根本不回答問題。 – Amit