仅在 Docker 内部出现 Google Cloud API 403 错误

问题描述 投票:0回答:1

几天前,我的 Google Cloud API 开始返回 403 错误。

rpc error: code = PermissionDenied desc = unexpected HTTP status code received from server: 403 (Forbidden); transport: received unexpected content-type "text/html; charset=UTF-8"

我将 Logging API 和 Vertex API 与官方 Go 客户端一起使用。

有线部分是当我在同一服务器上运行它而不使用 Docker 时,它工作得很好。另外,当我在 Docker 中的其他服务器上运行它时,它也工作正常。 我不知道我当前的服务器有什么问题。

我创建了最小的程序来重现该错误:

package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "cloud.google.com/go/logging"
)

func main() {
    projectID := os.Getenv("GOOGLE_LOGGING_PROJECT_ID")
    logName := os.Getenv("GOOGLE_LOGGING_LOG_NAME")

    ctx := context.Background()

    client, err := logging.NewClient(ctx, projectID)
    if err != nil {
        log.Fatalf("Failed to create client: %v", err)
    }

    logInfo := client.Logger(logName)

    err = logInfo.LogSync(ctx, logging.Entry{
        Payload: "This is a test log message",
    })
    if err != nil {
        log.Fatalf("Failed to log message: %v", err)
    }

    fmt.Println("Logged message to Google Cloud Logging")

}

并且使用 sh 文件可以正常工作:

#!/bin/sh

export GOOGLE_APPLICATION_CREDENTIALS=google-credentials.json
export GOOGLE_LOGGING_PROJECT_ID=summ-435417
export GOOGLE_LOGGING_LOG_NAME=main
./gce_log_test

但在 Docker 中则不然

version: "3.8"
services:
  gce-test:
    image: golang:alpine
    container_name: gce-test
    environment:
      - GOOGLE_APPLICATION_CREDENTIALS=/home/app/google-credentials.json
      - GOOGLE_LOGGING_PROJECT_ID=summ-435417
      - GOOGLE_LOGGING_LOG_NAME=main
    volumes:
      - /home/summ/gce-test:/home/app
    working_dir: /home/app
    command: ["./gce_log_test"]
docker go google-cloud-platform
1个回答
0
投票

也许 docker 中的 403 错误可能是由于您的服务帐户权限不正确或环境变量设置不正确造成的。尝试仔细检查服务帐户是否具有“日志编写者”角色,并且凭证文件是否已正确安装在 Docker 容器内。

© www.soinside.com 2019 - 2024. All rights reserved.