기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS자체 관리형 데이터베이스 소스를 위한 제로 ETL 통합
AWS제로 ETL 통합은 여러 운영 및 트랜잭션 데이터베이스 소스의 Amazon Redshift, Amazon S3 및 Amazon S3 Tables에서 트랜잭션 및 운영 데이터를 사용할 수 있도록 하는 완전관리형 솔루션입니다. 제로 ETL을 사용하면 기존AWS Database Migration Service(AWS DMS) 소스 엔드포인트를 통해 MySQL, PostgreSQL, SQL Server 및 Oracle과 같은 자체 관리형 소스 데이터베이스에서 Amazon Redshift로 데이터를 복제할 수 있습니다. 자동 동기화는 기존 추출, 변환 및 로드(ETL) 프로세스를 방지합니다. 또한 실시간 분석 및 AI 워크로드를 지원합니다. 자세한 내용은 Amazon Redshift 관리 안내서의 제로 ETL 통합을 참조하세요.
제로 ETL 통합은 다음과 같은 이점을 제공합니다.
-
실시간 데이터 복제 - 지연 시간을 최소화하면서 Oracle 데이터베이스에서 Amazon Redshift로의 지속적인 데이터 동기화.
-
복잡한 ETL 파이프라인 제거 - 사용자 지정 데이터 통합 솔루션을 구축하고 유지 관리할 필요가 없습니다.
-
운영 오버헤드 감소 - AWSAPIs 통한 자동 설정 및 관리.
-
간소화된 데이터 통합 아키텍처 - 자체 관리형 데이터베이스와 AWS분석 서비스 간의 원활한 통합.
-
보안 강화 - 기본 제공 암호화 및 IAM 액세스 제어.
자체 관리형 데이터베이스 소스에서 제로 ETL 통합이 작동하는 방식
이전에 자체 관리형 데이터베이스에 대해 생성한 기존 AWS DMS엔드포인트를 사용하거나 새 엔드포인트를 생성할 수 있습니다.
-
AWS Glue콘솔 또는 CLI를 사용하여 AWS Glue카탈로그에서 대상으로 Amazon Redshift와의 제로 ETL 통합을 생성합니다. 제로 ETL 통합을 생성할 때 스키마 및 테이블 필터를 지정할 수 있습니다.
-
통합과 관련된 추가 읽기 전용 리소스는 AWS DMS서비스 내에 자동으로 생성됩니다. 제로 ETL 엔진을 포함한 이러한 리소스는 전체 로드 및 지속적인 데이터 변경 프로세스를 시작하고 데이터를 Amazon Redshift 대상 데이터베이스와 동기화하는 데 사용됩니다.
-
통합 소스를 생성할 때, 제로 ETL 통합을 생성할 때, Amazon Redshift 데이터 웨어하우스를 생성할 때 데이터의 암호화를 제어합니다.
-
통합은 데이터 파이프라인의 상태를 모니터링하고 가능한 경우 문제로부터 복구합니다.
-
동일한 유형의 소스에서 단일 Amazon Redshift 데이터 웨어하우스로 통합을 생성하여 여러 애플리케이션에 걸쳐 전체적인 인사이트를 도출할 수 있습니다.
데이터가 복제되면 Amazon Redshift의 분석 기능을 사용할 수 있습니다. 제공되는 분석 기능에는 기본 제공 기계 학습(ML), 구체화된 뷰, 데이터 공유, 여러 데이터 저장소 및 데이터 레이크에 대한 직접 액세스 등이 있습니다. 데이터 엔지니어의 경우 제로 ETL 통합을 통해 복잡한 데이터 파이프라인의 간헐적 오류로 인해 지연될 수 있는 시간에 민감한 데이터에 액세스할 수 있습니다. 트랜잭션 데이터에서 분석 쿼리와 ML 모델을 실행하여 시간에 민감한 이벤트와 비즈니스 의사 결정에 대한 시기적절한 인사이트를 도출할 수 있습니다.
제로 ETL 통합에 문제가 발생할 때 자동으로 알림을 받을 Amazon Redshift 이벤트 알림 구독을 생성할 수 있습니다. 통합 관련 이벤트 알림 목록을 보려면 Amazon EventBridge를 사용한 제로 ETL 통합 이벤트 알림을 참조하세요. 구독을 생성하는 가장 간단한 방법은 Amazon Simple Notification Service 콘솔을 사용하는 것입니다. Amazon SNS 주제를 새로 만들어 구독하는 방법에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 안내서의 Amazon SNS 시작하기 섹션을 참조하세요.
제로 ETL 통합을 위한 IAM 권한 및 암호화 설정
제로 ETL 통합을 생성하고 관리하려면 적절한 IAM 권한, AWS Key Management Service(AWS KMS) 암호화 키 및 리소스 정책을 구성해야 합니다. 이 섹션에서는 필수 보안 구성 요소 설정에 대한 지침을 제공합니다.
사전 조건
제로 ETL 통합을 생성하기 전에 다음이 있는지 확인합니다.
-
통합을 생성하고 관리할 수 있는 적절한 권한이 있는 IAM 사용자 또는 역할
-
자체 관리형 데이터베이스의 기존 AWS DMS소스 엔드포인트
-
Amazon Redshift 프로비저닝된 클러스터 또는 서버리스 네임스페이스를 대상으로 사용
-
VPC 서브넷 및 보안 그룹을 포함한 네트워크 구성
KMS 키 생성
먼저 고객 관리형 AWS KMS키를 생성하여 제로 ETL 통합에서 데이터를 암호화합니다. 다음 예제에서는 대칭 암호화 키를 생성합니다.
aws kms create-key \ --description "On-prem Zero-ETL Integration Encryption Key" \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --regionregion
키 정책을 구성KeyId하고 통합을 생성할 때 필요하므로 응답Arn의 및를 기록해 둡니다.
출력 예시:
{ "KeyMetadata": { "AWSAccountId": "account-id", "KeyId": "4e2c14f8-7abe-4aec-851a-379f6ed973a8", "Arn": "arn:aws:kms:region:account-id:key/4e2c14f8-7abe-4aec-851a-379f6ed973a8", "CreationDate": 1763155061.148, "Enabled": true, "Description": "Zero-ETL Integration Encryption Key", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } }
KMS 키 정책 구성
KMS 키를 생성한 후 Amazon Redshift 및 AWS Glue서비스가 암호화 및 복호화 작업에 키를 사용할 수 있도록 키 정책을 구성합니다. 키 정책은 서비스 보안 주체에게 필요한 권한을 부여하고 통합 생성 중에 사용할 암호화 컨텍스트를 포함해야 합니다.
다음 예제에서는 제로 ETL 통합에 대한 키 정책을 보여줍니다.
{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Redshift and glue service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "glue.amazonaws.com" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:context-key": "context-value" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant", "GenerateDataKeyWithoutPlaintext", "ReEncryptTo" ] } } } ] }
kms:EncryptionContext 조건은 통합을 생성할 때 지정한 추가 암호화 컨텍스트와 일치해야 합니다. AWS KMS콘솔 또는 다음 CLI 명령을 사용하여 키 정책을 업데이트할 수 있습니다.
aws kms put-key-policy \ --key-idkey-id\ --policy-name default \ --policy file://kms-key-policy.json
IAM 사용자 생성 및 AWSCLI 구성
제로 ETL 통합을 관리하는 데 사용할 IAM 사용자를 생성하고 적절한 자격 증명으로 AWSCLI를 구성합니다.
-
IAM 사용자 생성:
aws iam create-user --user-namecli-user -
사용자에 대한 액세스 키를 생성합니다.
aws iam create-access-key --user-namecli-userAWSCLI를 구성하는 데 필요하므로 출력
SecretAccessKey에서AccessKeyId및를 저장합니다.
IAM 정책 생성 및 연결
제로 ETL 통합 작업에 대한 권한을 부여하는 IAM 정책을 생성합니다. 정책에는AWS Glue,AWS DMS, Amazon Redshift AWS KMS및에 대한 권한이 포함되어야 합니다.
다음 정책을 파일에 저장합니다(예: /tmp/zetl-policy.json).
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ZetlGlueIntegrationAccess", "Effect": "Allow", "Action": [ "glue:CreateIntegration", "glue:ModifyIntegration", "glue:DeleteIntegration", "glue:DescribeIntegrations", "glue:DescribeInboundIntegrations" ], "Resource": "*" }, { "Sid": "DMSIntegrationAccess", "Effect": "Allow", "Action": [ "dms:CreateOutboundIntegration", "dms:ModifyOutboundIntegration", "dms:CreateEndpoint", "dms:DescribeEndpoints", "dms:ModifyEndpoint", "dms:DeleteEndpoint", "dms:TestConnection" ], "Resource": "*" }, { "Sid": "ZetlRedshiftFullAccess", "Effect": "Allow", "Action": [ "redshift:*", "redshift-serverless:*", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "sns:CreateTopic", "sns:Get*", "sns:List*", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "cloudwatch:PutMetricAlarm", "cloudwatch:EnableAlarmActions", "cloudwatch:DisableAlarmActions", "tag:GetResources", "tag:UntagResources", "tag:GetTagValues", "tag:GetTagKeys", "tag:TagResources" ], "Resource": "*" }, { "Sid": "ZetlRedshiftDataAPI", "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:CancelStatement", "redshift-data:ListStatements", "redshift-data:GetStatementResult", "redshift-data:DescribeStatement", "redshift-data:ListDatabases", "redshift-data:ListSchemas", "redshift-data:ListTables", "redshift-data:DescribeTable" ], "Resource": "*" }, { "Sid": "ZetlKMSAccess", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ListKeys", "kms:CreateAlias", "kms:ListAliases", "kms:CreateGrant" ], "Resource": "*" }, { "Sid": "ZetlSecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DeleteSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets", "secretsmanager:GetResourcePolicy", "secretsmanager:PutResourcePolicy", "secretsmanager:ValidateResourcePolicy" ], "Resource": "*" } ] }
정책을 생성하고 IAM 사용자에게 연결합니다.
aws iam create-policy \ --policy-name ZetlCustomPolicy \ --policy-document file:///tmp/zetl-policy.json aws iam attach-user-policy \ --policy-arn arn:aws:iam::account-id:policy/ZetlCustomPolicy \ --user-namecli-user
AWSCLI 프로파일 구성
이전 단계에서 생성한 사용자 자격 증명으로 AWSCLI 프로파일을 구성합니다.
aws configure set aws_access_key_idACCESS_KEY_ID--profilecli-useraws configure set aws_secret_access_keySECRET_ACCESS_KEY--profilecli-useraws configure set regionregion--profilecli-useraws configure set output json --profilecli-user
프로파일 구성을 테스트합니다.
aws sts get-caller-identity --profilecli-user
출력에 사용자의 계정 ID, 사용자 ID 및 ARN이 표시되어야 프로필이 올바르게 구성되었는지 확인할 수 있습니다.
Redshift 리소스 정책 생성
Amazon Redshift 리소스 정책을 생성하여 AWS DMS소스 엔드포인트가 Amazon Redshift 네임스페이스와의 인바운드 통합을 생성하도록 승인합니다. 이 정책은 Amazon Redshift 네임스페이스에 연결되며 데이터를 복제할 수 있는 소스를 제어합니다.
다음 예제에서는 Amazon Redshift 네임스페이스에 대한 리소스 정책을 생성하는 방법을 보여줍니다.
aws redshift put-resource-policy \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["redshift.amazonaws.com"] }, "Action": ["redshift:AuthorizeInboundIntegration"], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id" } } }, { "Effect": "Allow", "Principal": { "AWS": "account-id" }, "Action": [ "redshift:CreateInboundIntegration", "redshift:ModifyInboundIntegration" ] } ] }' \ --resource-arn arn:aws:redshift:region:account-id:namespace:namespace-id\ --regionregion
다음과 같이 자리 표시자를 바꿉니다.
-
region- 리소스가 위치한 AWS리전 -
account-id- AWS계정 ID -
endpoint-id- AWS DMS소스 엔드포인트의 ID입니다. -
namespace-id– Amazon Redshift 네임스페이스의 ID입니다.
예: 암호화와 제로 ETL 통합 생성
필요한 권한과 암호화 키를 설정한 후 AWS GlueAPI를 사용하여 제로 ETL 통합을 생성할 수 있습니다. 다음 예제에서는 KMS 암호화를 사용하여 MySQL 소스에서 Amazon Redshift 대상으로 통합을 생성하는 방법을 보여줍니다.
aws glue create-integration \ --integration-namemysql-onprem-integration\ --source-arn arn:aws:dms:region:account-id:endpoint:source-endpoint-id\ --target-arn arn:aws:redshift:region:account-id:namespace:namespace-id\ --description "MySQL to Redshift integration" \ --integration-config '{"SourceProperties":{"SubnetIds":"subnet-id1,subnet-id2,subnet-id3","VpcSecurityGroupIds":"sg-id"}}' \ --data-filter "include:mysql.*" \ --kms-key-id arn:aws:kms:region:account-id:key/key-id\ --additional-encryption-context '{"context-key": "context-value"}' \ --profilecli-user\ --regionregion
명령에는 다음과 같은 키 파라미터가 포함됩니다.
-
--integration-name- 통합의 고유한 이름 -
--source-arn- AWS DMS소스 엔드포인트의 ARN -
--target-arn- Amazon Redshift 네임스페이스의 ARN -
--integration-config- 서브넷 IDs 및 보안 그룹을 포함한 네트워크 구성 -
--data-filter- 복제할 스키마 및 테이블을 지정합니다. -
--kms-key-id- 암호화를 위한 AWS KMS키의 ARN -
--additional-encryption-context- KMS 키 정책과 일치해야 하는 암호화 컨텍스트 키-값 페어(예:{")context-key": "context-value"} -
--profile- 사용할 AWSCLI 프로파일(이전에 생성된 cli-user 프로파일)
성공적으로 생성되면 명령은 통합 ARN, 상태 및 구성 파라미터를 포함한 통합 세부 정보를 반환합니다. 출력 예시:
{ "SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id", "TargetArn": "arn:aws:redshift:region:account-id:namespace:namespace-id", "IntegrationName": "mysql-onprem-integration", "IntegrationArn": "arn:aws:glue:region:account-id:integration:integration-id", "KmsKeyId": "arn:aws:kms:region:account-id:key/key-id", "AdditionalEncryptionContext": { "context-key": "context-value" }, "Status": "CREATED", "CreateTime": 1763234086.001, "DataFilter": "include: mysql.*", "IntegrationConfig": { "SourceProperties": { "SubnetIds": "subnet-id1,subnet-id2,subnet-id3", "VpcSecurityGroupIds": "sg-id" } } }
보안 모범 사례
제로 ETL 통합을 설정할 때 다음 보안 모범 사례를 따르세요.
-
최소 권한 액세스 사용 - 통합을 생성하고 관리하는 데 필요한 최소 권한만 부여합니다. 가능하면 리소스 수준 권한을 사용하는 것이 좋습니다.
-
암호화 활성화 - 항상 고객 관리형 AWS KMS키를 사용하여 통합 데이터를 암호화합니다. 추가 보안을 위해 암호화 컨텍스트를 지정합니다.
-
자격 증명 정기적으로 교체 - IAM 사용자 액세스 키를 사용하는 경우 정기적으로 교체합니다. 대신 임시 자격 증명과 함께 IAM 역할을 사용하는 것이 좋습니다.
-
액세스 모니터링 - AWS CloudTrail를 사용하여 통합 생성 및 관리와 관련된 API 호출을 모니터링합니다.
-
네트워크 액세스 제한 - 네트워크 액세스를 필요한 리소스로만 제한하도록 VPC 보안 그룹을 구성합니다.
-
리소스 정책 사용 - Amazon Redshift 리소스 정책을 구현하여 데이터 웨어하우스와의 통합을 생성할 수 있는 소스를 제어합니다.
-
리소스 태그 지정 - 통합 및 관련 리소스에 태그를 적용하여 조직 및 비용 추적을 개선합니다.