python - Google Cloud DataFlow 无法将文件写入临时位置

标签 python google-cloud-storage google-cloud-dataflow gcloud apache-beam

我正在 Google 云数据流上构建一个 Beam 管道。

我收到一个错误消息,提示云数据流没有写入临时目录的权限。

enter image description here

这很令人困惑,因为显然数据流具有写入存储桶的能力,它创建了一个暂存文件夹。

enter image description here

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

我在计算引擎上的 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

编辑

回应@alex amato

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

  2. 能否提供完整的错误信息。

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

    "8d8bc4d7fc4a5f8f): Workflow failed. Causes: (8d8bc4d7fc4a526c): 临时位置或暂存文件的一个或多个访问检查失败。请参阅其他错误消息了解详细信息。有关安全和权限的更多信息,请参阅 https://cloud.google.com/dataflow/security-and-permissions。 "

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

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

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

Bucket权限有global admin

enter image description here

与我的 gcloud 身份验证相匹配

enter image description here

最佳答案

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

Can you also give access to cloudservices account (<project-number>@developer.gserviceaccount.com) as mentioned in cloud.google.com/dataflow/security-and-permissions.

关于python - Google Cloud DataFlow 无法将文件写入临时位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44835511/

相关文章:

google-cloud-dataflow - 在 Google Cloud Dataflow Python 中处理来自 BigQuery 的空值

python - 从数据框中删除反向重复项

python - 如何在 Django 模型中存储复数

javascript - 使用 Node.js 和 Google Cloud Storage 压缩图像

go - 如何使用golang编辑云存储桶中对象的元数据信息

google-cloud-storage - gsutil - 是否可以只列出文件夹?

JAVA-Apache BEAM-GCP : GroupByKey works fine with Direct Runner but fails with Dataflow runner

python - 在 python pandas 过滤器中编辑数据并将其应用到原始数据框

python - SQL SELECT 来自变量提供的表名

upload - InvalidPolicyDocument,缺少政策错误谷歌云存储