You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda脚本调用LakeFormation授权报错:TableWildcard参数不合法

问题排查:Lambda调用LakeFormation grant_permissions接口参数错误

错误信息

Error granting permission:Parameter validation failed
Unknown parameter in Resource.Table.TableWildcard:"TableWildcard",must be one of:

问题分析

脚本中对TableWildcard的写法不符合AWS LakeFormation API规范。根据定义,TableWildcard是一个空结构体,仅用来表示匹配指定数据库下的所有表,不需要传入任何额外参数(你写的{db_name}.%这种通配符格式完全错误)。

你错误地给TableWildcard嵌套了同名键值对,直接触发了参数校验失败。

修正后的代码

import json
import boto3

def lambda_handler(event, context):

    lf_client = boto3.client('lakeformation')
    account_id = "123456789012"  
    db_name = event["DatabaseName"]

    try:
        lf_client.grant_permissions(
           Principal={
               "DataLakePrincipalIdentifier": f"arn:aws:iam::{account_id}:role/service-role/AWSLambdaBasicExecutionRole"
           },
           Resource={
                "Table": {
                    "DatabaseName": db_name,
                    "TableWildcard": {}  # 改为空结构体即可
                }
            },
            Permissions=["ALL"]   
        )

        print(f"已为数据库 {db_name} 授予权限")
        
        return {
            "statusCode": 200,
            "body": json.dumps("权限授予成功")
        }

    except Exception as e:
        print(e)
        raise e

补充说明

  • 若需匹配特定表而非所有表,应使用TableName字段指定具体表名,而非TableWildcard。
  • TableWildcard的唯一作用就是匹配指定数据库下的全部表,无需额外配置通配符表达式。

内容的提问来源于stack exchange,提问作者Shubham Badhaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:28:26