Amazon Redshift가 구성된 Amazon RDS 제로 ETL 통합 생성 - Amazon Relational Database Service

Amazon Redshift가 구성된 Amazon RDS 제로 ETL 통합 생성

Amazon RDS 제로 ETL 통합을 생성할 때는 소스 RDS 데이터베이스와 대상 Amazon Redshift 데이터 웨어하우스를 지정합니다. 암호화 설정을 사용자 지정하고 태그를 추가할 수도 있습니다. Amazon RDS는 소스 데이터베이스와 대상 간에 통합을 생성합니다. 통합이 활성화되면 소스 데이터베이스에 삽입한 모든 데이터가 구성된 Amazon Redshift 대상에 복제됩니다.

사전 조건

제로 ETL 통합을 생성하기 전에 소스 데이터베이스와 대상 Amazon Redshift 데이터 웨어하우스를 생성해야 합니다. 또한 데이터베이스를 인증된 통합 소스로 추가하여 데이터 웨어하우스로의 복제를 허용해야 합니다.

각 단계를 완료하기 위한 지침은 Amazon Redshift가 구성된 Amazon RDS 제로 ETL 통합 시작하기 섹션을 참조하세요.

필수 권한

제로 ETL 통합을 생성하려면 특정 IAM 권한이 필요합니다. 최소한 다음 작업을 수행할 수 있는 권한이 필요합니다.

  • 소스 RDS 데이터베이스를 위한 제로 ETL 통합을 생성합니다.

  • 모든 제로 ETL 통합을 보고 삭제합니다.

  • 대상 데이터 웨어하우스에 인바운드 통합을 생성합니다. 동일한 계정이 Amazon Redshift 데이터 웨어하우스를 소유하고 있고 이 계정이 해당 데이터 웨어하우스의 승인된 보안 주체인 경우 이 권한이 필요하지 않습니다. 승인된 보안 주체 추가에 대한 자세한 내용은 Amazon Redshift 데이터 웨어하우스에 대한 권한 부여 구성을 참조하세요.

다음 샘플 정책은 통합을 생성하고 관리하는 데 필요한 최소 권한을 보여줍니다. 사용자 또는 역할에 더 광범위한 권한(예: AdministratorAccess 관리형 정책)이 있는 경우 이러한 정확한 권한이 필요하지 않을 수 있습니다.

참고

