【问题标题】:Google Cloud Function and Service Account谷歌云功能和服务帐号
【发布时间】:2018-09-22 22:43:14
【问题描述】:

我想使用 Google Cloud Functions 访问 Youtube Content Owner API。为此,GCF 使用的服务帐户必须有权访问该 API。

当我创建 Google Cloud Function 时,它会自动分配一个服务帐号。在这种情况下,“App Engine 默认服务帐户”。我对此有几个问题。

  1. Google Cloud Function 是否始终使用“App Engine 默认服务帐户”作为服务帐户?
  2. 在编辑云功能时,我看不到任何更改 Google 云功能服务帐户的方法。一旦为 Cloud Function 设置了服务帐号,就无法更改服务帐号,对吗?
  3. 如果默认服务帐户可以访问 Youtube Content Owner API,那么 Google Cloud Functions 也会拥有它吗?

【问题讨论】:

    标签: google-cloud-platform youtube-api google-cloud-functions service-accounts


    【解决方案1】:
    1. 是的,Cloud Functions 使用 App Engine 默认服务帐户,如 here 所述。

    2. 确实还没有这样的选项。如果您有兴趣,可以为此打开一个公共Feature Request

    3. 没错,Cloud Function 会继承 the default service account 的所有访问权限。

    或者,要将凭据与除 App Engine 默认服务帐户之外的 Cloud Functions 一起使用,您可以:

    • 使用authentication token
    • 直接使用您的云功能上传一个非默认服务帐户,并按照here 的描述从其中使用它

    【讨论】:

    • 您实际上是如何使用默认服务帐户的?我正在尝试访问 gmail。我必须执行以下操作,并使用默认服务帐户凭据的 json 文件。我找不到不必上传此文件的方法...credentials = service_account.Credentials.from_service_account_info(SERVICE_ACCOUNT_FILE, scopes=SCOPES) delegated_credentials = credentials.with_subject("my.email@email.com") service = build('gmail', 'v1', credentials=delegated_credentials, cache_discovery=False)
    • @BrainPermafrost 您好,您找到答案了吗?我的要求完全一样。请告诉我。
    • @SharathKirani 不幸的是,我还没有找到解决方法。我仍然需要上传服务帐户文件。在我的用例中,我需要从我们的 GCP 项目(来自云函数)访问 google 表格。为了解决这个问题,我现在正在从 google sheet 转移到 airtable。完成此操作后,我将不再需要访问 Google 表格,因此不再需要处理此问题。
    • @SharathKirani 如上所述,如果我们必须继续使用谷歌表格,我会专门为此目的创建一个服务帐户,然后我会将服务帐户 json 文件存储在 Google Secret Manager 中。云功能可以访问它,然后使用该文件连接到谷歌表格/驱动器。这样,您的 json 文件将不会成为 Cloud Function 文件的一部分,而是存储在 Google Secret Manager 中。我已将此方法用于需要访问 ssh 密钥的云功能。 pem 和/或 pub 文件存储在 Google Secret Manager 中,云功能可以访问它们。
    • @BrainPermafrost 非常正确,即使我也打算使用秘密管理器。感谢您的回复。我使用的是 admin api 而你使用的是 gmail。
    猜你喜欢
    • 2017-11-19
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2019-05-23
    • 1970-01-01
    • 2018-07-22
    相关资源
    最近更新 更多