# 管理LakeFormation数据源
LakeFormation是企业级数据湖一站式构建服务，提供数据湖元数据统一管理的可视化界面及API，兼容Hive元数据模型以及Ranger权限模型，支持对接MapReduce服务（MRS）、数据仓库服务 DWS等多种计算引擎及大数据云服务，使客户便捷高效地构建数据湖和运营相关业务，加速释放业务数据价值。
用户可以将海量业务数据，存储在MRS的分析集群，即使用Hive/Spark组件保存，Hive/Spark的数据文件则保存在OBS中。然后使用DWS通过LakeFormation服务来读取MRS集群上的数据。
DWS支持使用LakeFormation管理元数据，通过在控制台上创建LakeFormation数据源连接。在相同网络中，配置DWS集群连接到LakeFormation实例，通过Lakeformation获取表的元数据及权限信息，随后将OBS中的文件数据读取到DWS。
#### 应用场景
相比于直接在DWS中管理外表元数据，使用LakeFormation管理元数据更适合以下业务场景：
- **场景1**：企业已有基于LakeFormation构建的湖仓一体数据目录，希望DWS直接复用已有元数据，避免重复维护。
- **场景2**：多个计算引擎（DWS、Spark、Flink等）需要共享同一套元数据，通过LakeFormation实现统一元数据管理。
- **场景3**：需要统一的权限管控体系，通过LakeFormation集中管理数据访问权限。
 
#### 约束与限制
- 该特性**受限商用** （需联系技术支持人员），仅支持以下集群版本：
  - 存算分离集群仅支持9.0.1及以上集群版本。
  
  - 存算一体集群仅支持8.2.1.300及以上集群版本。
   
- 删除LakeFormation数据源后，依赖该数据源的外表将无法正常使用，且操作**不可逆**，请谨慎操作。
- 更新数据源配置期间，相关查询可能短暂失败，请在业务低峰期执行。
 
#### 前提条件
- 有可用的LakeFormation实例。详情请参见[创建LakeFormation实例](https://support.huaweicloud.com/usermanual-lakeformation/lakeformation_03_00007.html)。
- 在LakeFormation控制台中的"接入管理"页面创建DWS集群所在VPC下的客户端，详情请参见[管理接入客户端](https://support.huaweicloud.com/usermanual-lakeformation/lakeformation_03_00024.html)。
- 创建包含LakeFormation权限的委托（需包含最小权限），可参见[创建LakeFormation委托]配置，如果不配置在使用时将会报错。
- DWS调用LakeFormation管理面API时，账号如果为子账号则需要包含LakeFormation权限（至少包含lakeformation:instance:access、lakeformation:instance:describe、lakeformation:credential:describe）。
 
 #### 创建LakeFormation委托
创建LakeFormation数据源前需要提前创建好授权给DWS的委托，该委托具有**"LakeFormation FullAccess"** 和**"LakeFormationObsAccess"**权限。
1. 鼠标移动至页面右上角账号，单击**"统一身份认证"**，进入统一身份认证服务页面。
2. 在左侧导航栏选择**"权限管理 \> 权限"** ，在权限页面右上角单击**"创建自定义策略"**。
3. 创建LakeFormationObsAccess自定义策略（如果已包含相同策略则忽略），相关参数配置如下，配置完成后单击**"确定"** 。
   
   - 策略名称：**LakeFormationObsAccess**
   
   - 策略配置方式：**JSON视图**
   
   - 策略内容：
     ```
     {
         "Version": "1.1",
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                     "obs:bucket:ListAllMyBuckets"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": [
                     "obs:bucket:GetLifecycleConfiguration",
                     "obs:bucket:GetBucketLocation",
                     "obs:bucket:PutLifecycleConfiguration",
                     "obs:bucket:PutBucketAcl",
                     "obs:bucket:HeadBucket",
                     "obs:bucket:GetBucketAcl",
                     "obs:bucket:ListBucket"
                 ],
                 "Resource": [
                     "OBS:*:*:bucket:*"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": [
                     "obs:object:GetAccessLabel",
                     "obs:object:PutObjectVersionAcl",
                     "obs:object:DeleteAccessLabel",
                     "obs:object:PutObjectAcl",
                     "obs:object:PutAccessLabel",
                     "obs:object:GetObjectVersion",
                     "obs:object:GetObject",
                     "obs:object:GetObjectVersionAcl",
                     "obs:object:DeleteObject",
                     "obs:object:DeleteObjectVersion",
                     "obs:object:GetObjectAcl",
                     "obs:object:PutObject"
                 ],
                 "Resource": [
                     "OBS:*:*:object:*"
                 ]
             }
         ]
     }
     ```
     
   
   - 策略描述：**Permissions required for LakeFormation to access OBS**（LakeFormation访问OBS所需的权限）。
   
   - 作用范围：**全局级服务**
   
   
   
   
4. 在左侧导航栏单击**"委托"** ，在委托页面右上角单击**"创建委托"**。
5. 创建委托时委托类型选择**"云服务"** ，云服务选择**"数据仓库服务 DWS"**。
6. 单击**"完成"** ，在弹窗中单击**"立即授权"** 对委托授予已创建的**"LakeFormationObsAccess"** 自定义策略和**"LakeFormation FullAccess"** 系统策略权限。
   
   如果最终DWS外表报错"ERROR: LakeFormation respond error, Http Code: 401, Error Code: lakeformation.00000016, Error Message: Insufficient IAM permission."则说明权限不足，需要检查对LakeFormation委托权限正确。
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225670.png "点击放大")
   
   
   
7. 单击**"下一步"** ，选择授权资源范围为**"所有资源"** 或需要访问的资源，确认无误后单击**"确定"**提交。
 
#### 创建LakeFormation数据源
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏，选择**"集群 \> 集群列表"**。
3. 在集群列表，单击指定集群的名称，进入**"集群详情"**页面。
4. 在上侧导航栏单击**"数据源"** ，切换至**"** **LakeFormation** **数据源"**页签。
5. 在LakeFormation数据源页面，单击**"创建LakeFormation数据源连接"** ，填写配置参数。
   
   
   图1创建LakeFormation数据源连接   
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225672.png "点击放大")
   表1LakeFormation数据源连接参数说明 
   | 参数名称            | 说明                                                                            |
   |:---|:---|
   | 数据源名称          | 要创建的LakeFormation数据源连接名称。                                                     |
   | LakeFormation实例 | 待绑定的LakeFormation集群实例。在下拉列表中选择已创建的LakeFormation实例。                          |
   | 数据库          | LakeFormation数据源连接所在的数据库。在下拉列表中选择LakeFormation实例中已存在的数据库。                     |
   | 委托            | 拥有LakeFormation授权的委托，用于DWS系统通过委托Token和LakeFormation交互以获取元数据。在下拉列表中选择已创建的委托。 |
   | 描述           | 要创建的LakeFormation数据源连接的描述信息，便于后续管理和识别。                                        |
      
   
   
