

# Amazon Redshift와 DynamoDB의 제로 ETL 통합
<a name="RedshiftforDynamoDB-zero-etl"></a>

Amazon Redshift와 Amazon DynamoDB의 제로 ETL 통합을 통해 코딩 없이 DynamoDB 데이터를 원활하게 분석할 수 있습니다. 이 완전 관리형 기능은 DynamoDB 테이블을 Amazon Redshift 데이터베이스에 자동으로 복제하므로 사용자가 복잡한 ETL 프로세스를 설정하지 않고도 DynamoDB 데이터에 대한 SQL 쿼리 및 분석을 실행할 수 있습니다. 통합은 DynamoDB 테이블에서 Amazon Redshift 데이터베이스로 데이터를 복제하는 방식으로 작동합니다.

통합을 설정하려면 DynamoDB 테이블을 소스로 지정하고 Amazon Redshift 데이터베이스를 대상으로 지정하면 됩니다. 활성화 시 통합은 전체 DynamoDB 테이블을 내보내 Amazon Redshift 데이터베이스를 채웁니다. 이 초기 프로세스를 완료하는 데 걸리는 시간은 DynamoDB 테이블 크기에 따라 달라집니다. 그런 다음 제로 ETL 통합은 DynamoDB 증분 내보내기를 사용하여 15\~30분마다 DynamoDB에서 Amazon Redshift로 업데이트를 점진적으로 복제합니다. 따라서 Amazon Redshift에서 복제된 DynamoDB 데이터가 자동으로 최신 상태로 유지됩니다.

이 통합이 구성되면 사용자가 DynamoDB 테이블 성능에 영향을 주지 않고 표준 SQL 클라이언트 및 도구를 사용하여 Amazon Redshift에서 DynamoDB 데이터를 분석할 수 있습니다. 번거로운 ETL을 제거한 이 제로 ETL 통합은 Amazon Redshift 분석 및 기계 학습 기능을 통해 DynamoDB에서 인사이트를 빠르고 쉽게 발굴할 수 있도록 지원합니다.

**Topics**
+ [Amazon Redshift와 DynamoDB 제로 ETL 통합을 생성하기 이전의 사전 조건](#RedshiftforDynamoDB-zero-etl-prereqs)
+ [Amazon Redshift와 DynamoDB의 제로 ETL 통합 사용 시 제한 사항](#RedshiftforDynamoDB-zero-etl-limitations)
+ [Amazon Redshift와 DynamoDB의 제로 ETL 통합 생성](RedshiftforDynamoDB-zero-etl-getting-started.md)
+ [Amazon Redshift와 DynamoDB의 제로 ETL 통합 보기](RedshiftforDynamoDB-zero-etl-viewing.md)
+ [Amazon Redshift와 DynamoDB의 제로 ETL 통합 삭제](RedshiftforDynamoDB-zero-etl-deleting.md)

## Amazon Redshift와 DynamoDB 제로 ETL 통합을 생성하기 이전의 사전 조건
<a name="RedshiftforDynamoDB-zero-etl-prereqs"></a>

1.  통합을 생성하기 전에 소스 DynamoDB 테이블과 대상 Amazon Redshift 클러스터를 생성해야 합니다. 이 정보는 [1단계: 소스 DynamoDB 테이블 구성](RedshiftforDynamoDB-zero-etl-getting-started.md#RedshiftforDynamoDB-zero-etl-getting-started-configuring) 및 [2단계: Amazon Redshift 데이터 웨어하우스 생성](RedshiftforDynamoDB-zero-etl-getting-started.md#RedshiftforDynamoDB-zero-etl-getting-started-creating)에서 다룹니다.

1.  Amazon DynamoDB와 Amazon Redshift 간의 제로 ETL 통합을 위해서는 소스 DynamoDB 테이블에 [시점 복구(PITR)](Point-in-time-recovery.md)를 활성화해야 합니다.

1. **리소스 기반 정책**의 경우 제로 ETL 통합에는 DynamoDB 테이블에 직접 연결된 리소스 기반 정책이 필요합니다. 이 인라인 정책은 복제를 위해 테이블 데이터에 액세스할 수 있는 권한을 Amazon Redshift 서비스에 부여합니다. DynamoDB의 리소스 기반 정책에 대한 자세한 내용은 [DynamoDB에 리소스 기반 정책 사용](access-control-resource-based.md)을 참조하세요.

   DynamoDB 테이블과 Amazon Redshift 데이터 웨어하우스가 동일한 계정에 있는 통합을 생성하면 통합 생성 단계에서 **수정** 옵션을 사용하여 필요한 리소스 정책을 DynamoDB와 Amazon Redshift 모두에 자동으로 적용할 수 있습니다.

   DynamoDB 테이블과 Amazon Redshift 데이터 웨어하우스가 서로 다른 AWS 계정에 있는 통합을 만들면 DynamoDB 테이블에 다음 리소스 정책을 수동으로 적용해야 합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "StatementthatallowsAmazonRedshiftservicetoDescribeTableandExportTable",
               "Effect": "Allow",
               "Principal": {
                   "Service": "redshift.amazonaws.com"
               },
               "Action": [
                   "dynamodb:ExportTableToPointInTime",
                   "dynamodb:DescribeTable"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "111122223333"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:redshift:us-east-1:111122223333:integration:*"
                   }
               }
           },
           {
               "Sid": "StatementthatallowsAmazonRedshiftservicetoDescribeTableandExportTable",
               "Effect": "Allow",
               "Principal": {
                   "Service": "redshift.amazonaws.com"
               },
               "Action": "dynamodb:DescribeExport",
               "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/table-name/export/*",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "111122223333"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:redshift:us-east-1:111122223333:integration:*"
                   }
               }
           }
       ]
   }
   ```

------

   Amazon Redshift 데이터 웨어하우스에서 리소스 정책을 구성해야 할 수도 있습니다. 자세한 내용은 [Amazon Redshift 데이터 웨어하우스에 대한 권한 부여 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.redshift-iam.html#zero-etl-using.resource-policies)을 참조하세요.

1. 

**ID 기반 정책의 경우:**

   1.  통합을 생성하는 사용자에게 `GetResourcePolicy`, `PutResourcePolicy` 및 `UpdateContinuousBackups` 작업을 수행할 수 있도록 권한을 부여하는 ID 기반 정책이 필요합니다.
**참고**  
 다음 정책 예시에서는 `arn:aws:redshift{-serverless}`로 리소스를 보여줍니다. 이는 네임스페이스가 Amazon Redshift 클러스터인지 Amazon Redshift Serverless 네임스페이스인지에 따라 arn이 `arn:aws:redshift` 또는 `arn:aws:redshift-serverless`가 될 수 있음을 보여주는 예입니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "dynamodb:ListTables"
                  ],
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "dynamodb:GetResourcePolicy",
                      "dynamodb:PutResourcePolicy",
                      "dynamodb:UpdateContinuousBackups"
                  ],
                  "Resource": [
                      "arn:aws:dynamodb:{{us-east-1}}:{{111122223333}}:table/{{table-name}}"
                  ]
              },
              {
                  "Sid": "AllowRedshiftDescribeIntegration",
                  "Effect": "Allow",
                  "Action": [
                      "redshift:DescribeIntegrations"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "AllowRedshiftCreateIntegration",
                  "Effect": "Allow",
                  "Action": "redshift:CreateIntegration",
                  "Resource": "arn:aws:redshift:{{us-east-1}}:{{111122223333}}:integration:*"
              },
              {
                  "Sid": "AllowRedshiftModifyDeleteIntegration",
                  "Effect": "Allow",
                  "Action": [
                      "redshift:ModifyIntegration",
                      "redshift:DeleteIntegration"
                  ],
                  "Resource": "arn:aws:redshift:{{us-east-1}}:{{111122223333}}:integration:{{uuid}}"
              },
              {
                  "Sid": "AllowRedshiftCreateInboundIntegration",
                  "Effect": "Allow",
                  "Action": "redshift:CreateInboundIntegration",
                  "Resource": "arn:aws:redshift:{{us-east-1}}:{{111122223333}}:namespace:{{uuid}}"
              }
          ]
      }
      ```

