我有一个管道存储为模板 . 我正在使用node.js客户端从 Cloud 功能运行此管道 . 一切正常,但当我需要从不同地区运行此模板时,我会收到错误 .
根据文档,我可以通过有效负载中的location参数进行设置
{
projectId: 123,
resource: {
location: "europe-west1",
jobName: `xxx`,
gcsPath: 'gs://xxx'
}
}
这给了我以下错误:
The workflow could not be created, since it was sent to an invalid regional endpoint (europe-west1).
Please resubmit to a valid Cloud Dataflow regional endpoint.
如果我将location参数移出资源节点,我会得到同样的错误,例如:
{
projectId: 123,
location: "europe-west1",
resource: {
jobName: `xxx`,
gcsPath: 'gs://xxx'
}
}
如果我在环境中设置区域并删除位置,例如:
{
projectId: 123,
resource: {
jobName: `xxx`,
gcsPath: 'gs://xxx',
environment: {
zone: "europe-west1-b"
}
}
}
我不再有任何错误,但数据流UI告诉我作业正在运行 us-east1
如何运行此模板并提供区域/区域I.
2 回答
正如here所解释的,实际上有两个 endpoints :
dataflow.projects.locations.templates.launch
(API Explorer)dataflow.projects.templates.launch
(API Explorer)要使Dataflow区域 endpoints 起作用,必须使用第一个 endpoints (
dataflow.projects.locations.templates.launch
) . 这样,将接受请求中的location
参数 . 代码段:我一直在测试这个虽然API explorer和console使用Google-provided templates . 使用
wordcount
示例,我得到的相同的一般错误比使用API资源管理器时更常见,如果location
名称不正确,则会出现相同的错误 . 但是,控制台提供了更多信息:正如我之前评论的那样记录了here . 运行它确认它使用的是已弃用的SDK版本 . 我建议你做同样的过程,看看这是否也是你的情况 .
选择不同的模板,在我的情况下,从控制台的下拉菜单中选择
GCS Text to BigQuery
(使用Apache Beam SDK for Java 2.2.0
)与location
设置为europe-west1
工作正常,我(和工作在该地区实际运行) .TL;DR :您的请求在第一个示例中是正确的,但如果您要使用区域 endpoints ,则需要将模板更新为较新的SDK .