【发布时间】:2020-04-20 18:44:15
【问题描述】:
我的 beam 数据流作业在本地成功(使用 DirectRunner)并在云端失败(使用 DataflowRunner)
这个代码sn-p本地化的问题:
class SomeDoFn(beam.DoFn):
...
def process(self, gcs_blob_path):
gcs_client = storage.Client()
bucket = gcs_client.get_bucket(BUCKET_NAME)
blob = Blob(gcs_blob_path, bucket)
# NEXT LINE IS CAUSING ISSUES! (when run remotely)
url = blob.generate_signed_url(datetime.timedelta(seconds=300), method='GET')
并且数据流指向错误:“AttributeError:您需要一个私钥来签署凭据。您当前使用的凭据仅包含一个令牌。”
我的数据流作业使用服务帐户(PipelineOptions 中提供了适当的service_account_email),但是我看不到如何将该服务帐户的 .json 凭据文件传递给数据流作业。我怀疑我的作业在本地运行成功,因为我设置了环境变量GOOGLE_APPLICATION_CREDENTIALS=<path to local file with service account credentials>,但是如何为远程数据流工作人员进行类似的设置呢?或者如果有人可以提供帮助,也许还有其他解决方案
【问题讨论】:
标签: google-cloud-platform google-cloud-dataflow apache-beam gcloud