在AWS Lake Formation中,数据的访问控制是基于元数据访问控制和数据位置权限两个方面的。
元数据访问控制用于管理AWS Glue数据目录和AWS Lake Formation权限。数据目录是表的所有元信息和架构的元数据集合。Lake Formation对Glue数据目录的元数据进行了扩展,以提供对表和分类的更细粒度的访问控制和元数据定义。这种访问控制建立在基于IAM的权限上,并基于访问控制列表(ACL)来管理对表和分类的访问。
数据位置权限是通过指定S3桶名和前缀路径来定义的。可以使用存储桶策略和S3 ACL来控制对存储桶的访问权限和对特定路径或文件的访问权限。
以下是一个示例,演示如何使用元数据访问控制来限制用户对特定表的访问权限:
首先,创建一个Glue数据目录,并将该目录注册到Lake Formation,以便后续定义元数据和访问控制。
import boto3
glue = boto3.client('glue')
lakeformation = boto3.client('lakeformation')
database_name = 'my_db'
table_name = 'my_table'
s3_path = 's3://my_bucket/my_path/'
# create database
glue.create_database(DatabaseInput={'Name': database_name})
# create table
glue.create_table(
DatabaseName=database_name,
TableInput={
'Name': table_name,
'StorageDescriptor': {
'Location': s3_path,
'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat',
'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',
'SerdeInfo': {
'SerializationLibrary': 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe',