2017-06-08 130 views
0

幾個小時前,我們的應用程序啓動失敗谷歌雲功能的數據存儲連接問題

Error: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project. 
at (/user_code/node_modules/@google-cloud/datastore/node_modules/grpc/src/node/src/client.js:442) 

據我所知客戶端庫使用應用程序默認憑據的方法的情況下,如果沒有權限,文件傳遞到數據庫連接實例,或者沒有env。指定的變量。我們沒有在遠程Google Cloud Functions執行環境中使用這些文件中的任何文件。

const db = new require("@google-cloud/datastore")(); 

而且我知道我沒有看到任何其他方式並生成憑證文件並在db初始化期間顯式傳遞它。

const db = new require("@google-cloud/datastore")({ 
    keyFilename: "./configs/db_key.json" 
}); 

如果有人知道這種行爲的原因 - 請分享。

+1

谷歌雲功能仍處於測試階段,所以這可能是一個服務中斷問題。如果您的問題在24小時後仍然存在,請考慮通過Google問題跟蹤器報告問題。 –

回答

0

與Google支持人員對話後,我們發現了幾件事情。

  1. 幾周後我再次檢查並且Application Default Credentials在GCF中再次開始工作。
  2. 支持建議像我一樣使用額外的服務帳戶。此外,文件中還包含此警告。

注意:創建默認服務帳戶時的具體行爲,以及他們如何在你的項目中顯示,因爲它們被設計成由谷歌計算引擎和谷歌應用程序引擎可用於在將來可能會改變,所以建議您不要依賴這些默認帳戶的存在供您使用。建議您使用IAM API,Cloud Platform Console或gcloud工具明確創建其他服務帳戶,以便長期使用。 Source

因此,看起來最好對應用程序中使用的每個模塊和服務使用顯式鍵。此外,這裏是鏈接到service account best practices