AWS 분석 서비스에서 Amazon S3 Tables 사용
AWS 분석 서비스에서 계정의 테이블에 액세스할 수 있도록 하려면 Amazon S3 Tables 버킷을 Amazon SageMaker Lakehouse와 통합하세요. 이 통합을 통해 AWS 분석 서비스는 테이블 데이터를 자동으로 검색하고 액세스할 수 있습니다. 이 통합을 사용하여 아래 서비스에서 테이블을 사용할 수 있습니다.
참고
이 통합은 AWS Glue 및 AWS Lake Formation 서비스를 사용하며 AWS Glue 요청 및 스토리지 비용이 발생할 수 있습니다. 자세한 내용은 AWS Glue 요금
S3 테이블에서 쿼리를 실행하는 경우 추가 요금이 적용됩니다. 자세한 내용은 사용 중인 쿼리 엔진의 요금 정보를 참조하세요.
통합의 작동 방식
콘솔에서 테이블 버킷을 생성하면 Amazon S3는 다음 작업을 시작하여 선택한 리전의 테이블 버킷을 AWS 분석 서비스와 통합합니다.
-
Lake Formation에 모든 테이블 버킷에 대한 액세스 권한을 부여하는 새 AWS Identity and Access Management(IAM) 서비스 역할을 생성합니다.
-
Lake Formation은 이 서비스 역할을 사용하여 현재 리전에 테이블 버킷을 등록합니다. 이를 통해 Lake Formation은 해당 리전의 모든 현재 및 미래 테이블 버킷에 대한 액세스, 권한 및 거버넌스를 관리할 수 있습니다.
-
현재 리전의 AWS Glue Data Catalog에
s3tablescatalog
카탈로그를 추가합니다.s3tablescatalog
카탈로그를 추가하면 모든 테이블 버킷, 네임스페이스 및 테이블이 Data Catalog에 채워집니다.
참고
이러한 작업은 Amazon S3 콘솔을 통해 자동화됩니다. 프로그래밍 방식으로 이 통합을 수행하는 경우 이러한 모든 작업을 수동으로 수행해야 합니다.
테이블 버킷을 AWS 리전당 한 번 통합합니다. 통합이 완료되면 모든 현재 및 미래의 테이블 버킷, 네임스페이스 및 테이블이 해당 리전의 AWS Glue Data Catalog에 추가됩니다.
다음 그림은 s3tablescatalog
카탈로그가 현재 리전의 테이블 버킷, 네임스페이스 및 테이블을 Data Catalog에서 대응하는 객체로 자동으로 채우는 방법을 보여줍니다. 테이블 버킷은 하위 카탈로그로 채워집니다. 테이블 버킷 내의 네임스페이스는 해당 하위 카탈로그 내의 데이터베이스로 채워집니다. 테이블은 해당하는 데이터베이스의 테이블로 채워집니다.

