【问题标题】:setting sdk_container_image in flex template在 flex 模板中设置 sdk_container_image
【发布时间】:2022-06-14 03:09:24
【问题描述】:

为了提供密封构建和运行时,我们目前构建了自定义 flex 模板和工作映像。作为部署的一部分,我们构建了 flex 模板,我们可以指定自定义 flex 模板图像,但不能指定自定义工作器图像 - 我们必须在调用 flex 模板时单独将其传递给数据流。这会创建隐藏的依赖关系,我们需要在其他地方的发布过程中跟踪这些依赖关系(并且似乎与自包含的 flex 模板的设计背道而驰)。有没有办法将至少一个默认的工作图像( sdk_container_image )烘焙到模板中?

【问题讨论】:

    标签: google-cloud-dataflow


    【解决方案1】:

    一般来说,如果你想为模板参数设置一个默认值,你可以在它上面使用@Default注解,并为你构建的每个模板版本更改默认值。虽然在这种特殊情况下,由于 sdkContainerImage 参数在 Java SDK 中的 DataflowPipelineOptions (或 Python SDK 中的 WorkerOptions )中声明,并且您无法从用户代码中控制其默认值,我会尝试设置以编程方式在模板代码中设置参数值。

    我认为这样的事情应该可以工作,但我还没有测试过:

        DataflowPipelineOptions options =
            PipelineOptionsFactory.fromArgs(args).as(DataflowPipelineOptions.class);
    
        if (options.getSdkContainerImage() == null || options.getSdkContainerImage().isEmpty()) {
          // Set the default if not already set by the template runner.
          options.setSdkContainerImage("...");
        }
    
        Pipeline pipeline = Pipeline.create(options);
        // ...
    

    这适用于 Java,但您可以使用 Python SDK 做类似的事情。

    【讨论】:

      猜你喜欢
      • 2019-04-26
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多