【问题标题】:Set `GOOGLE_APPLICATION_CREDENTIALS` for AppEngine Flexible Environment instances为 AppEngine 柔性环境实例设置“GOOGLE_APPLICATION_CREDENTIALS”
【发布时间】:2020-12-07 14:36:55
【问题描述】:

我的应用程序需要设置GOOGLE_APPLICATION_CREDENTIALS 环境变量。但是,当通过 SSH 连接到我的 Google AppEngine 灵活环境实例并运行 echo $GOOGLE_APPLICATION_CREDENTIALS 时,我发现环境变量未设置。

我正在通过gcloud app deploy --image-url "gcr.io/$GCP_PROJECT_ID/$GITHUB_SHA" 进行部署。我还需要做些什么来确保在新运行的实例上正确设置了GOOGLE_APPLICATION_CREDENTIALS

【问题讨论】:

    标签: google-app-engine google-cloud-platform


    【解决方案1】:

    自定义运行时 docker 镜像是谷歌未处理或修改的镜像,这意味着 GCloud 不可用,因为在构建镜像时没有安装 sdk,正如another question 中提到的那样,自定义运行时也没有包括任何凭据,仅灵活(基于 google 运行时)或标准实例包含默认凭据。

    要解决此问题,您需要create a service account 并添加必要的权限,创建此帐户后您需要生成 json 凭据

    要创建 json 凭据,需要访问 service accounts page

    单击与您的服务帐户匹配的行中操作列中的 3 个点图标,在菜单中选择 create key,在模式选择 JSON 中单击 CREATE 按钮。

    这个文件需要添加到你的docker镜像中,你需要用凭证文件的路径定义环境变量GOOGLE_APPLICATION_CREDENTIALS

    例如,通过在 dockerfile 上添加环境变量

    ENV GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
    

    通过此步骤,您的基于自定义运行时的 App Engine 实例将能够使用与服务帐号相关联的凭据来使用其他 GCP 产品或服务

    【讨论】:

      【解决方案2】:

      据官方documentation

      创建 App Engine 应用程序后,App Engine 默认 服务帐户被创建并用作 App Engine 的身份 服务。 App Engine 默认服务帐户与 您的 Cloud 项目并代表您运行的应用执行任务 在 App 引擎中。

      默认情况下,App Engine 默认服务帐号具有编辑者角色 在项目中。

      因此,您无需为在 App Engine Flex 上运行的应用程序设置 GOOGLE_APPLICATION_CREDENTIALS。

      【讨论】:

      • 是的,这也是我读到的,但是在一个实例中运行echo $GOOGLE_APPLICATION_CREDENTIALS 表明由于某种原因没有设置环境变量(并且gcloud 也不可用)
      • @RaphaelRafatpanah 你在用custom runtime吗?
      • 是的,我正在使用带有 docker 映像的自定义运行时
      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2016-10-07
      相关资源
      最近更新 更多