本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启用 Amazon S3 表类数据存储服务集成
您可以使用 Amazon S3 控制台创建 Amazon S3 表类数据存储服务存储桶,并将其与 Amazon 分析服务集成。有关更多信息,请参阅将 Amazon S3 表类数据存储服务与 Amazon 分析服务配合使用。
在中 Amazon Lake Formation,您可以启用 Amazon S3 表格与 Amazon Glue Data Catalog Lake Formation 控制台的集成,也可以 Amazon Lake Formation 使用 Lake Formation 控制台或使用 Amazon CLI。
-
打开 Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/
。 在导航窗格的 Data Catalog 下,选择目录。
在目录页面上选择启用 S3 表集成。
-
选择一个具有所需权限的 IAM 角色,供 Lake Formation 代入,以便向分析查询引擎提供凭证。有关该角色访问数据所需的权限,请参阅先决条件部分的step3-permissions。
-
选择支持外部引擎以完全表访问权限访问 Amazon S3 位置的数据选项。当您为第三方引擎启用完全表访问权限时,Lake Formation 将直接向第三方引擎返回凭证,而无需执行 IAM 会话标签验证。这意味着您无法对要访问的表应用 Lake Formation 精细访问控制。
请选择启用。S3 表的新目录已添加到目录列表中。启用 S3 表目录集成后,该服务会向 Lake Formation 注册 S3 表存储桶的数据位置。
-
选择目录以查看目录对象并向其他主体授予权限。
要创建多级目录,请参阅《Amazon Simple Storage Service 用户指南》中的创建表存储桶部分。
在先决条件部分之后,创建一个允许 Lake Formation 访问您的表资源的 IAM 服务角色。
-
创建一个名为
Role-Trust-Policy.json的文件,其中包含以下信任策略:{ "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPolicy", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] } -
使用以下命令创建 IAM 服务角色:
aws iam create-role \ --role-nameS3TablesRoleForLakeFormation\ --assume-role-policy-document file://Role-Trust-Policy.json -
创建一个名为
LF-GluePolicy.json的文件,其中包含以下策略:{ "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationPermissionsForS3ListTableBucket", "Effect": "Allow", "Action": [ "s3tables:ListTableBuckets" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:GetTableBucket", "s3tables:CreateNamespace", "s3tables:GetNamespace", "s3tables:ListNamespaces", "s3tables:DeleteNamespace", "s3tables:DeleteTableBucket", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:ListTables", "s3tables:RenameTable", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": [ "arn:aws:s3tables:us-east-1:111122223333:bucket/*" ] } ] } -
使用以下命令将策略附加到角色:
aws iam put-role-policy \ --role-nameS3TablesRoleForLakeFormation\ --policy-nameLakeFormationDataAccessPermissionsForS3TableBucket\ --policy-document file://LF-GluePolicy.json -
创建一个名为
input.json的文件,其中包含以下内容:{ "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation" } -
使用以下命令在 Lake Formation 中注册表存储桶:
aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json -
创建一个名为
catalog.json的文件,其中包含以下目录:{ "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions": [], "CreateTableDefaultPermissions": [], "AllowFullTableExternalDataAccess": "True" } } -
使用以下命令创建
s3tablescatalog目录。创建此目录时,会 Amazon Glue Data Catalog 使用与表存储桶、命名空间和表对应的对象填充。aws glue create-catalog \ --region us-east-1 \ --cli-input-json file://catalog.json -
使用以下命令验证是否已添加
s3tablescatalog目录: Amazon Glueaws glue get-catalog --catalog-id s3tablescatalog