它(可能)不起作用

它(可能)不起作用

我正在使用 DMS 创建一个持续任务,该任务会将数据从我的生产数据库部署到开发数据库。但是,必须屏蔽 PII,因此我正在创建一组规则来执行此操作。

如果每行数据的长度与生产中的长度相同,开发人员会更容易操作。因此,我创建了一条规则来保留首字母并x在后面添加一些字母。这是我的转换模式:

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "mydatabase",
        "table-name": "my_table"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-action": "add-column",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "mydatabase",
        "table-name": "my_table"
      },
      "value": "TMPcontact_name",
      "expression": "substr($contact_name, 0, 2) || replace(printf('%.' || length($contact_name) || 'c', '/'), '/', 'x')",
      "data-type": {
        "type": "string",
        "length": "50"
      }
    },
    {
      "rule-type": "transformation",
      "rule-id": "3",
      "rule-name": "3",
      "rule-action": "remove-column",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "mydatabase",
        "table-name": "my_table",
        "column-name": "contact_name"
      }
    },
    {
      "rule-type": "transformation",
      "rule-id": "4",
      "rule-name": "4",
      "rule-action": "rename",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "mydatabase",
          "table-name": "my_table",
          "column-name" : "TMPcontact_name"
      },
      "value": "contact_name"
    }
  ]
}

问题是 DMS 忽略了规则 #4。进程完成后,目标中的列名称为TMPcontact_name。CW 中的日志不包含与此相关的任何错误或通知。我找不到任何相关文档。

答案1

本周我也遇到了同样的问题。经过大量的逆向工程和阅读后,我得出结论:DMS 版本 3.4.6 无法满足我们的需要。

它(可能)不起作用

  • 正如您所说,AWS 文档中没有提到这样的用例。
  • 限制文档状态中的部分您不能对同一对象应用多个转换规则操作。在您的解决方案中,您正在应用列 的 变换 规则TMPcontact_name.

建议的解决方案

相反,在文档中AWS 博客文章, 但是也其他的(乃至其他的) 大部分都是从第一篇文章中复制而来,传播的解决方案是创建一个包含转换后数据的新列并删除旧列。

经过多次重新考虑,我认为这种方法可能更可取,因为它不会让用户感到困惑,因为复制的表甚至不会假装新列具有与源列相同的内容,因为名称保持不变。使用contact_name_maskedas name 应该可以让每个人都清楚,即使那些不了解 PII 含义的人,这也是屏蔽的联系人姓名。contact_name_hashed使用 时也是如此hash_sha256()

相关内容