권한이 작동하는 방법
AWS Glue Data Catalog를 메타데이터 스토어로 사용하는 서비스 전체에서 테이블 데이터를 사용할 수 있도록 테이블 버킷을 AWS 분석 서비스와 통합하는 것이 좋습니다. 통합을 사용하면 AWS Lake Formation을 통해 세분화된 액세스 제어를 사용할 수 있습니다. 이 보안 접근 방식은 AWS Identity and Access Management(IAM) 권한 외에도 테이블에 대한 IAM 위탁자 Lake Formation 권한을 부여해야 작업할 수 있습니다.
AWS Lake Formation에는 다음과 같은 두 가지 주요 권한 유형이 있습니다.
-
메타데이터 액세스 권한은 Data Catalog에서 메타데이터 데이터베이스 및 테이블을 생성하고, 읽고, 업데이트하고, 삭제할 수 있는 기능을 제어합니다.
-
기본 데이터 액세스 권한은 Data Catalog 리소스가 가리키는 기본 Amazon S3 위치에 데이터를 읽고 쓰는 기능을 제어합니다.
Lake Formation은 자체 권한 모델과 IAM 권한 모델의 조합을 사용하여 Data Catalog 리소스 및 기본 데이터에 대한 액세스를 제어합니다.
-
Data Catalog 리소스 또는 기본 데이터에 대한 액세스 요청이 성공하려면 요청이 IAM과 Lake Formation의 권한 검사를 모두 통과해야 합니다.
-
IAM 권한은 Lake Formation 및 AWS Glue API 및 리소스에 대한 액세스를 제어하는 반면, Lake Formation 권한은 Data Catalog 리소스, Amazon S3 위치 및 기본 데이터에 대한 액세스를 제어합니다.
Lake Formation 권한은 권한이 부여된 리전에서만 적용되며, 위탁자는 Lake Formation 권한을 부여받으려면 필요한 권한이 있는 데이터 레이크 관리자 또는 다른 위탁자의 승인을 받아야 합니다.
자세한 내용은 AWS Lake Formation 개발자 안내서의 Lake Formation 권한 개요를 참조하십시오.
통합 조건 및 테이블 버킷을 AWS 분석 서비스와 통합의 단계를 수행하여 AWS Glue Data Catalog 및 테이블 리소스에 액세스하고 AWS 분석 서비스를 사용할 수 있는 적절한 권한이 있는지 확인합니다.
중요
계정의 AWS 분석 서비스와 테이블 버킷 통합을 수행한 사용자가 아닌 경우 테이블에 필요한 Lake Formation 권한을 부여받아야 합니다. 자세한 내용은 테이블 또는 데이터베이스에 대한 권한 부여 단원을 참조하십시오.
통합 조건
테이블 버킷을 AWS 분석 서비스와 통합하려면 다음 사전 조건을 충족해야 합니다.
AWSLakeFormationDataAdmin AWS 관리형 정책을 AWS Identity and Access Management(IAM) 위탁자에 연결하여 해당 사용자를 데이터 레이크 관리자로 생성합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 데이터 레이크 관리자 생성을 참조하세요.
-
IAM 위탁자에
glue:PassConnection
작업에 대한 권한을 추가합니다. -
IAM 위탁자에
lakeformation:RegisterResource
및lakeformation:RegisterResourceWithPrivilegedAccess
작업에 대한 권한을 추가합니다.
테이블 버킷을 AWS 분석 서비스와 통합
이 통합은 AWS 리전당 한 번 수행해야 합니다.
중요
이제 AWS 분석 서비스 통합은 registerResource
Lake Formation API 작업의 WithPrivilegedAccess
옵션을 사용하여 S3 테이블 버킷을 등록합니다. 통합은 이제 CreateCatalog
AWS Glue API 작업의 AllowFullTableExternalDataAccess
옵션을 사용하여 AWS Glue Data Catalog에 s3tablescatalog
카탈로그도 생성합니다.
미리 보기 릴리스와의 통합을 설정한 경우 현재 통합을 계속 사용할 수 있습니다. 그러나 업데이트된 통합 프로세스는 성능 개선을 제공하므로 마이그레이션하는 것이 좋습니다. 업데이트된 통합으로 마이그레이션하려면 업데이트된 통합 프로세스로 마이그레이션 섹션을 참조하세요.
https://console.aws.amazon.com/s3/
에서 Amazon S3 콘솔을 엽니다. 왼쪽 탐색 창에서 테이블 버킷을 선택합니다.
테이블 버킷 생성을 선택합니다.
테이블 버킷 생성 페이지가 열립니다.
테이블 버킷 이름을 입력하고 통합 활성화 확인란이 선택되어 있는지 확인합니다.
테이블 버킷 생성을 선택합니다. Amazon S3는 해당 리전에서 테이블 버킷을 자동으로 통합하려고 시도합니다.
어떤 리전에서든 테이블 버킷을 처음 통합하면 Amazon S3가 사용자를 대신하여 새 IAM 서비스 역할을 생성합니다. 이 역할을 통해 Lake Formation은 계정의 모든 테이블 버킷에 액세스하고 AWS Glue Data Catalog의 테이블에 대한 액세스를 페더레이션할 수 있습니다.
AWS CLI를 사용하여 테이블 버킷을 통합하는 방법
다음 단계에서는 AWS CLI를 사용하여 테이블 버킷을 통합하는 방법을 보여줍니다. 이 단계를 사용하려면
를 실제 정보로 대체합니다.user input placeholders
테이블 버킷을 생성합니다.
aws s3tables create-table-bucket \ --region
us-east-1
\ --nameamzn-s3-demo-table-bucket
-
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-name
S3TablesRoleForLakeFormation
\ --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-name
S3TablesRoleForLakeFormation
\ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --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":[] } }다음 명령을 사용하여
s3tablescatalog
카탈로그를 생성합니다. 이 카탈로그를 생성하면 테이블 버킷, 네임스페이스 및 테이블에 해당하는 객체로 AWS Glue Data Catalog를 채웁니다.aws glue create-catalog \ --region
us-east-1
\ --allow-full-table-external-data-access \ --cli-input-json file://catalog.json
다음 명령을 사용하여
s3tablescatalog
카탈로그가 AWS Glue에 추가되었는지 확인합니다.aws glue get-catalog --catalog-id s3tablescatalog
AWS 분석 서비스 통합 프로세스가 업데이트되었습니다. 미리 보기 릴리스와의 통합을 설정한 경우 현재 통합을 계속 사용할 수 있습니다. 그러나 업데이트된 통합 프로세스는 성능을 개선하므로 다음 단계를 사용하여 마이그레이션하는 것이 좋습니다. 마이그레이션 또는 통합 프로세스에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 AWS Glue Data Catalog에서 Amazon S3 Tables 카탈로그 생성을 참조하세요.
-
https://console.aws.amazon.com/lakeformation/
에서 AWS Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 데이터 레이크 관리자 생성을 참조하세요. -
다음을 수행하여
s3tablescatalog
카탈로그를 삭제합니다.-
왼쪽 탐색 창에서 카탈로그를 선택합니다.
-
카탈로그 목록의
s3tablescatalog
카탈로그 옆에 있는 옵션 버튼을 선택합니다. [Actions] 메뉴에서 [Delete]를 선택합니다.
-
-
다음을 수행하여
s3tablescatalog
카탈로그의 데이터 위치를 등록 취소합니다.-
왼쪽 탐색 창에서 관리 섹션으로 이동하고 데이터 레이크 위치를 선택합니다.
-
s3tablescatalog
데이터 레이크 위치 옆의 옵션 버튼을 선택합니다. 예를 들어,s3://tables:
입니다.region
:account-id
:bucket/* -
작업 메뉴에서 제거를 선택합니다.
-
나타나는 대화 상자에서 제거를 선택합니다.
-
-
이제
s3tablescatalog
카탈로그 및 데이터 레이크 위치를 삭제했으므로 업데이트된 통합 프로세스를 사용하여 테이블 버킷을 AWS 분석 서비스와 통합하는 단계를 수행할 수 있습니다.
테이블의 네임스페이스에 대한 리소스 링크 생성(Amazon Data Firehose)
테이블에 액세스하려면 Amazon Data Firehose에 테이블의 네임스페이스를 대상으로 하는 리소스 링크가 필요합니다. 리소스 링크는 데이터베이스 또는 테이블과 같은 다른 Data Catalog 리소스에 대한 별칭 또는 포인터 역할을 하는 Data Catalog 객체입니다. 링크는 계정 또는 생성된 리전의 Data Catalog에 저장됩니다. 자세한 내용은 AWS Lake Formation 개발자 안내서의 How resource links work를 참조하세요.
테이블 버킷을 AWS 분석 서비스와 통합한 후 Amazon Data Firehose의 테이블과 함께 사용할 리소스 링크를 생성할 수 있습니다. 이러한 링크 생성에 대한 자세한 내용은 Amazon Data Firehose를 사용하여 테이블에 데이터 스트리밍 섹션을 참조하세요.
테이블 리소스에 대한 Lake Formation 권한 부여
테이블 버킷이 AWS 분석 서비스와 통합되면 Lake Formation은 테이블 리소스에 대한 액세스를 관리합니다. Lake Formation은 Data Catalog 리소스에 대한 세분화된 액세스 제어를 활성화하는 자체 권한 모델(Lake Formation 권한)을 사용합니다. Lake Formation에서는 Lake Formation에서 관리하는 리소스에 대해 작업을 수행할 수 있는 권한을 각 IAM 위탁자(사용자 또는 역할)에 부여해야 합니다. 자세한 내용은 AWS Lake Formation 개발자 안내서의 Lake Formation 권한 개요를 참조하십시오. 계정 간 데이터 공유에 대한 자세한 내용은 AWS Lake Formation개발자 안내서의 Lake Formation에서의 계정 간 데이터 공유를 참조하세요.
IAM 위탁자가 AWS 분석 서비스의 테이블에 액세스하려면 먼저 해당 리소스에 대한 Lake Formation 권한을 부여해야 합니다.
참고
테이블 버킷 통합을 수행한 사용자인 경우 테이블에 대한 Lake Formation 권한이 이미 있습니다. 테이블에 액세스할 유일한 위탁자인 경우 이 단계를 건너뛸 수 있습니다. 테이블에 대한 Lake Formation 권한을 다른 IAM 위탁자에게 부여하기만 하면 됩니다. 이렇게 하면 다른 위탁자가 쿼리를 실행할 때 테이블에 액세스할 수 있습니다. 자세한 내용은 테이블 또는 데이터베이스에 대한 권한 부여 단원을 참조하십시오.
다음 서비스에서 테이블 리소스를 사용하려면 테이블 리소스에 대한 Lake Formation 권한을 다른 IAM 위탁자에게 부여해야 합니다.
-
Amazon Redshift
-
Amazon Data Firehose
-
Amazon QuickSight
-
Amazon Athena
참고
리소스 링크를 사용하여 테이블에 액세스하는 Amazon Data Firehose의 경우 리소스 링크와 대상(링크로 연결됨) 네임스페이스 모두에 별도로 권한을 부여해야 합니다. 자세한 내용은 리소스 링크에 대한 권한 부여 단원을 참조하십시오.
테이블 또는 데이터베이스에 대한 권한 부여
Lake Formation 콘솔 또는 AWS CLI를 통해 위탁자에게 테이블 버킷의 테이블 또는 데이터베이스에 대한 Lake Formation 권한을 부여할 수 있습니다.
참고
데이터 카탈로그 리소스에 대한 Lake Formation 권한을 외부 계정에 부여하거나 다른 계정의 IAM 보안 주체에 직접 부여하면 Lake Formation은 AWS Resource Access Manager(AWS RAM) 서비스를 사용하여 리소스를 공유합니다. 피부여자 계정이 부여자 계정과 동일한 조직에 속해 있는 경우, 피부여자는 공유 리소스를 즉시 사용할 수 있습니다. 피부여자 계정이 같은 조직에 속해 있지 않은 경우, AWS RAM은 피부여자 계정에 리소스 부여를 수락하거나 거부하라는 초대를 보냅니다. 그런 다음 공유 리소스를 사용할 수 있게 하려면 피부여자 계정의 데이터 레이크 관리자가 AWS RAM 콘솔 또는 AWS CLI를 사용하여 초대를 수락해야 합니다. 계정 간 데이터 공유에 대한 자세한 내용은 AWS Lake Formation개발자 안내서의 Lake Formation에서의 계정 간 데이터 공유를 참조하세요.