------

   1.  대상 Amazon Redshift 네임스페이스를 구성하는 사용자는 `PutResourcePolicy`, `DeleteResourcePolicy` 및 `GetResourcePolicy` 작업을 수행할 수 있도록 권한을 부여하는 ID 기반 정책이 필요합니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "redshift:PutResourcePolicy",
                      "redshift:DeleteResourcePolicy",
                      "redshift:GetResourcePolicy"
                  ],
                  "Resource": [
                      "arn:aws:redshift:{{us-east-1}}:{{111122223333}}:cluster:{{cluster-name}}"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "redshift:DescribeInboundIntegrations"
                  ],
                  "Resource": [
                      "arn:aws:redshift:{{us-east-1}}:{{111122223333}}:cluster:{{cluster-name}}"
                  ]
              }
          ]
      }
      ```

------

1. 

**암호화 키 권한**  
고객 관리형 AWS KMS 키를 사용하여 소스 DynamoDB 테이블을 암호화하는 경우 KMS 키에 다음 정책을 추가해야 합니다. 이 정책은 Amazon Redshift가 KMS 키를 사용하여 암호화된 테이블에서 데이터를 내보낼 수 있도록 허용합니다.

   ```
   {
       "Sid": "Statement to allow Amazon Redshift service to perform Decrypt operation on the source DynamoDB Table",
       "Effect": "Allow",
       "Principal": {
           "Service": [
               "redshift.amazonaws.com"
           ]
       },
       "Action": "kms:Decrypt",
       "Resource": "*",
       "Condition": {
           "StringEquals": {
               "aws:SourceAccount": "<account>"
           },
           "ArnEquals": {
               "aws:SourceArn": "arn:aws:redshift:<region>:<account>:integration:*"
           }
       }
   }
   ```

 Amazon Redshift 관리 가이드의 [제로 ETL 통합 시작하기](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.setting-up.html#zero-etl-using.redshift-iam) 단계에 따라 Amazon Redshift 네임스페이스의 권한을 구성할 수도 있습니다.

## Amazon Redshift와 DynamoDB의 제로 ETL 통합 사용 시 제한 사항
<a name="RedshiftforDynamoDB-zero-etl-limitations"></a>

 이 통합의 현재 릴리스에는 다음과 같은 일반 제한 사항이 적용됩니다. 이러한 제한 사항은 후속 릴리스에서 변경될 수 있습니다.

**참고**  
아래 제한 사항 외에도 제로 ETL 통합을 사용할 때의 일반적인 고려 사항을 검토하려면 *Amazon Redshift 관리 안내서*의 [Amazon Redshift와 제로 ETL 통합을 사용할 때 고려할 사항](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl.reqs-lims.html)을 참조하세요.
+ DynamoDB 테이블과 Amazon Redshift 클러스터가 동일한 리전에 있어야 합니다.
+ 소스 DynamoDB 테이블을 Amazon 소유 또는 고객 관리형 AWS KMS 키로 암호화해야 합니다. 소스 DynamoDB 테이블에는 Amazon 관리형 암호화가 지원되지 않습니다.