

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 LF 标签分配给数据目录资源
<a name="TBAC-assigning-tags"></a>

您可以将 LF 标签分配给数据目录资源（数据库、表和列）以控制对这些资源的访问。只有被授予匹配 LF 标签的主体（以及使用命名资源方法被授予访问权限的主体）才能访问这些资源。

如果表继承了数据库中的 LF 标签，或者某列继承了表中的 LF 标签，则可以通过向 LF 标签键分配新值来覆盖继承的值。

您可以分配给资源的 LF 标签的最大数量为 50。

**Topics**
+ [管理分配给资源的标签的要求](#manage-tags-reqs)
+ [将 LF 标签分配给表列](#assign-tag-column)
+ [将 LF 标签分配给数据目录资源](#assign-tag-catalog-resource)
+ [更新资源的 LF 标签](#update-tags)
+ [从资源中删除 LF 标签](#remove-tag)

## 管理分配给资源的标签的要求
<a name="manage-tags-reqs"></a>

要将 LF 标签分配给数据目录资源，您必须：
+ 具有对 LF 标签的 Lake Formation `ASSOCIATE` 权限。
+ 具有 IAM `lakeformation:AddLFTagsToResource` 权限。
+ 拥有 glue：GetDatabase 对 Glue 数据库的权限。
+ 是资源拥有者（创建者），通过 `GRANT` 选项具有对资源的 `Super` Lake Formation 权限，或通过 `GRANT` 选项具有以下权限：
  + 对于同一个 Amazon 账户中的数据库：`DESCRIBE``CREATE_TABLE`、`ALTER`、和 `DROP` 
  + 对于外部账户中的数据库：`DESCRIBE`、`CREATE_TABLE` 和 `ALTER` 权限
  + 对于表（和列）：`DESCRIBE`、`ALTER`、`DROP`、`INSERT`、`SELECT` 和 `DELETE` 权限

此外，LF-Tag 和分配给它的资源必须位于同一个 Amazon 账户中。

要从数据目录资源中删除 LF 标签，您必须满足这些要求并具有 `lakeformation:RemoveLFTagsFromResource` IAM 权限。

## 将 LF 标签分配给表列
<a name="assign-tag-column"></a>

**将 LF 标签分配给表列（控制台）**

1. 打开 Lake Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.amazonaws.cn/lakeformation/)。

   以满足上述要求的用户身份登录。

1. 在导航窗格中，选择**表**。

1. 选择表名称（而不是表名称旁边的选项按钮）。

1. 在表详细信息页面的**架构**部分，选择**编辑架构**。

1. 在**编辑架构**页面上，选择一列或多列，然后选择**编辑 LF 标签**。
**注意**  
如果要添加或删除列并保存新版本，请先执行此操作。然后编辑 LF 标签。

   此时将出现**编辑 LF 标签**对话框，并显示从该表继承的所有 LF 标签。  
![该图是“编辑 LF 标签”对话框窗口的屏幕截图。窗口的顶部显示两个继承的键。第一个继承的键具有键“level”和值“director (inherited)”。第一个继承的键具有键“module”和值“Orders (inherited)”。这些字段下方是“分配新的 LF 标签”按钮。下方右侧是“取消”和“保存”按钮。](http://docs.amazonaws.cn/lake-formation/latest/dg/images/edit-policy-tags-for-columns-2a.png)

1. （可选）在**继承的键**字段旁边的**值**列表中，选择一个值来覆盖继承的值。

1. （可选）选择**分配新的 LF 标签**。然后，在**分配的键**中，选择一个键，然后对于**值**，为该键选择一个值。  
![该图是“编辑 LF 标签”对话框窗口的屏幕截图。窗口的顶部显示两个继承的键。第一个继承的键具有键“level”和值“director (inherited)”。第一个继承的键具有键“module”和值“Orders (inherited)”。在此部分下方，水平对齐的是以下字段和控件：“分配的键”字段、“值”字段和“移除”按钮。“分配的键”字段包含文本“environment”。“值”字段是一个下拉列表，其中包含值“Production”（突出显示）和“Customers”。“分配新的 LF 标签”按钮显示在“分配的键”字段下方。窗口右下角是“取消”和“保存”按钮。](http://docs.amazonaws.cn/lake-formation/latest/dg/images/edit-policy-tags-for-columns-2b.png)

1. （可选）再次选择**分配新的 LF 标签**以添加其他 LF 标签。

1. 选择**保存**。

## 将 LF 标签分配给数据目录资源
<a name="assign-tag-catalog-resource"></a>

------
#### [ Console ]

**将 LF 标签分配给数据目录数据库或表**

1. 打开 Lake Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.amazonaws.cn/lakeformation/)。

   以满足前面列出的要求的用户身份登录。

1. 在导航窗格的**数据目录**下，执行下列操作之一：
   + 要将 LF 标签分配给数据库，请选择**数据库**。
   + 要将 LF 标签分配给表，请选择**表**。

1. 选择数据库或表，然后在**操作**菜单上，选择**编辑 LF 标签**。

   将出现 **“编辑 LF-Tags: {{resource-name}}**” 对话框。

   如果表从其包含的数据库继承 LF 标签，则窗口将显示继承的 LF 标签。否则，窗口将显示文本“没有与该资源关联的继承的 LF 标签”。  
![该图是“编辑 LF 标签：inventory”对话框窗口的屏幕截图。顶部是“继承的键”（灰显）和“值”字段。“继承的键”字段具有值“level”，“值”字段具有值“director (inherited)”。在此部分下方，水平对齐的是以下字段和控件：“分配的键”字段、“值”字段和“移除”按钮。“分配的键”字段包含文本“module”。“值”字段是一个下拉列表，其中包含值“Orders”、“Sales”和“Customers”（突出显示）。“分配新的 LF 标签”按钮位于“分配的键”字段下方。窗口右下角是“取消”和“保存”按钮。](http://docs.amazonaws.cn/lake-formation/latest/dg/images/edit-policy-tags-for-tables-2.png)

1. （可选）如果表继承了 LF 标签，则对于**继承的键**字段旁边的**值**列表，您可以选择一个值来覆盖继承的值。

1. 要分配新的 LF 标签，请执行以下步骤：

   1. 选择**分配新的 LF 标签**。

   1. 在**分配的键**字段中，选择一个 LF 标签键，然后在**值**字段中选择一个值。

   1. （可选）再次选择**分配新的 LF 标签**以分配额外的 LF 标签。

1. 选择**保存**。

------
#### [ Amazon CLI ]

**将 LF 标签分配给数据目录资源**
+ 运行 `add-lf-tags-to-resource` 命令。

  以下示例将 LF 标签 `module=orders` 分配给数据库 `erp` 中的表 `orders`。它使用 `--lf-tags` 参数的快捷语法。`--lf-tags` 的 `CatalogID` 属性是可选的。如果未提供该属性，则假定为资源（在本例中为表）的目录 ID。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "Table": {"DatabaseName":"erp", "Name":"orders"}}' --lf-tags  CatalogId=111122223333,TagKey=module,TagValues=orders
  ```

  以下是命令成功时的输出。

  ```
  {
      "Failures": []
  }
  ```

  下一个示例将 LF 标签分配给 `sales` 表，并对 `--lf-tags` 参数使用 JSON 语法。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "Table": {"DatabaseName":"erp", "Name":"sales"}}' --lf-tags '[{"TagKey": "module","TagValues": ["sales"]},{"TagKey": "environment","TagValues": ["development"]}]'
  ```

  下一个示例将 LF 标签 `level=director` 分配给表 `sales` 的 `total` 列。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "TableWithColumns": {"DatabaseName":"erp", "Name":"sales", "ColumnNames":["total"]}}' --lf-tags TagKey=level,TagValues=director
  ```

------

## 更新资源的 LF 标签
<a name="update-tags"></a>

**更新数据目录资源的 LF 标签 (Amazon CLI)**
+ 如前面的步骤所述，使用 `add-lf-tags-to-resource` 命令。

  添加与现有 LF 标签具有相同键但具有不同值的 LF 标签会更新现有值。

## 从资源中删除 LF 标签
<a name="remove-tag"></a><a name="remove-tag-command"></a>

**删除数据目录资源的 LF 标签 (Amazon CLI)**
+ 运行 `remove-lf-tags-from-resource` 命令。

  如果表的 LF 标签值覆盖了从父数据库继承的值，则从表中删除该 LF 标签将还原继承的值。此行为也适用于覆盖从表中继承的键值的列。

  以下示例从 `sales` 表的 `total` 列中删除 LF 标签 `level=director`。`--lf-tags` 的 `CatalogID` 属性是可选的。如果未提供该属性，则假定为资源（在本例中为表）的目录 ID。

  ```
  aws lakeformation remove-lf-tags-from-resource 
  --resource ' { "TableWithColumns":  
  { "DatabaseName": "erp",  "Name": "sales",  "ColumnNames":[ "total"]}}' 
  --lf-tags  CatalogId=111122223333,TagKey=level,TagValues=director
  ```