소비자로서 Lake Formation에서 관리하는 데이터 공유 사용 - Amazon Redshift

소비자로서 Lake Formation에서 관리하는 데이터 공유 사용

Amazon Redshift를 사용하면 AWS Lake Formation 데이터 공유를 통해 공유된 데이터에 액세스하고 분석할 수 있습니다. 데이터 공유는 다양한 데이터 소스의 테이블 또는 데이터베이스 등 데이터 객체 모음이 포함된 데이터 제품입니다.

AWS Lake Formation 관리자가 데이터 공유 초대를 검색하고 데이터 공유에 연결되는 AWS Glue Data Catalog에 데이터베이스를 생성한 후, 소비자 클러스터 또는 작업 그룹 관리자는 클러스터를 AWS Glue Data Catalog의 데이터 공유 및 데이터베이스와 연결하고 소비자 클러스터 또는 작업 그룹에 로컬 데이터베이스를 생성하며 Amazon Redshift 소비자 클러스터 또는 작업 그룹의 사용자 및 역할이 쿼리를 시작하도록 액세스 권한을 부여할 수 있습니다. 쿼리 권한을 설정하려면 다음 단계를 따르세요.

  1. 필요한 경우 Amazon Redshift 콘솔에서 소비자 클러스터 또는 작업 그룹 역할을 할 Redshift 클러스터를 생성합니다. 클러스터 생성 방법에 대한 자세한 내용은 클러스터 생성을 참조하세요.

  2. AWS Glue Data Catalog 소비자 클러스터 또는 작업 그룹 사용자가 액세스할 수 있는 데이터베이스를 나열하려면 SHOW DATABASES 명령을 실행합니다.

    SHOW DATABASES FROM DATA CATALOG [ACCOUNT <account-id>,<account-id2>] [LIKE <expression>]

    이렇게 하면 AWS Glue 데이터베이스의 ARN, 데이터베이스 이름 및 데이터 공유에 대한 정보와 같이 Data Catalog에서 사용할 수 있는 리소스가 나열됩니다.

  3. SHOW DATABASES의 AWS Glue 데이터베이스 ARN을 사용하여 소비자 클러스터 또는 작업 그룹에 로컬 데이터베이스를 생성합니다. 자세한 내용은 Creating a database(데이터베이스 생성)를 참조하세요.

    CREATE DATABASE lf_db FROM ARN <lake-formation-database-ARN> WITH [NO] DATA CATALOG SCHEMA [<schema>];
  4. 필요에 따라 소비자 클러스터 또는 작업 그룹의 사용자 및 역할에 데이터 공유에서 생성된 데이터베이스 및 스키마 참조에 대한 액세스 권한을 부여합니다. 자세한 내용은 GRANT 또는 REVOKE를 참조하세요. CREATE USER 명령으로 생성된 사용자는 Lake Formation에 공유된 데이터 공유의 객체에 액세스할 수 없습니다. Redshift와 Lake Formation 모두에 대한 액세스 권한이 있는 사용자만 Lake Formation과 공유된 데이터 공유에 액세스할 수 있습니다.

    GRANT USAGE ON DATABASE sales_db TO IAM:Bob;

    소비자 클러스터 또는 작업 그룹 관리자는 데이터 공유에서 생성된 전체 데이터베이스에 대한 권한만 사용자와 역할에 할당할 수 있습니다. 경우에 따라 datashare에서 생성된 데이터베이스 객체의 하위 집합에 대한 세분화된 제어가 필요합니다.

    또한 공유 객체 위에 후기 바인딩 뷰를 생성하고 이를 사용하여 세분화된 권한을 할당할 수 있습니다. 생산자 클러스터 또는 작업 그룹이 필요한 세분성으로 추가 데이터 공유를 생성하도록 할 수도 있습니다. datashare에서 생성된 데이터베이스에 대한 많은 스키마 참조를 생성할 수 있습니다.

  5. 데이터베이스 사용자는 SVV_EXTERNAL_TABLES 및 SVV_EXTERNAL_COLUMNS 뷰를 사용하여 AWS Glue 데이터베이스 내의 모든 공유 테이블 또는 열을 찾을 수 있습니다.

    SELECT * from svv_external_tables WHERE redshift_database_name = 'lf_db'; SELECT * from svv_external_columns WHERE redshift_database_name = 'lf_db';
  6. datashare의 공유 객체에서 데이터를 쿼리합니다.

    소비자 데이터베이스 및 소비자 클러스터 또는 작업 그룹의 스키마에 대한 권한이 있는 사용자와 역할은 모든 공유 객체의 메타데이터를 탐색할 수 있습니다. 또한 소비자 클러스터 또는 작업 그룹에서 로컬 객체를 탐색할 수 있습니다. 이를 위해 JDBC 또는 ODBC 드라이버나 SVV_ALL 및 SVV_EXTERNAL 뷰를 사용할 수 있습니다.

    SELECT * FROM lf_db.schema.table;

    공유 객체에는 SELECT 문만 사용할 수 있습니다. 그러나 다른 로컬 데이터베이스에 있는 공유 객체의 데이터를 쿼리하여 소비자 클러스터에 테이블을 생성할 수 있습니다.

    // Connect to a local cluster database // Create a view on shared objects and access it. CREATE VIEW sales_data AS SELECT * FROM sales_db.public.tickit_sales_redshift WITH NO SCHEMA BINDING; SELECT * FROM sales_data;