6. 确认无误后，单击**"确认"** ，弹出确认检查VPC终端节点的对话框，单击**"是"**提交创建操作，创建过程大约需要1分钟左右。
7. 创建完成后，在LakeFormation数据源列表中查看新创建的数据源连接，配置状态显示为**"可用"**即表示创建成功。
 
#### 更新LakeFormation数据源
用户如果需要更新LakeFormation数据源连接，可参考以下指导进行操作。
#### 操作场景
- 委托变更。
- 当创建连接后误删了VPC终端节点，导致无法正常使用数据源。
- 由于特殊原因导致Token未能正常更新，确认问题修复后需要立即更新Token。
 
#### 操作步骤
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏，选择**"集群 \> 集群列表"**。
3. 在集群列表，单击指定集群的名称，进入**"集群详情"**页面。
4. 在上侧导航栏单击**"数据源"** ，切换至**"** **LakeFormation** **数据源"**页签。
5. 在**"LakeFormation数据源"** 列表中选择要更新的LakeFormation数据源，单击所在行**"操作"** 列的**"更新配置"**。
6. 更新时仅支持更改委托，选择新的委托后，单击**"确认"** 。
   
   图2更新LakeFormation数据源连接   
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617625447.png "点击放大")
   
   
7. 弹出检查VPC终端节点的弹窗，确认无误后，单击**"是"**提交更新操作，更新过程大概需要1分钟左右。
8. 更新完成后，在LakeFormation数据源列表中查看该数据源配置状态是否恢复为**"可用"**。如果之前因VPC终端节点删除导致数据源不可用，更新后状态应恢复正常。
 
#### 删除LakeFormation数据源
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏，选择**"集群 \> 集群列表"**。
3. 在集群列表，单击指定集群的名称，进入**"集群详情"**页面。
4. 在上侧导航栏单击**"数据源"** ，切换至**"** **LakeFormation** **数据源"**页签。
5. 在**"LakeFormation数据源"** 列表中选择要删除的LakeFormation数据源，单击所在行**"操作"** 列的**"删除"**。
6. 弹出对话框，确认无误后输入**"DELETE"** 或者单击**"一键输入"** ，单击**"确** **定** **"**，提交删除操作，删除操作过程大概需要10秒钟左右。
7. 删除完成后，在LakeFormation数据源列表中确认该数据源连接已从列表中消失，即表示删除成功。
 
#### 使用LakeFormation数据源
使用LakeFormation数据源操作详情请参见[使用LakeFormation数据源导入数据](https://support.huaweicloud.com/migration-dws/dws_15_0116.html)。
#### 相关文档
- 对接LakeFormation最佳实践：[湖仓一体：DWS通过对接Lakeformation读取MRS的Hive数据](https://support.huaweicloud.com/bestpractice-dws/dws_05_0038.html)
- LakeFormation介绍：[什么是湖仓构建LakeFormation](https://support.huaweicloud.com/productdesc-lakeformation/lakeformation_01_0001.html)
 
