GoogleCloud DataFlow 无法将文件写入临时位置

bw4*_*4sz 5 python google-cloud-storage gcloud google-cloud-dataflow apache-beam

我正在 Google 云数据流上构建光束管道。

我收到错误消息,指出云数据流无权写入临时目录。

在此输入图像描述

这很令人困惑,因为显然数据流能够写入存储桶,它创建了一个临时文件夹。

在此输入图像描述

为什么我能够写入暂存文件夹,但不能写入临时文件夹?

我正在计算引擎上的 Docker 容器内运行。我已通过我的服务帐户进行了完全身份验证。

PROJECT=$(gcloud config list project --format "value(core.project)")
BUCKET=gs://$PROJECT-testing

python tests/prediction/run.py \
    --runner DataflowRunner \
    --project $PROJECT \
    --staging_location $BUCKET/staging \
    --temp_location $BUCKET/temp \
    --job_name $PROJECT-deepmeerkat \
    --setup_file tests/prediction/setup.py
Run Code Online (Sandbox Code Playgroud)

编辑

回应@alex amato

  1. 该存储桶属于该项目还是属于另一个项目?是的,当我进入该项目的主屏幕时,这是列出的四个桶之一。我通常从这个存储桶上传数据并与其他谷歌云服务(云视觉 API)进行交互。

  2. 请您提供完整的错误消息。

    “(8d8bc4d7fc4a50bd):无法将文件写入临时位置'gs://api-project-773889352370-testing/temp/api-project-773889352370-deepmeerkat.1498771638.913123'。请确保此目录的存储桶存在,并且运行工作流的项目具有写入该工作流所需的权限。”

    “8d8bc4d7fc4a5f8f):工作流程失败。原因:(8d8bc4d7fc4a526c):对临时位置或暂存文件的一项或多项访问检查失败。请参阅其他错误消息以了解详细信息。有关安全和权限的更多信息,请参阅https://cloud .google.com/dataflow/security-and-permissions。”

  3. 您能否确认尚不存在与您尝试使用的 GCS 文件夹路径名称相匹配的现有 GCS 对象?

是的,存储桶中没有名为 temp 的文件夹。

  1. 您能否验证您拥有的权限是否与您运行的成员相匹配

Bucket权限具有全局管理员权限

在此输入图像描述

与我的 gcloud 身份验证匹配

在此输入图像描述

bw4*_*4sz 3

@chamikara 是正确的。尽管从我的服务帐户继承了凭据,但云数据流需要自己的凭据。

您是否还可以授予对云服务帐户 ( <project-number>@developer.gserviceaccount.com) 的访问权限,如 cloud.google.com/dataflow/security-and-permissions 中所述。