AWS CloudFormation으로 PostgreSQL에 대한 연합 쿼리 사용 시작하기 - Amazon Redshift

AWS CloudFormation으로 PostgreSQL에 대한 연합 쿼리 사용 시작하기

연합 쿼리를 사용하여 운영 데이터베이스 간에 쿼리할 수 있습니다. 이 시작 안내서에서는 샘플 AWS CloudFormation 스택을 사용하여 Amazon Redshift 클러스터에서 Aurora PostgreSQL 서버리스 데이터베이스로의 연합 쿼리를 사용하여 설정을 자동화할 수 있습니다. 리소스를 프로비저닝하기 위해 SQL 문을 실행할 필요 없이 빠르게 시작하고 실행할 수 있습니다.

스택은 샘플 데이터가 있는 테이블을 포함하는 Aurora PostgreSQL 인스턴스를 참조하는 외부 스키마를 생성합니다. Redshift 클러스터에서 외부 스키마의 테이블을 쿼리할 수 있습니다.

대신 CloudFormation을 사용하지 않고 SQL 문을 실행하여 외부 스키마를 설정하여 연합 쿼리를 시작하려는 경우 PostgreSQL에 대한 연합 쿼리 사용 시작하기 섹션을 참조하세요.

연합 쿼리를 위해 CloudFormation 스택을 실행하기 전에 Data API가 설정된 Amazon Aurora PostgreSQL 호환 버전 서버리스 데이터베이스가 있는지 확인합니다. 데이터베이스 속성에서 Data API를 설정할 수 있습니다. 설정을 찾을 수 없으면 Aurora PostgreSQL의 서버리스 인스턴스를 실행하고 있는지 다시 확인하세요. 또한 RA3 노드를 사용하는 Amazon Redshift 클러스터가 있는지 확인하세요. Redshift 클러스터와 서버리스 Aurora PostgreSQL 인스턴스가 동일한 Virtual Private Cloud(VPC) 및 서브넷 그룹에 있는 것이 좋습니다. 이런 방식으로 Aurora PostgreSQL 데이터베이스 인스턴스에 대한 보안 그룹의 인바운드 규칙에 Amazon Redshift 클러스터의 보안 그룹을 추가할 수 있습니다.

Amazon Redshift 클러스터 설정 시작하기에 관한 자세한 내용은 Amazon Redshift 프로비저닝 클러스터를 참조하세요. CloudFormation으로 리소스 설정에 대한 자세한 내용은 AWS CloudFormation이란 무엇인가요?를 참조하세요. Aurora DB 클러스터 데이터베이스 설정에 대한 자세한 내용은 Aurora DB 클러스터 Serverless v1 DB 클러스터 생성을 참조하세요.

Redshift 연합 쿼리를 위한 CloudFormation 스택 시작

다음 절차에 따라 Amazon Redshift용 CloudFormation 스택을 시작하여 연합 쿼리를 사용합니다. 이렇게 하기 전에 Amazon Redshift 클러스터와 서버리스 Aurora PostgreSQL 인스턴스를 설정했는지 확인합니다.

연합 쿼리용 CloudFormation 스택을 시작하려면
  1. 여기에서 CFN 스택 시작(Launch CFN stack)을 클릭하여 AWS Management Console에서 CloudFormation 서비스를 시작합니다.

    메시지가 나타나면 로그인합니다.

    Amazon S3에 저장된 CloudFormation 템플릿 파일을 참조하여 스택 생성 프로세스가 시작됩니다. CloudFormation 템플릿은 스택을 구성하는 AWS 리소스를 선언하는 JSON 형식의 텍스트 파일입니다.

  2. 다음(Next)을 선택하여 스택 세부 정보를 입력합니다.

  3. 파라미터(Parameters)에서 클러스터에 대해 다음을 입력합니다.

    • Amazon Redshift 클러스터 이름(예: ra3-consumer-cluster)

    • 특정 데이터베이스 이름(예: dev)

    • 데이터베이스 사용자의 이름입니다(예: consumeruser).

    또한 사용자, 데이터베이스 이름, 포트 및 엔드포인트를 포함하여 Aurora DB 클러스터 데이터베이스에 대한 파라미터를 입력합니다. 스택은 여러 데이터베이스 객체를 생성하므로 테스트 클러스터와 테스트 서버리스 데이터베이스를 사용하는 것이 좋습니다.

    Next(다음)를 선택합니다.

    스택 옵션이 나타납니다.

  4. 다음(Next)을 선택하여 기본 설정을 적용합니다.

  5. 기능(Capabilities)에서 AWS CloudFormation 에서 IAM 리소스를 생성할 수 있음을 승인합니다(I acknowledge that AWS CloudFormation might create IAM resources)를 선택합니다.

  6. 스택 생성을 선택합니다.

스택 생성을 선택합니다. CloudFormation은 약 10분 정도 소요되는 템플릿 리소스를 프로비저닝하고 외부 스키마를 생성합니다.

스택이 생성되는 동안 오류가 발생하면 다음을 수행합니다.

  • 오류 해결에 도움이 되는 정보는 CloudFormation 이벤트(Events) 탭을 참조합니다.

  • Redshift 클러스터에 대해 올바른 이름, 데이터베이스 이름 및 데이터베이스 사용자 이름을 입력했는지 확인합니다. 또한 Aurora PostgreSQL 인스턴스의 파라미터도 확인합니다.

  • 클러스터에 RA3 노드가 있는지 확인합니다.

  • 데이터베이스와 Redshift 클러스터가 동일한 서브넷 및 보안 그룹에 있는지 확인합니다.

외부 스키마에서 데이터 쿼리

다음 절차를 사용하려면 설명된 클러스터와 데이터베이스에서 쿼리를 실행하는 데 필요한 권한이 있는지 확인해야 합니다.

연합 쿼리를 사용하여 외부 데이터베이스를 쿼리하려면
  1. Redshift 쿼리 편집기와 같은 클라이언트 도구를 사용하여 스택을 생성할 때 입력한 Redshift 데이터베이스에 연결합니다.

  2. 스택에서 생성한 외부 스키마를 쿼리합니다.

    select * from svv_external_schemas;

    SVV_EXTERNAL_SCHEMAS 보기는 사용 가능한 외부 스키마에 대한 정보를 반환합니다. 이 경우 스택에 의해 생성된 외부 스키마 myfederated_schema가 반환됩니다. 설정한 경우 다른 외부 스키마가 반환될 수도 있습니다. 보기는 스키마의 연결된 데이터베이스도 반환합니다. 데이터베이스는 스택을 생성할 때 입력한 Aurora DB 클러스터 데이터베이스입니다. 스택은 Aurora DB 클러스터 데이터베이스에 category라는 테이블과 sales라는 또 다른 테이블을 추가합니다.

  3. Aurora PostgreSQL 데이터베이스를 참조하는 외부 스키마의 테이블에서 SQL 쿼리를 실행합니다. 다음 예에서는 쿼리를 보여줍니다.

    SELECT count(*) FROM myfederated_schema.category;

    category 테이블은 여러 레코드를 반환합니다. sales 테이블에서 레코드를 반환할 수도 있습니다.

    SELECT count(*) FROM myfederated_schema.sales;

    더 많은 예제는 연합 쿼리 사용 예를 참조합니다.