【问题标题】:Problem with dataflow job accessing external URLs数据流作业访问外部 URL 的问题
【发布时间】:2021-09-14 14:05:15
【问题描述】:

我有一个执行以下代码的数据流作业

>>> import urllib.request
>>> headers={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '
... }
>>> element = 'https://www.sec.gov/Archives/edgar/full-index/2019/QTR1/master.idx'
>>> req = urllib.request.Request(element, headers=headers)
>>> data = urllib.request.urlopen(req)
>>> data =  [line for line in data]
>>> data[0:2]
[b'Description:           Master Index of EDGAR Dissemination Feed\n', b'Last Data Received:    March 31, 2019\n']

现在,完全相同的代码嵌入到数据流作业中。该作业正在使用 gcloud 的 flex 模板运行,方式如下

gcloud dataflow flex-template run "edgarflow23" \
--template-file-gcs-location "$TEMPLATE_PATH" \
--parameters year=2020 \
--parameters quarter=QTR1 \
--parameters setup_file="/dataflow/template/setup.py" \
--region "$REGION"

代码最终出现 HTTP 403 Forbidden 错误 现在,当我通过 cloud shell 运行完全相同的代码时,我得到了完全相同的错误

  • 当我在本地机器上运行时,它运行良好
  • 当我通过经典模板启动相同的数据流作业时,它工作正常。

我很困惑,看看问题出在哪里? 有人可以帮忙吗? 问候 马可

【问题讨论】:

  • 为了更好地帮助您,请分享以下详细信息: - 完整的错误跟踪 - 您在过程中的哪个位置得到错误? - 在 Cloud Shell 中,您使用什么命令来运行作业? - 所有环境的项目和凭据是否相同? (即本地、云外壳和弹性模板)
  • 您好,感谢您回复我。好吧,堆栈跟踪只是说禁止错误 403,而我所做的就是使用 python 的请求打开一个 URL。我已经尝试使用 gcloud dataflow flex-template run 或使用 gcloud beta builds submit 来启动这项工作,但无论如何都没有运气。未加载外部 URL。值得注意的是,当我使用经典模板运行完全相同的代码时,代码工作得很好。所以我不太确定问题出在哪里

标签: google-cloud-platform google-cloud-dataflow dataflow


【解决方案1】:

这个问题已经解决了。与 CloudBuild、Flex 或其他任何东西无关 这是由于打开 URL 时传递的标头不正确

问候

【讨论】:

    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2015-09-27
    • 2017-04-29
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多