API为GCP的DLP提供的多项操作不起作用

问题描述

目标:从Cloud Storage存储桶中读取CSV文件,然后将调查结果发布到Pub / Sub,然后将调查结果写入BigQuery

问题:我可以使用控制台执行此操作,但是当我尝试使用API​​进行操作时,只有某些操作有效。以下是我的代码中的示例:

'actions': [{
          'pub_sub': {
              'topic':
                  'projects/{project_id}/topics/{topic_id}'.format(
                      project_id=PROJECT_ID,topic_id=PUB_SUB_TOPIC)
          },'save_findings': {
            "output_config": {
                "table": {
                    "project_id": PROJECT_ID,"dataset_id": DATASET_ID,"table_id": TABLE_ID
               
                }
            }
        }
      }]

在上面的代码中,只有发布到BigQuery的选项才起作用,因为它稍后会被编写。我碰到了在此link上提供的文档,其中说“联盟的野外行动只能是以下其中之一”

问题: 我的理解正确吗,仅使用API​​一项操作是可能的(写入数据库或发布到pub / sub等)?

如果是,是否将使用类似于控制台的API支持多种操作?

附录:使用具有多个操作的控制台进行

enter image description here

的DLP作业配置的PFA屏幕截图

解决方法

您的对象嵌套不正确。

"actions": [
  {
    "pubSub": {
      "topic": "mytopic"
    }
  },{
    "saveFindings": {
      "outputConfig": {
        "outputSchema": "BIG_QUERY_COLUMNS","table": {
          "datasetId": "","tableId": "","projectId": ""
        }
      }
    }
  }
]
,

根据documentation,这是REST API的已记录限制。它提到。此外,还可以在Rest API here的RPC端找到此限制。两种状态:

操作只能是以下其中一项

但是,我建议您更改脚本以进行两次 调用 create_dlp_job() >方法,每个方法一次在REST变量中包含一个动作。

最后,您还可以在以下link内打开功能请求。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...