微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

传递项目 ID 时 cloudbuild.yaml 文件中的正则表达式错误

如何解决传递项目 ID 时 cloudbuild.yaml 文件中的正则表达式错误

我正在尝试使用云构建运行数据流作业

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  dataflow
  jobs
  run
  google-template-job
  --gcs-location=gs://dataflow-templates/latest/PubSub_Subscription_to_BigQuery
  --parameters=inputSubscription='projects/$PROJECT_ID/subscriptions/messages'
  --parameters=outputTableSpec="$PROJECT_ID:beam_samples.streaming_beam"
  --staging-location=gs://cloudbuild-dataflow-testproject123456789-313307/tmp'
  --region=us-central1

每次触发构建时都会出现以下错误

ERROR: (gcloud.dataflow.jobs.run) INVALID_ARGUMENT: The template parameters are invalid.
- '@type': type.googleapis.com/google.dataflow.v1beta3.InvalidTemplateParameters
  parameterViolations:
  - description: 'Unmatched regex: ^projects\/[^\n\r\/]+\/subscriptions\/[^\n\r\/]+$'
    parameter: inputSubscription
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/gcloud" Failed: step exited with non-zero status: 1

我的项目 ID 中有一个“-”,因此如果我将 $PROJECT_ID 替换为项目 ID 的值,我仍然遇到相同的错误,是否有任何解决方法。我无法控制停止正则表达式检查,因为它是谷歌提供的模板。

我该如何解决这个问题

解决方法

明白了。这只是一个命令解释器问题。如果您使用单引号,则可以防止对内部字符串进行任何评估。

你的情况

--parameters=inputSubscription='projects/$PROJECT_ID/subscriptions/messages'

'projects/$PROJECT_ID/subscriptions/messages' 被采用,因此项目 ID 包含大写和下划线,这违反了正则表达式模式。

改为双引号,效果应该不错!

--parameters=inputSubscription="projects/$PROJECT_ID/subscriptions/messages"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?