Terraform - GCP - 连接:连接被拒绝

3
上周一切正常,但今天当我再次运行terraform apply时,我的所有资源都出现了以下错误:
错误:Post "https://storage.googleapis.com/storage/v1/b?alt=json&prettyPrint=false&project=PROJECTID":dial tcp SOMEIPTHATCANTSHARE:443:connect:连接被拒绝
我需要:
- 创建BigQuery数据集和表。 - 创建存储桶。
我尝试了"gcloud auth login"和"gcloud auth application-default login",但出现了以下消息:
UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a "quota exceeded" or "API not enabled" error. We recommend you rerun \gcloud auth application-default login` and make sure a quota project is added. Or you can use service accounts instead. For more information about service accounts, see[https://cloud.google.com/docs/authentication/](https://cloud.google.com/docs/authentication/).. warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)`

Cannot add the project "A PROJECT FROM ANOTHER GOOGLE CLOUD ACCOUNT" to ADC as the quota project because the account in ADC does not have the "serviceusage.services.use" permission on this project. You might receive a "quota_exceeded" or "API not enabled" error. Run $ gcloud auth application-default set-quota-project to add a quota project.```
2个回答

4

此回答是对@DazWilkin答案的补充。

您的应用程序已经使用了来自Google Cloud SDK的终端用户凭据进行了身份验证,但并没有配额项目。

这个警告消息意味着您正在使用Google用户凭据(Gmail,工作场所等)而不是服务帐户来访问Google Cloud APIs。由于您正在使用用户凭据,Google Cloud不知道如何管理各种配额,因为默认项目未设置。这些配额是针对项目的。

要设置配额项目:

gcloud auth application-default set-quota-project PROJECT_ID

PROJECT_ID是需要检查配额并授予权限/拒绝权限的项目。

注意:在运行set-quota-project命令之前,必须初始化应用程序默认凭据。

gcloud auth application-default login

3
除非您非常熟悉Google应用程序默认凭据和配额,否则该错误并没有什么帮助。
Google不鼓励使用终端用户凭据(在此情况下,您正在使用的是 gcloud auth list ),作为应用程序默认凭据。当然,该功能存在,但应该仅在必要时使用。
我不清楚所有原因,但一个重要原因是创建的 application_default_credentials.json 文件具有与您的终端用户帐户匹配的权限,并且是一个承载令牌。任何其他人获取它后,都可以像您一样行事。
无论何时以这种方式运行软件,最好创建具有必要权限的服务帐户。
从您的问题中不清楚您更喜欢使用Cloud Console还是Cloud SDK(又名 gcloud )。
您需要:
  • 创建一个服务账号(例如 控制台
  • 授予足够的权限(例如 控制台):
  • BigQuery 创建数据集|表(也许需要 roles/bigquery.dataEditor?);
  • Cloud Storage 创建存储桶(也许需要 roles/storage.admin?)
  • 可选*
  • 为服务账号创建一个密钥
  • export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
  • 再次运行 Terraform 脚本

可选* -- 如果您从 Compute Engine 等地方运行脚本,则不需要创建密钥,因为您可以使用 VM 自己的服务账号。请参阅 作为服务账号进行身份验证


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接