Redshift Amazon 리소스 이름(ARN)의 형식은 다음과 같습니다. 서버리스 네임스페이스 UUID 앞에는 콜론(:) 대신 슬래시((/)를 사용한다는 점에 유의하세요.

  • 프로비저닝된 클러스터 – arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

  • 서버리스 – arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rds:CreateIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:db:source-db", "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeIntegrations" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "rds:DeleteIntegration", "rds:ModifyIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid" ] }] }

다른 계정에서 대상 데이터 웨어하우스 선택

다른 AWS 계정에 있는 대상 Amazon Redshift 데이터 웨어하우스를 지정하려면 현재 계정의 사용자가 대상 계정의 리소스에 액세스할 수 있도록 허용하는 역할을 만들어야 합니다. 자세한 내용은 소유한 다른 AWS 계정의 IAM 사용자에 액세스 권한 제공을 참조하세요.

역할에는 사용자가 대상 계정에서 사용 가능한 Amazon Redshift 프로비저닝 클러스터와 Redshift Serverless 네임스페이스를 볼 수 있도록 허용하는 다음 권한이 있어야 합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusters", "redshift-serverless:ListNamespaces" ], "Resource":[ "*" ] } ] }

역할에는 대상 계정 ID를 지정하는 다음과 같은 신뢰 정책이 있어야 합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": "arn:aws:iam::{external-account-id}:root" }, "Action":"sts:AssumeRole" } ] }

역할을 생성하기 위한 지침은 사용자 지정 신뢰 정책을 사용하여 역할 생성을 참조하세요.

제로 ETL 통합 생성

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 제로 ETL 통합을 생성할 수 있습니다.

기본적으로 RDS for MySQL은 바이너리 로그 파일을 즉시 제거합니다. 제로 ETL 통합은 바이너리 로그를 사용하여 소스에서 대상으로 데이터를 복제하기 때문에 소스 데이터베이스의 보존 기간이 1시간 이상이어야 합니다. 통합을 생성하자마자 Amazon RDS는 선택한 소스 데이터베이스의 바이너리 로그 파일 보존 기간을 확인합니다. 현재 값이 0시간인 경우 Amazon RDS는 자동으로 값을 1시간으로 변경합니다. 0이 아니면 값이 동일하게 유지됩니다.

제로 ETL 통합을 생성하려면
  1. https://console.aws.amazon.com/rds/에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 제로 ETL 통합을 선택합니다.

  3. 제로 ETL 통합 생성을 선택합니다.

  4. 통합 식별자에 통합의 이름을 입력합니다. 이름은 최대 63자의 영숫자로 구성할 수 있으며, 하이픈을 포함할 수 있습니다.

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

  6. 소스에서 데이터의 출처가 될 RDS 데이터베이스를 선택합니다.

    참고

    DB 파라미터가 올바르게 구성되지 않은 경우 RDS에서 알려줍니다. 이 메시지를 받으면 수정 요청을 선택하거나 수동으로 구성할 수 있습니다. 수동으로 수정하는 방법에 대한 지침은 1단계: 사용자 지정 DB 파라미터 그룹 생성 섹션을 참조하세요.

    DB 파라미터를 수정하려면 재부팅해야 합니다. 통합을 생성하려면 먼저 재부팅을 완료하고 새 파라미터 값을 데이터베이스에 성공적으로 적용해야 합니다.

  7. 소스 데이터베이스가 성공적으로 구성되면 다음을 선택합니다.

  8. 대상에서 다음을 수행합니다.

    1. (선택 사항) Amazon Redshift 대상에 다른 AWS 계정를 사용하려면 다른 계정 지정을 선택합니다. 그런 다음 데이터 웨어하우스를 표시할 권한이 있는 IAM 역할의 ARN을 입력합니다. IAM 역할을 생성하는 방법에 대한 지침은 다른 계정에서 대상 데이터 웨어하우스 선택 섹션을 참조하세요.

    2. Amazon Redshift 데이터 웨어하우스의 경우 소스 데이터베이스에서 복제된 데이터의 대상을 선택합니다. 프로비저닝된 Amazon Redshift 클러스터 또는 Redshift Serverless 네임스페이스를 대상으로 선택할 수 있습니다.

    참고

    지정된 데이터 웨어하우스의 리소스 정책 또는 대/소문자 구분 설정이 올바르게 구성되지 않은 경우 RDS에서 알려줍니다. 이 메시지를 받으면 수정 요청을 선택하거나 수동으로 구성할 수 있습니다. 수동으로 수정하는 방법에 대한 지침은 Amazon Redshift 관리 가이드의 데이터 웨어하우스에 대/소문자 구분 기능 사용 설정데이터 웨어하우스에 대한 권한 부여 구성을 참조하세요.

    프로비저닝된 Redshift 클러스터의 대/소문자 구분을 수정하려면 재부팅해야 합니다. 통합을 생성하려면 먼저 재부팅을 완료하고 새 파라미터 값을 클러스터에 성공적으로 적용해야 합니다.

    선택한 소스와 대상이 다른 AWS 계정에 있는 경우 Amazon RDS에서 이러한 설정을 수정할 수 없습니다. Amazon Redshift에서 다른 계정으로 이동하여 수동으로 수정해야 합니다.

  9. 대상 데이터 웨어하우스가 올바르게 구성되었으면 다음을 선택합니다.

  10. (선택 사항) 태그에서 통합에 하나 이상의 태그를 추가합니다. 자세한 내용은 Amazon RDS 리소스에 태그 지정 단원을 참조하십시오.

  11. 암호화에서 통합을 암호화할 방법을 지정합니다. 기본적으로 RDS는 AWS 소유 키를 사용하여 모든 통합을 암호화합니다. 고객 관리형 키를 대신 선택하려면 암호화 설정 사용자 지정을 활성화하고 암호화에 사용할 KMS 키를 선택합니다. 자세한 내용은 Amazon RDS 리소스 암호화 단원을 참조하십시오.

    선택적으로 암호화 컨텍스트를 추가합니다. 자세한 내용은 AWS Key Management Service 개발자 가이드에서 암호화 컨텍스트를 참조하세요.

    참고

    Amazon RDS는 추가한 모든 항목 외에도 다음과 같은 암호화 컨텍스트 쌍을 추가합니다.

    • aws:redshift:integration:arn - IntegrationArn

    • aws:servicename:id - Redshift

    이렇게 하면 추가할 수 있는 전체 쌍 수가 8개에서 6개로 줄어들고 권한 부여 제약 조건의 전체 문자 제한이 늘어납니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 권한 부여 제약 사용을 참조하세요.

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

  13. 통합 설정을 검토하고 제로 ETL 통합 생성을 선택합니다.

    생성에 실패할 경우 제로 ETL 통합을 생성할 수 없습니다에서 문제 해결 단계를 확인하세요.

통합 상태는 생성 중인 동안 Creating이며, 대상 Amazon Redshift 데이터 웨어하우스의 상태는 Modifying입니다. 이 기간 동안에는 데이터 웨어하우스를 쿼리하거나 구성을 변경할 수 없습니다.

통합이 성공적으로 생성되면 통합 상태와 대상 Amazon Redshift 데이터 웨어하우스가 모두 Active로 변경됩니다.

AWS CLI를 사용하여 제로 ETL 통합을 생성하려면 다음 옵션과 함께 create-integration 명령을 사용하세요.

  • --integration-name - 통합 이름을 지정합니다.

  • --source-arn - 통합의 소스가 될 RDS 데이터베이스의 ARN을 지정합니다.

  • --target-arn - 통합의 대상이 될 Amazon Redshift 데이터 웨어하우스의 ARN을 지정합니다.

대상 LinuxmacOS, 또는Unix:

aws rds create-integration \ --integration-name my-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-db \ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

Windows의 경우:

aws rds create-integration ^ --integration-name my-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-db ^ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

Amazon RDS API를 사용하여 제로 ETL 통합을 생성하려면 다음 파라미터를 적용한 CreateIntegration 작업을 사용하세요.

  • IntegrationName - 통합 이름을 지정합니다.

  • SourceArn - 통합의 소스가 될 RDS 데이터베이스의 ARN을 지정합니다.

  • TargetArn - 통합의 대상이 될 Amazon Redshift 데이터 웨어하우스의 ARN을 지정합니다.

고객 관리형 키를 사용하여 통합 암호화

통합을 생성할 때 AWS 소유 키가 아닌 사용자 지정 KMS 키를 설정하는 경우 키 정책은 Amazon Redshift 서비스 보안 주체에 CreateGrant 작업에 대한 액세스 권한을 제공해야 합니다. 또한, 요청자 계정 또는 역할이 DescribeKeyCreateGrant 작업을 수행할 수 있도록 허용해야 합니다.

다음 샘플 키 정책 문은 정책 문서에 필요한 권한을 보여줍니다. 일부 예에는 권한 범위를 더 축소하기 위한 컨텍스트 키가 포함됩니다.

다음 정책 문을 사용하면 요청자 계정 또는 역할이 KMS 키에 대한 정보를 검색할 수 있습니다.

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:DescribeKey", "Resource":"*" }

다음 정책 문에서는 요청자 계정 또는 역할이 KMS 키에 권한 부여를 추가할 수 있도록 허용합니다. kms:ViaService 조건 키는 Amazon RDS로부터의 요청으로 KMS 키의 사용을 제한합니다.

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "kms:ViaService":"rds.{region}.amazonaws.com" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }

다음 정책 문은 Amazon Redshift 서비스 보안 주체가 KMS 키에 권한을 추가하는 것을 허용합니다.

{ "Effect":"Allow", "Principal":{ "Service":"redshift.amazonaws.com" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "aws:SourceAccount":"{account-ID}" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] }, "ArnLike":{ "aws:SourceArn":"arn:aws:*:{region}:{account-ID}:integration:*" } } }

자세한 내용은 AWS Key Management Service 개발자 안내서키 정책 생성을 참조하세요.

다음 단계

제로 ETL 통합을 성공적으로 생성한 후에는 대상 Amazon Redshift 클러스터 또는 작업 그룹 내에 대상 데이터베이스를 생성해야 합니다. 그런 다음 소스 RDS 데이터베이스에 데이터를 추가하고 Amazon Redshift에서 쿼리할 수 있습니다. 자세한 지침은 Amazon Redshift에서 대상 데이터베이스 생성을 참조하세요.