

# 제로 ETL 통합
<a name="zero-etl-using"></a>

[제로 ETL](https://aws.amazon.com/what-is/zero-etl/)은 일반적인 수집 및 복제 사용 사례에서 ETL 데이터 파이프라인을 구축할 필요성을 최소화하는 AWS의 완전 관리형 통합 세트입니다. 이를 통해 여러 운영, 트랜잭션 및 애플리케이션 소스에서 Amazon SageMaker Lakehouse 및 Amazon Redshift의 데이터를 사용할 수 있습니다. 제로 ETL 통합을 통해 분석, AI/ML 및 보고를 위한 최신 데이터를 확보할 수 있습니다. 비즈니스 대시보드, 최적화된 게임 경험, 데이터 품질 모니터링, 고객 행동 분석과 같은 사용 사례에 대해 더 정확하고 시기적절한 인사이트를 얻을 수 있습니다. 더 신뢰성 있게 데이터 기반 예측을 수행하고, 고객 경험을 개선하고, 비즈니스 전반에서 데이터 기반 인사이트를 촉진할 수 있습니다.

Amazon Redshift는 속도가 빠른 페타바이트 규모의 완전 관리형 데이터 웨어하우스 서비스로, 간편하고 비용 효율적으로 모든 데이터를 기존 비즈니스 인텔리전스 도구를 사용하여 효율적으로 분석할 수 있게 해줍니다.

Amazon SageMaker Lakehouse는 Amazon Simple Storage Service(S3) 데이터 레이크와 Amazon Redshift 데이터 웨어하우스의 모든 데이터를 통합하여 단일 데이터 사본에 기반하는 강력한 분석 및 AI/ML 애플리케이션을 구축할 수 있도록 지원합니다. SageMaker Lakehouse는 모든 Apache Iceberg 호환 도구 및 엔진을 사용하여 현재 위치의 데이터에 액세스하고 쿼리할 수 있는 유연성을 제공합니다. SageMaker Lakehouse를 사용하면 Apache Iceberg 호환 도구 및 엔진을 사용하여 현재 위치의 데이터에 액세스하고 쿼리할 수 있는 유연성도 얻을 수 있습니다. 또한 모든 분석 도구 및 엔진의 모든 데이터에 적용되는 통합되고 세분화된 액세스 제어를 사용하여 데이터를 보호할 수 있습니다. 이제 권한을 정의하고 조직 전체에서 데이터를 자신 있게 공유하세요.

## AWS Glue의 제로 ETL 기능
<a name="zero-etl-capabilities"></a>

AWS Glue의 제로 ETL 통합은 AWS 데이터 서비스, 서드 파티 애플리케이션, 자체 관리형 데이터베이스에서 AWS 대상으로의 데이터 수집 및 복제를 간소화합니다.

AWS Glue에서 제로 ETL 소스로 지원되는 AWS 서비스는 다음과 같습니다.
+ Amazon DynamoDB

AWS Glue에서 제로 ETL 소스로 지원되는 서드 파티 애플리케이션은 다음과 같습니다.
+ Facebook 광고
+ Instagram 광고
+ Salesforce
+ Salesforce Marketing Cloud Account Engagement
+ SAP OData
+ ServiceNow
+ Zendesk
+ Zoho CRM

AWS Glue에서 제로 ETL 소스로 지원되는 자체 관리형 데이터베이스는 다음과 같습니다.
+ Oracle
+ SQL Server
+ MySQL
+ PostgreSQL

자체 관리형 소스에서의 제로 ETL 통합에 대한 자세한 내용은 [자체 관리형 데이터베이스 소스의 AWS 제로 ETL 통합](https://docs.aws.amazon.com/dms/latest/userguide/zero-etl.html)을 참조하세요.

AWS Glue에서 제로 ETL 대상으로 지원되는 AWS 서비스는 다음과 같습니다.
+ Amazon Redshift
+ Amazon SageMaker Lakehouse

**참고**  
AWS Glue에서 Amazon DynamoDB 소스를 포함하는 제로 ETL 통합을 생성할 때 대상은 Amazon SageMaker Lakehouse에서 지원합니다.

# 제로 ETL 통합을 설정하기 위한 사전 조건
<a name="zero-etl-prerequisites"></a>

소스와 대상 간에서 통합을 설정하려면 AWS Glue가 소스의 데이터에 액세스하고 대상에 쓰는 데 사용하는 IAM 역할 구성, 중간 또는 대상 위치의 데이터를 암호화하기 위한 KMS 키 사용 등과 같은 몇 가지 사전 조건이 필요합니다.

**Topics**
+ [소스 리소스 설정](#zero-etl-setup-source-resources)
+ [대상 리소스 설정](#zero-etl-setup-target-resources)
+ [Amazon Redshift 데이터 웨어하우스 생성](#zero-etl-setup-target-redshift-data-warehouse)
+ [제로 ETL 통합을 위한 VPC 설정](#zero-etl-setup-vpc)
+ [제로 ETL 교차 계정 통합 설정](#zero-etl-setup-cross-account-integration)

## 소스 리소스 설정
<a name="zero-etl-setup-source-resources"></a>

소스에 필요한 다음 설정 작업을 수행합니다.

### 소스 역할 설정
<a name="zero-etl-setup-source-role"></a>

이 섹션에서는 제로 ETL 통합이 연결에 액세스할 수 있도록 소스 역할을 전달하는 방법을 설명합니다. 이 방법도 SaaS 소스에만 적용됩니다.

**참고**  
몇 개의 연결로만 액세스를 제한하려면 먼저 연결을 생성하여 연결 ARN을 가져올 수 있습니다. [제로 ETL 통합을 위한 소스 구성](zero-etl-sources.md)을(를) 참조하세요.

통합이 연결에 액세스할 수 있는 권한이 있는 역할을 생성합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GlueConnections",
            "Effect": "Allow",
            "Action": [
                "glue:GetConnections",
                "glue:GetConnection"
            ],
            "Resource": [
							"arn:aws:glue:*:111122223333:catalog",
							"arn:aws:glue:us-east-1:111122223333:connection/*"
            ]
        },
        {
            "Sid": "GlueActionBasedPermissions",
            "Effect": "Allow",
            "Action": [
                "glue:ListEntities",
                "glue:RefreshOAuth2Tokens"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

신뢰 정책:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "glue.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

## 대상 리소스 설정
<a name="zero-etl-setup-target-resources"></a>

AWS Glue 데이터 카탈로그 또는 Amazon Redshift 데이터 웨어하우스 통합 대상에 필요한 다음 설정 작업을 수행합니다.

AWS Glue 데이터베이스 대상과 통합하는 경우:
+ [AWS Glue 데이터베이스 설정](#zero-etl-setup-target-resources-glue-database)
+ [카탈로그 리소스 기반 액세스(RBAC) 정책 제공](#zero-etl-setup-target-resources-rbac-policy)
+ [대상 IAM 역할 생성](#zero-etl-setup-target-resources-target-iam-role)

Amazon Redshift 데이터 웨어하우스 대상과 통합하는 경우:
+ [https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html#zero-etl-setup-target-redshift-data-warehouse](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html#zero-etl-setup-target-redshift-data-warehouse)

### AWS Glue 데이터베이스 설정
<a name="zero-etl-setup-target-resources-glue-database"></a>

AWS Glue 데이터베이스를 사용하는 통합의 경우:

Amazon S3 위치를 사용하여 AWS Glue Data Catalog에서 대상 데이터베이스를 설정하려면:

1. AWS Glue 콘솔 홈 페이지의 Data Catalog에서 **데이터베이스**를 선택합니다.

1. 오른쪽 상단 모서리에서 **데이터 추가**를 선택합니다. 데이터베이스를 이미 생성한 경우 Amazon S3 URI를 사용하는 위치가 데이터베이스에 대해 설정되어 있는지 확인합니다.

1. 이름과 **위치**(Amazon S3 URI)를 입력합니다. 제로 ETL 통합에는 위치가 필요합니다. 완료되면 **데이터베이스 생성**을 클릭합니다.
**참고**  
Amazon S3 버킷은 AWS Glue 데이터베이스와 동일한 리전에 있어야 합니다.

AWS Glue에서 새 데이터베이스를 생성하는 방법에 대한 자세한 내용은 [AWS Glue Data Catalog 시작하기](https://docs.aws.amazon.com/glue/latest/dg/start-data-catalog.htm)를 참조하세요.

[https://docs.aws.amazon.com/cli/latest/reference/glue/create-database.html](https://docs.aws.amazon.com/cli/latest/reference/glue/create-database.html) CLI를 사용하여 AWS Glue에서 데이터베이스를 생성할 수도 있습니다. `--database-input`의 `LocationUri`는 필수입니다.

#### Iceberg 테이블 최적화
<a name="zero-etl-common-setup-table-optimization"></a>

대상 데이터베이스에서 AWS Glue에 의해 테이블이 생성된 후 압축을 활성화하여 Amazon Athena에서 쿼리 속도를 높일 수 있습니다. 압축을 위한 리소스(IAM 역할) 설정에 대한 자세한 내용은 [테이블 최적화 필수 조건](https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html)을 참조하세요.

통합에 의해 생성된 AWS Glue 테이블에서 압축을 설정하는 방법에 대한 자세한 내용은 [Iceberg 테이블 최적화](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html)를 참조하세요.

### 카탈로그 리소스 기반 액세스(RBAC) 정책 제공
<a name="zero-etl-setup-target-resources-rbac-policy"></a>

AWS Glue 데이터베이스를 사용하는 통합의 경우 카탈로그 RBAC 정책에 다음 권한을 추가하여 소스와 대상 간의 통합을 허용합니다.

**참고**  
교차 계정 통합의 경우 Alice(통합을 생성하는 사용자) 역할 정책과 카탈로그 리소스 정책 모두 리소스에 대해 `glue:CreateInboundIntegration`을 허용해야 합니다. 동일한 계정의 경우에는 리소스 정책 또는 리소스에 대해 `glue:CreateInboundIntegration`을 허용하는 역할 정책으로 충분합니다. 두 시나리오 모두 여전히 `glue:AuthorizeInboundIntegration`에 대해 `glue.amazonaws.com`을 허용해야 합니다.

**Data Catalog**에서 **카탈로그 설정**에 액세스할 수 있습니다. 계속해서 다음 권한을 제공하고 누락된 정보를 입력합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Principal": {
        "AWS": [
        	"arn:aws:iam::123456789012:user/Alice"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:CreateInboundIntegration"
      ],
      "Resource": [
      	"arn:aws:glue:us-east-1:111122223333:catalog",
				"arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
      ],
      "Condition": {
        "StringLike": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    },
    {
      "Principal": {
        "Service": [
          "glue.amazonaws.com"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:AuthorizeInboundIntegration"
      ],
      "Resource": [
      	"arn:aws:glue:us-east-1:111122223333:catalog",
				"arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
      ],
      "Condition": {
        "StringEquals": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    }
  ]
}
```

------

### 대상 IAM 역할 생성
<a name="zero-etl-setup-target-resources-target-iam-role"></a>

다음과 같은 권한 및 신뢰 관계를 가진 대상 IAM 역할을 생성합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "glue:GetDatabase"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:catalog",
                "arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "glue:CreateTable",
                "glue:GetTable",
                "glue:GetTables",
                "glue:DeleteTable",
                "glue:UpdateTable",
                "glue:GetTableVersion",
                "glue:GetTableVersions",
                "glue:GetResourcePolicy"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:catalog",
                "arn:aws:glue:us-east-1:111122223333:database/DatabaseName",
                "arn:aws:glue:us-east-1:111122223333:table/DatabaseName/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "AWS/Glue/ZeroETL"
                }
            },
            "Effect": "Allow"
        },
        {
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

AWS Glue 서비스가 역할을 수임할 수 있도록 다음 신뢰 정책을 추가합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "glue.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

## Amazon Redshift 데이터 웨어하우스 생성
<a name="zero-etl-setup-target-redshift-data-warehouse"></a>

제로 ETL 통합 대상이 Amazon Redshift 데이터 웨어하우스이지만 아직 없는 경우 데이터 웨어하우스를 생성합니다. Amazon Redshift Serverless 작업 그룹을 생성하려면 [네임스페이스가 있는 작업 그룹 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-console-workgroups-create-workgroup-wizard.html)을 참조하세요. Amazon Redshift 클러스터를 생성하려면 [클러스터 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html)을 참조하세요.

통합에 성공하려면 대상 Amazon Redshift 작업 그룹 또는 클러스터에 `enable_case_sensitive_identifier` 파라미터가 켜져 있어야 합니다. 대소문자 구분 활성화에 대한 자세한 내용은 Amazon Redshift 관리 안내서의 [데이터 웨어하우스에 대소문자 구분 기능 사용 설정](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-setting-up.case-sensitivity.html)을 참조하세요.

Amazon Redshift 작업 그룹 또는 클러스터 설정이 완료되면 데이터 웨어하우스를 구성해야 합니다. 자세한 내용은 Amazon Redshift 관리 안내서의 [제로 ETL 통합 시작하기](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.setting-up.html)를 참조하세요.

## 제로 ETL 통합을 위한 VPC 설정
<a name="zero-etl-setup-vpc"></a>

제로 ETL 통합을 위한 VPC를 설정하려면:

1. **VPC** > VPC로 이동하여 **VPC 생성**을 선택합니다.

   1. **VPC 등**을 선택합니다.

   1. VPC 이름을 설정합니다.

   1. IPv4 CIDR을 10.0.0.0/16으로 설정합니다.

   1. AZ 수를 1로 설정합니다.

   1. 퍼블릭 및 프라이빗 서브넷 수를 1로 설정합니다.

   1. **NAT 게이트웨이**를 없음으로 설정합니다.

   1. **VPC 엔드포인트**를 S3 게이트웨이로 설정합니다.

   1. DNS 호스트 이름 및 DNS 확인을 활성화합니다.

1. **엔드포인트**로 이동하고 **엔드포인트 생성**을 선택합니다.

1. VPC의 프라이빗 서브넷에서 다음 서비스에 대한 엔드포인트를 생성합니다(기본 보안 그룹 사용).

   1. com.amazonaws.us-east-1.lambda

   1. com.amazonaws.us-east-1.glue

   1. com.amazonaws.us-east-1.sts

AWS Glue 연결을 생성합니다.

1. **AWS Glue** > **데이터 연결**로 이동하고 **연결 생성**을 선택합니다.

1. **네트워크**를 선택합니다.

1. 생성한 VPC, 서브넷(프라이빗) 및 기본 보안 그룹을 선택합니다.

### VPC의 대상 역할 설정
<a name="zero-etl-setup-vpc-target-role"></a>

대상 역할에는 제로 ETl 통합에 필요한 다른 권한 외에 다음과 같은 권한이 있어야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CustomerVpc",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags",
        "ec2:DescribeRouteTables",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:CreateNetworkInterface",
        "ec2:DeleteNetworkInterface",
        "glue:GetConnection"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

### 대상 레그 리소스 속성 설정
<a name="zero-etl-setup-vpc-target-leg"></a>



CLI를 사용하는 경우 대상 레그 리소스 속성을 생성한 대상 AWS Glue 데이터베이스로 설정합니다. 대상 역할 ARN과 AWS Glue 연결 이름을 전달합니다.

```
aws glue create-integration-resource-property \
--resource-arn arn:aws:glue:us-east-1:<account-id>:database/exampletarget \
--target-processing-properties '{"RoleArn" : "arn:aws:iam::<account-id>:role/example-role", "ConnectionName":"example-vpc-3"}' \
--endpoint-url https://example.amazonaws.com --region us-east-1
```

### 가능한 클라이언트 오류
<a name="zero-etl-setup-vpc-client-errors"></a>

다음은 VPC로 구성된 통합에서 발생할 수 있는 클라이언트 오류입니다.


| 오류 메시지 | 필요한 작업 | 
| --- | --- | 
| 제공된 역할은 연결 시 glue:GetConnection을 수행할 권한이 없습니다. 역할 정책에 이 권한을 추가한 다음 통합이 복구될 때까지 기다립니다. | 역할 정책 업데이트 | 
| 제공된 역할은 ec2:DescribeSubnets를 수행할 권한이 없습니다. 역할 정책에 이 권한을 추가한 다음 통합이 복구될 때까지 기다립니다. | 역할 정책 업데이트 | 
| 제공된 역할은 ec2:DescribeSecurityGroups를 수행할 권한이 없습니다. 역할 정책에 이 권한을 추가한 다음 통합이 복구될 때까지 기다립니다. | 역할 정책 업데이트 | 
| 제공된 역할은 ec2:DescribeVpcEndpoints를 수행할 권한이 없습니다. 역할 정책에 이 권한을 추가한 다음 통합이 복구될 때까지 기다립니다. | 역할 정책 업데이트 | 
| 제공된 역할은 ec2:DescribeRouteTables를 수행할 권한이 없습니다. 역할 정책에 이 권한을 추가한 다음 통합이 복구될 때까지 기다립니다. | 역할 정책 업데이트 | 
| 제공된 역할은 ec2:CreateTags를 수행할 권한이 없습니다. 역할 정책에 이 권한을 추가한 다음 통합이 복구될 때까지 기다립니다. | 역할 정책 업데이트 | 
| 제공된 역할은 ec2:CreateNetworkInterface를 수행할 권한이 없습니다. 역할 정책에 이 권한을 추가한 다음 통합이 복구될 때까지 기다립니다. | 역할 정책 업데이트 | 
| 제공된 연결 서브넷에 유효한 S3 엔드포인트 또는 NAT 게이트웨이가 포함되어 있지 않습니다. 서브넷을 업데이트한 다음 통합이 복구될 때까지 기다립니다. | VPC 서브넷 엔드포인트 업데이트 | 
| 연결 서브넷을 찾을 수 없습니다. 연결 서브넷을 업데이트한 다음 통합이 복구될 때까지 기다립니다. | AWS Glue 연결 업데이트 | 
| 연결 보안 그룹을 찾을 수 없습니다. 연결 보안 그룹을 업데이트한 다음 통합이 복구될 때까지 기다립니다. | AWS Glue 연결 업데이트 | 
| 제공된 VPC 연결을 통해 S3에 연결할 수 없습니다. 서브넷 구성을 업데이트한 다음 통합이 복구될 때까지 기다립니다. | VPC 서브넷 엔드포인트 업데이트 | 
| 제공된 VPC 연결을 통해 Lambda에 연결할 수 없습니다. 서브넷 구성을 업데이트한 다음 통합이 복구될 때까지 기다립니다. | VPC 서브넷 엔드포인트 업데이트 | 

## 제로 ETL 교차 계정 통합 설정
<a name="zero-etl-setup-cross-account-integration"></a>

제로 ETL 교차 계정 통합을 설정하려면:

1. [카탈로그 리소스 기반 액세스(RBAC) 정책 제공](#zero-etl-setup-target-resources-rbac-policy)에 설명된 대로 대상 리소스 정책을 구성합니다. 소스 계정 역할이 대상 리소스에 명시적으로 허용되는지 확인합니다.

1. 소스 계정 역할(통합을 생성하는 데 사용되는 역할)에 다음이 있는지 확인합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt123456789012",
               "Action": [
                   "glue:CreateInboundIntegration"
               ],
               "Effect": "Allow",
               "Resource": [
               	"arn:aws:glue:us-east-1:111122223333:catalog",
   							"arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
               ]
           }
       ]
   }
   ```

------

1. [통합 생성](zero-etl-common-integration-tasks.md#zero-etl-creating)에 설명된 대로 통합을 생성합니다.

# 제로 ETL 통합을 위한 소스 구성
<a name="zero-etl-sources"></a>



## 특수 SAP 엔터티 지원
<a name="zero-etl-support-special-sap-entities"></a>

 AWS Glue 제로 ETL은 SAP의 ODP(운영 데이터 프로비저닝) 프레임워크를 사용하는 SAP OData 엔터티와 ODP 프레임워크를 사용하지 않는 엔터티(비 ODP 엔터티)를 지원합니다. 지원되는 엔터티 목록에는 ODP\$1SAP(BW(Business Warehouse) 추출기), ODP\$1CDS(CDS(Core Data Services) 뷰) 및 비 ODP 기반 SAP API용 OData 서비스가 포함됩니다. AWS Glue 제로 ETL은 ODP 및 비 ODP SAP 엔터티에 대한 전체 스냅샷 및 증분 변경 데이터 캡처를 지원합니다. ODP 엔터티의 경우 증분 변경은 델타 링크를 사용하여 캡처됩니다. 비 ODP 엔터티의 경우 타임스탬프 기반 수집에 사용할 수 있는 쿼리 가능한 필드를 선택한 경우 제로 ETL은 증분 수집에 해당 필드를 사용합니다.

 AWS Glue 제로 ETL을 사용하여 SAP 엔터티에서 데이터를 수집하는 동안 다음 사항에 유의해야 합니다.
+  제로 ETL은 SAP에서 GET\$1ENTITYSET 메서드에 대해 구성된 SAP 엔터티만 수집할 수 있습니다.
+  비 ODP SAP 엔터티의 경우 증분 업데이트에 타임스탬프 필드를 선택하지 않으면 AWS Glue 제로 ETL은 업서트만 있는 전체 데이터 추출 및 복제를 지원합니다(삭제 없음).
+  ODP 추출기 엔터티의 경우 데이터 처리 도중 유효한 프라이머리 키 세트를 결정합니다. 다른 SAP 엔터티, 특히 `EntityOf`로 시작하는 SAP 엔터티에는 유효한 프라이머리 키 세트를 입력으로 제공하는 추가 단계가 필요합니다. `EntityOf` 엔터티를 선택하면 프라이머리 키 세트를 제공하라는 메시지가 표시됩니다.

![\[스크린샷은 소스 데이터를 구성하기 위한 설정을 보여줍니다. 선택한 소스 데이터에 EntityOf로 시작하는 엔터티가 있는 경우 프라이머리 키 세트를 제공합니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/zero-etl-settings-configure-entityof-primary-key-set.png)


## Amazon DynamoDB 소스 구성
<a name="zero-etl-config-source-dynamodb"></a>

소스 Amazon DynamoDB 테이블의 데이터에 액세스하려면 AWS Glue에 테이블을 설명하고 테이블에서 데이터를 내보낼 수 있는 액세스 권한이 필요합니다. Amazon DynamoDB는 최근에 리소스 기반 액세스(RBAC) 정책을 구성할 수 있는 기능을 도입했습니다.

다음 예제 리소스 기반 액세스(RBAC) 정책에서는 통합을 위해 와일드카드(\$1)를 사용합니다.

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

****  

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

------

1. 복제하려는 DynamoDB의 경우 위의 RBAC 정책 템플릿을 **테이블에 대한 리소스 기반 정책**에 붙여 넣고 필드를 채웁니다.

1. 정책을 제한하려면 통합을 생성한 후 정책을 업데이트하고 전체 `integrationArn`을 지정한 다음 `StringLike` 대신 `StringEquals` 조건을 사용해야 합니다.

1. DynamoDB 테이블에 대해 시점 복구(PITR)가 활성화되어 있는지 확인합니다.

1. 리소스 기반 액세스(RBAC) 정책에 `Describe Export`를 추가했는지 확인합니다.

다음 명령을 사용하여 RBAC 정책을 테이블에 추가할 수도 있습니다.

```
aws dynamodb put-resource-policy \
--resource-arn arn:aws:dynamodb:<region>:<account-id>:table/<ddb-table-name> \
--policy file://resource-policy-with-condition.json \
--region <region>
```

정책이 올바르게 적용되었는지 확인하려면 다음 명령을 사용하여 테이블에 대한 리소스 정책을 가져옵니다.

```
aws dynamodb get-resource-policy \
--resource-arn arn:aws:dynamodb:<region>:<account-id>:table/<ddb-table-name>
--region <region>
```

## Salesforce 소스 구성
<a name="zero-etl-config-source-salesforce"></a>

Salesforce 소스에 대한 연결을 생성하려면 [Salesforce에 연결](connecting-to-data-salesforce.md) 섹션을 참조하세요.

연결을 생성한 후에는 복제할 소스 데이터를 지정할 수 있습니다.

![\[스크린샷은 제로 ETL 통합에서 복제할 소스 데이터를 지정하는 것을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/zero-etl-salesforce-source-data.png)


제로 ETL 통합을 사용하면 지원되는 엔터티에 대해 DDL 작업을 수행할 수 있습니다. 지원되지 않는 엔터티 목록은 [Salesforce에서 지원되지 않는 엔터티 및 필드](zero-etl-config-source-salesforce-unsupported-entities.md) 섹션을 참조하세요.

## Salesforce Marketing Cloud Account Engagement 소스 구성
<a name="zero-etl-config-source-salesforce-mcae"></a>

Salesforce Marketing Cloud Account Engagement 소스에 대한 연결을 생성하려면 [Salesforce Marketing Cloud Account Engagement에 연결](connecting-to-data-salesforce-marketing-cloud-account-engagement.md) 섹션을 참조하세요.

제로 ETL 통합을 사용하면 지원되는 다음 엔터티에 대해 DDL 작업을 수행할 수 있습니다.


| 엔터티 레이블 | 엔터티 이름 | 
| --- | --- | 
| 캠페인 | campaign | 
| List | list | 
| 동적 콘텐츠 | dynamic-content | 
| 멤버쉽 나열 | list-membership | 
| 잠재 고객 | prospect | 
| User | user | 
| EmailTemplate | email-template | 
| EngagementStudioProgram | engagement-studio-program | 
| 랜딩 페이지 | landing-page | 
| 이메일 나열 | list-email | 

## 추가 Salesforce 구성
<a name="zero-etl-config-source-additional-salesforce-configuration"></a>

Salesforce 제로 ETL에는 Glue 데이터베이스에 대한 Lake Formation 권한이 필요합니다. 그렇지 않으면 로그에서 `IngestionFailed`를 가져오고 다음 오류와 발생합니다.

```
"errorMessage": "Insufficient lake formation permissions on Target Glue database."
```

## SAP OData 소스 구성
<a name="zero-etl-config-source-sap-odata"></a>

SAP OData 소스에 대한 연결을 생성하려면 [SAP OData에 연결](connecting-to-data-sap-odata.md) 섹션을 참조하세요.

이제 SAP OData 소스와의 제로 ETL 통합은 `EntityOf`로 시작하는 엔터티를 지원합니다. 프라이머리 키를 재정의하는 기능은 현재 SAPOData EntityOf 객체에만 지원됩니다. 이 속성이 설정되면 수정할 수 없습니다.

## ServiceNow 소스 구성
<a name="zero-etl-config-source-servicenow"></a>

ServiceNow 소스에 대한 연결을 생성하려면 [ServiceNow에 연결](connecting-to-data-servicenow.md) 섹션을 참조하세요.

## Zendesk 소스 구성
<a name="zero-etl-config-source-zendesk"></a>

Zendesk 소스에 대한 연결을 생성하려면 [Zendesk에 연결](connecting-to-data-zendesk.md) 섹션을 참조하세요.

제로 ETL 통합을 사용하면 지원되는 엔터티에 대해 다음 DDL 작업을 수행할 수 있습니다.


| 엔터티 레이블 | 엔터티 이름 | 생성 지원 | 업데이트 지원 | 삭제 지원 | 
| --- | --- | --- | --- | --- | 
| Tickets | tickets | Y | Y | Y | 
| User | 사용자 | Y | Y | Y | 
| 만족도 등급 | satisfaction-rating | Y | Y | N | 
| 문서 | 문서 | Y | Y | N | 
| Organization | 조직 | Y | Y | Y | 
| 호출 | calls | Y | Y | N | 
| 콜 레그 | legs | Y | Y | N | 

## Zoho CRM 소스 구성
<a name="zero-etl-config-source-zoho-crm"></a>

Zoho CRM 소스에 대한 연결을 생성하려면 [Zoho CRM에 연결](connecting-to-data-zoho-crm.md) 섹션을 참조하세요.

제로 ETL 통합을 사용하면 지원되는 엔터티에 대해 다음 DDL 작업을 수행할 수 있습니다.


| 엔터티 레이블 | 엔터티 이름 | DML-Insert 지원 | DML-Modify 지원 | DML-Delete 지원 | DDL-Insert 지원 | DDL-Modify 지원 | DDL-Delete 지원 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| 리드 | lead | Y | Y | Y | Y | Y | Y | 
| 계정 | 계정 | Y | Y | Y | Y | Y | Y | 
| 연락처 | contact | Y | Y | Y | Y | Y | Y | 
| Campaigns | campaign | Y | Y | Y | Y | Y | Y | 
| 작업 | task | Y | Y | Y | Y | Y | Y | 
| 이벤트 | 이벤트 | Y | Y | Y | Y | Y | Y | 
| 호출 | call | Y | Y | Y | Y | Y | Y | 
| Solutions | 솔루션 | Y | Y | Y | Y | Y | Y | 
| Products | product | Y | Y | Y | Y | Y | Y | 
| 공급업체 | 공급업체 | Y | Y | Y | Y | Y | Y | 
| 견적 | quote | Y | Y | Y | Y | Y | Y | 
| 판매 주문 | sales-order | Y | Y | Y | Y | Y | Y | 
| 구매 주문 | purchase-order | Y | Y | Y | Y | Y | Y | 
| 인보이스 | 인보이스 | Y | Y | Y | Y | Y | Y | 
| Cases | 사례 | Y | Y | Y | Y | Y | Y | 
| Price Books | price-book | Y | Y | Y | Y | Y | Y | 

## Facebook Ads 소스 구성
<a name="zero-etl-config-source-facebook-ads"></a>

Facebook Ads 소스에 대한 연결을 생성하려면 [Facebook Ads에 연결](connecting-to-data-facebook-ads.md) 섹션을 참조하세요.

제로 ETL 통합을 사용하면 지원되는 엔터티에 대해 다음 DDL 작업을 수행할 수 있습니다.


| 엔터티 레이블 | 엔터티 이름 | 생성 지원 | 업데이트 지원 | 삭제 지원 | 
| --- | --- | --- | --- | --- | 
| 광고 세트 | \$1/adsets | Y | Y | Y | 
| 캠페인 | \$1/campaigns | Y | Y | Y | 
| 광고 | \$1/ads | Y | Y | Y | 

## Instagram Ads 소스 구성
<a name="zero-etl-config-source-instagram-ads"></a>

Instagram Ads 소스에 대한 연결을 생성하려면 [Instagram Ads에 연결](connecting-to-data-instagram-ads.md) 섹션을 참조하세요.

제로 ETL 통합을 사용하면 지원되는 엔터티에 대해 다음 DDL 작업을 수행할 수 있습니다.


| 엔터티 이름 | 생성 지원 | 업데이트 지원 | 삭제 지원 | 
| --- | --- | --- | --- | 
| \$1/adsets | Y | Y | Y | 
| \$1/campaigns | Y | Y | Y | 
| \$1/ads | Y | Y | Y | 

# Salesforce에서 지원되지 않는 엔터티 및 필드
<a name="zero-etl-config-source-salesforce-unsupported-entities"></a>

다음 Salesforce 엔터티 또는 필드는 Salesforce 소스를 사용하는 제로 ETL 통합에 사용할 수 없습니다.

```
AccountChangeEvent, AccountContactRoleChangeEvent, AccountHistory, AccountShare, ActiveFeatureLicenseMetric, ActivePermSetLicenseMetric, ActiveProfileMetric, ActivityFieldHistory, amzsec__asi_Telemetry_Data_Store__ChangeEvent, amzsec__asi_Telemetry_Data_Store__History, amzsec__asi_Telemetry_Data_Store__Share, amzsec__asi_Telemetry_Job_Log__ChangeEvent, amzsec__asi_Telemetry_Job_Log__History, amzsec__asi_Telemetry_Job_Log__Share, amzsec__asi_Telemetry_Requirement__ChangeEvent, amzsec__asi_Telemetry_Requirement__History, amzsec__asi_Telemetry_Requirement__Share, ApexClass, ApexComponent, ApexLog, ApexPage, ApexTestQueueItem, ApexTestResult, ApexTrigger, AssetChangeEvent, AssetHistory, AssetRelationshipHistory, AssetShare, AssignmentRule, AssociatedLocationHistory, AsyncApexJob, AuditTrailFileExportShare, AuthorizationFormConsentChangeEvent, AuthorizationFormConsentHistory, AuthorizationFormConsentShare, AuthorizationFormDataUseHistory, AuthorizationFormDataUseShare, AuthorizationFormHistory, AuthorizationFormShare, AuthorizationFormTextHistory, AuthProvider, AuthSession, BatchJobHistory, BatchJobPartFailedRecordHistory, BatchJobPartHistory, BatchJobShare, BrandTemplate, BriefcaseAssignmentChangeEvent, BriefcaseDefinitionChangeEvent, BusinessBrandShare, BusinessHours, BusinessProcess, CalcMatrixColumnRangeHistory, CalcProcStepRelationshipHistory, CalculationMatrixColumnHistory, CalculationMatrixHistory, CalculationMatrixRowHistory, CalculationMatrixShare, CalculationMatrixVersionHistory, CalculationProcedureHistory, CalculationProcedureShare, CalculationProcedureStepHistory, CalculationProcedureVariableHistory, CalculationProcedureVersionHistory, Calendar, CalendarViewShare, CallCenter, CallCoachConfigModifyEvent, CampaignChangeEvent, CampaignHistory, CampaignMemberChangeEvent, CampaignMemberStatusChangeEvent, CampaignShare, CaseChangeEvent, CaseHistory, CaseHistory2 CaseHistory2ChangeEvent, CaseRelatedIssueChangeEvent, CaseRelatedIssueHistory, CaseShare, CaseStatus, CaseTeamMember, CaseTeamRole, CaseTeamTemplate, CaseTeamTemplateMember, CaseTeamTemplateRecord, CategoryNode, ChangeRequestChangeEvent, ChangeRequestHistory, ChangeRequestRelatedIssueChangeEvent, ChangeRequestRelatedIssueHistory, ChangeRequestRelatedItemChangeEvent, ChangeRequestRelatedItemHistory, ChangeRequestShare, ChatRetirementRdyMetrics, ChatterActivity, ClientBrowser, CollaborationGroup, CollaborationGroupMember, CollaborationGroupMemberRequest, CollaborationInvitation, CommSubscriptionChannelTypeHistory, CommSubscriptionChannelTypeShare, CommSubscriptionConsentChangeEvent, CommSubscriptionConsentHistory, CommSubscriptionConsentShare, CommSubscriptionHistory, CommSubscriptionShare, CommSubscriptionTimingHistory, Community, ConnectedApplication, ContactChangeEvent, ContactHistory, ContactPointAddressChangeEvent, ContactPointAddressHistory, ContactPointAddressShare, ContactPointConsentChangeEvent, ContactPointConsentHistory, ContactPointConsentShare, ContactPointEmailChangeEvent, ContactPointEmailHistory, ContactPointEmailShare, ContactPointPhoneChangeEvent, ContactPointPhoneHistory, ContactPointPhoneShare, ContactPointTypeConsentChangeEvent, ContactPointTypeConsentHistory, ContactPointTypeConsentShare, ContactRequestShare, ContactShare, ContentDocumentChangeEvent, ContentDocumentHistory, ContentDocumentLink, ContentDocumentLinkChangeEvent, ContentDocumentSubscription, ContentFolderItem, ContentFolderLink, ContentFolderMember, ContentNote, ContentNotification, ContentTagSubscription, ContentUserSubscription, ContentVersionChangeEvent, ContentVersionComment, ContentVersionHistory, ContentVersionRating, ContentWorkspace, ContentWorkspaceMember, ContentWorkspacePermission, ContentWorkspaceSubscription, ContractChangeEvent, ContractHistory, ContractLineItemChangeEvent, ContractLineItemHistory, ContractStatus, Conversation, ConversationParticipant, CronJobDetail, CronTrigger, CustomBrand, CustomBrandAsset, CustomerShare, CustomHttpHeader, DashboardComponent, DataUseLegalBasisHistory, DataUseLegalBasisShare, DataUsePurposeHistory, DataUsePurposeShare, DecisionTableRecordset, DeleteEvent, DocumentAttachmentMap, Domain, DomainSite, DTRecordsetReplicaShare, EmailBounceEvent, EmailMessageChangeEvent, EmailServicesAddress, EmailServicesFunction, EmailTemplate, EmailTemplateChangeEvent, EngagementAttendeeChangeEvent, EngagementAttendeeHistory, EngagementChannelTypeHistory, EngagementChannelTypeShare, EngagementInteractionChangeEvent, EngagementInteractionHistory, EngagementInteractionShare, EngagementInterface, EngagementTopicChangeEvent, EngagementTopicHistory, EntitlementChangeEvent, EntitlementHistory, EntitlementTemplate, EntityMilestoneHistory, EntitySubscription, EventChangeEvent, EventRelationChangeEvent, EventRelayConfigChangeEvent, ExpressionSetHistory, ExpressionSetShare, ExpressionSetVersionHistory, ExternalEventMappingShare, FeedAttachment, FeedLike, FeedPollChoice, FeedPollVote, FeedSignal, FieldPermissions, FieldSecurityClassification, FiscalYearSettings, FlowInterviewLogShare, FlowInterviewShare, FlowOrchestrationEvent, FlowOrchestrationInstanceShare, FlowOrchestrationStageInstanceShare, FlowOrchestrationStepInstanceShare, FlowOrchestrationWorkItemShare, FlowRecordShare, FlowRecordVersionChangeEvent, FlowTestResultShare, Folder, Group, GroupMember, Holiday, IdeaComment, IdpEventLog, ImageHistory, ImageShare, IncidentChangeEvent, IncidentHistory, IncidentRelatedItemChangeEvent, IncidentRelatedItemHistory, IncidentShare, IndividualChangeEvent, IndividualHistory, IndividualShare, KnowledgeableUser, LeadChangeEvent, LeadHistory, LeadShare, LeadStatus, LightningExitByPageMetrics, LightningToggleMetrics, LightningUsageByAppTypeMetrics, LightningUsageByBrowserMetrics, LightningUsageByFlexiPageMetrics, LightningUsageByPageMetrics, ListEmailChangeEvent, ListEmailShare, ListView, LocationChangeEvent, LocationHistory, LocationShare, LocationTrustMeasureShare, LoginHistory, LoginIp, MacroChangeEvent, MacroHistory, MacroInstructionChangeEvent, MacroShare, MacroUsageShare, ManagedContentVariantChangeEvent, MessagingEndUserHistory, MessagingEndUserShare, MessagingSessionHistory, MessagingSessionShare, MilestoneType, MLEngagementEvent, ObjectPermissions, OpportunityChangeEvent, OpportunityContactRoleChangeEvent, OpportunityFieldHistory, OpportunityLineItemChangeEvent, OpportunityShare, OpportunityStage, OrderChangeEvent, OrderHistory, OrderItemChangeEvent, OrderItemHistory, OrderShare, OrderStatus, Organization, OrgEmailAddressSecurity, OrgWideEmailAddress, OutgoingEmail, OutgoingEmailRelation, PackageLicense, PartnerRole, PartyConsentChangeEvent, PartyConsentHistory, PartyConsentShare, Period, PermissionSet, PermissionSetAssignment, PermissionSetTabSetting, Pricebook2ChangeEvent, Pricebook2History, PricebookEntryChangeEvent, PricebookEntryHistory, PrivacyJobSessionShare, PrivacyObjectSessionShare, PrivacyRTBFRequestHistory, PrivacyRTBFRequestShare, PrivacySessionRecordFailureShare, ProblemChangeEvent, ProblemHistory, ProblemIncidentChangeEvent, ProblemIncidentHistory, ProblemRelatedItemChangeEvent, ProblemRelatedItemHistory, ProblemShare, ProcessDefinition, ProcessExceptionEvent, ProcessExceptionShare, ProcessInstanceChangeEvent, ProcessInstanceStep, ProcessInstanceStepChangeEvent, ProcessNode, Product2ChangeEvent, Product2History, ProductEntitlementTemplate, Profile, ProfileSkillEndorsementHistory, ProfileSkillHistory, ProfileSkillShare, ProfileSkillUserHistory, PromptActionShare, PromptErrorShare, QueueSobject, QuickTextChangeEvent, QuickTextHistory, QuickTextShare, QuickTextUsageShare, RecentlyViewed, RecommendationChangeEvent, RecordActionHistory, RecordAlertHistory, RecordAlertShare, RecordType, ScorecardShare, SellerHistory, SellerShare, ServiceContractChangeEvent, ServiceContractHistory, ServiceContractShare, SetupAuditTrail, SetupEntityAccess, SharingRecordCollectionShare, Site, SiteHistory, SiteRedirectMapping, SocialPersonaHistory, SocialPostChangeEvent, SocialPostHistory, SocialPostShare, SolutionHistory, SolutionStatus, StaticResource, StreamingChannelShare, TableauHostMappingShare, TaskChangeEvent, TaskPriority, TaskStatus, ThreatDetectionFeedback, TimelineObjectDefinitionChangeEvent, TodayGoalShare, Topic, TopicUserEvent, Translation, User, UserAppMenuCustomizationShare, UserChangeEvent, UserDefinedLabelAssignmentShare, UserDefinedLabelShare, UserEmailPreferredPersonShare, UserLicense, UserLogin, UserPackageLicense, UserPreference, UserPrioritizedRecordShare, UserProvisioningRequestShare, UserRole, UserShare, VideoCallChangeEvent, VideoCallParticipantChangeEvent, VideoCallRecordingChangeEvent, VideoCallShare, VisualforceAccessMetrics, VoiceCallChangeEvent, VoiceCallRecordingChangeEvent, VoiceCallShare, Vote, WebLink, WorkAccessShare, WorkBadgeDefinitionHistory, WorkBadgeDefinitionShare, WorkOrderChangeEvent, WorkOrderHistory, WorkOrderLineItemChangeEvent, WorkOrderLineItemHistory, WorkOrderLineItemStatus, WorkOrderShare, WorkOrderStatus, WorkPlanChangeEvent, WorkPlanHistory, WorkPlanShare, WorkPlanTemplateChangeEvent, WorkPlanTemplateEntryChangeEvent, WorkPlanTemplateEntryHistory, WorkPlanTemplateHistory, WorkPlanTemplateShare, WorkStepChangeEvent, WorkStepHistory, WorkStepStatus, WorkStepTemplateChangeEvent, WorkStepTemplateHistory, WorkStepTemplateShare, WorkThanksShare
```

# SAP에 지원되지 않는 엔터티 유형
<a name="zero-etl-config-source-sap-unsupported-entities"></a>

다음 SAP 엔터티 유형은 SAP 소스와 제로 ETL 통합에 사용할 수 없습니다.

```
ODP_HANA (HANA calculation views), ODP_SLT (SLT Replication Server)
```

# ServiceNow에서 지원되지 않는 엔터티 및 필드
<a name="zero-etl-config-source-servicenow-unsupported-entities"></a>

다음 ServiceNow 엔터티 또는 필드는 ServiceNow 소스를 사용하는 제로 ETL 통합에 사용할 수 없습니다.

```
ais_acl_overrides, ais_async_genius_result, ais_async_request, ais_connection, ais_genius_result_configuration_parameters, ais_partition_health, ais_partition_health_response, ais_publish_history, ais_relevancy_training_execution, ais_relevancy_training_staging, ais_search_profile_relevancy_model, catalog_draft_entities, clone_log, clone_log0000, clone_log0001, clone_log0002, clone_log0003, clone_log0004, clone_log0005, clone_log0006, clone_log0007, cmdb_ie_context, cmdb_ie_log, cmdb_ie_run, cmdb_ire_partial_payloads_index, cmdb_qb_result_base$par1, cmdb$par1, discovery_log, discovery_log0000, discovery_log0001, discovery_log0002, discovery_log0003, discovery_log0004, discovery_log0005, discovery_log0006, discovery_log0007, ecc_agent_log, entitlement_data, entl_subscription_map, gs_entitlement_plugin_mapping, ih_transaction_exclusion, import_log, import_log0000, import_log0001, import_log0002, import_log0003, import_log0004, import_log0005, import_log0006, import_log0007, jrobin_archive, jrobin_database, jrobin_datasource, jrobin_definition, jrobin_graph, jrobin_graph_line, jrobin_graph_set, jrobin_graph_set_member, jrobin_shard, jrobin_shard_location, license_role_discovery_run, logger_configuration_validation, m2m_analytics_event_logger, m2m_user_consent_info, ml_artifact_object_store, np$sys_gen_ai_filter_sample, np$sys_ui_element, np$sys_ui_list_element, one_api_service_plan_feature_invocation, one_api_service_plan_invocation, open_nlu_predict_log, open_nlu_predict_log0000, open_nlu_predict_log0001, open_nlu_predict_log0002, open_nlu_predict_log0003, open_nlu_predict_log0004, open_nlu_predict_log0005, open_nlu_predict_log0006, open_nlu_predict_log0007, pa_diagnostic_log, pa_diagnostic_log0000, pa_diagnostic_log0001, pa_diagnostic_log0002, pa_diagnostic_log0003, pa_diagnostic_log0004, pa_diagnostic_log0005, pa_diagnostic_log0006, pa_diagnostic_log0007, pa_favorites, pa_job_log_rows, pa_job_log_rows0000, pa_job_log_rows0001, pa_job_log_rows0002, pa_job_log_rows0003, pa_job_log_rows0004, pa_job_log_rows0005, pa_job_log_rows0006, pa_job_log_rows0007, pa_migration_ignored_scores, pa_scores_l1, pa_scores_l2, pa_scores_migration_groups, par_dashboard_conversion_backup, promin_log, promin_log0000, promin_log0001, promin_log0002, promin_log0003, promin_log0004, promin_log0005, promin_log0006, promin_log0007, promin_request_object, proposed_change_verification_log, proposed_change_verification_log0000, proposed_change_verification_log0001, proposed_change_verification_log0002, proposed_change_verification_log0003, proposed_change_verification_log0004, proposed_change_verification_log0005, proposed_change_verification_log0006, proposed_change_verification_log0007, protected_table_log, protected_table_log0000, protected_table_log0001, protected_table_log0002, protected_table_log0003, protected_table_log0004, protected_table_log0005, protected_table_log0006, protected_table_log0007, pwd_history, qb_query_results, scan_log, scan_log0000, scan_log0001, scan_log0002, scan_log0003, scan_log0004, scan_log0005, scan_log0006, scan_log0007, schema_validator_error, sla_repair_log_entry, sla_repair_log_entry0000, sla_repair_log_entry0001, sla_repair_log_entry0002, sla_repair_log_entry0003, sla_repair_log_entry0004, sla_repair_log_entry0005, sla_repair_log_entry0006, sla_repair_log_entry0007, sla_repair_log_message, sla_repair_log_message0000, sla_repair_log_message0001, sla_repair_log_message0002, sla_repair_log_message0003, sla_repair_log_message0004, sla_repair_log_message0005, sla_repair_log_message0006, sla_repair_log_message0007, sn_bm_client_activity, sn_ci_analytics_st_actionable_notifs, sn_ci_analytics_st_conv_completion_by_cat, sn_ci_analytics_st_conv_dynamic_property, sn_ci_analytics_st_conversation, sn_ci_analytics_st_count_by_date, sn_ci_analytics_st_event_occurrence, sn_ci_analytics_st_event_property_value_trend, sn_ci_analytics_st_issue_auto_resolution, sn_ci_analytics_st_no_clicks, sn_ci_analytics_st_no_results, sn_ci_analytics_st_property_summary_by_event, sn_ci_analytics_st_session_count_per_locale, sn_ci_analytics_st_session_duration, sn_ci_analytics_st_spokes_usage, sn_ci_analytics_st_topic_execution_stats, sn_ci_analytics_st_topic_occurrence, sn_ci_analytics_st_trending_content, sn_ci_analytics_st_trending_queries, sn_ci_analytics_st_users, sn_cs_plugin_signatures, sn_cs_telemetry_log, sn_dfc_application, sn_dfc_product, sn_employee_position, sn_entitlement_st_subscription_application_family, sn_entitlement_st_subscription_application_users, sn_hr_sp_st_relevant_for_you, sn_instance_clone_log, sn_instance_clone_log0000, sn_instance_clone_log0001, sn_instance_clone_log0002, sn_instance_clone_log0003, sn_instance_clone_log0004, sn_instance_clone_log0005, sn_instance_clone_log0006, sn_instance_clone_log0007, sn_km_mr_st_kb_knowledge, sn_me_st_topic, sn_rf_conditional_definition, sn_rf_evaluation_type, sn_rf_evaluation_type_input, sn_rf_recommendation_action, sn_rf_recommendation_experience, sn_rf_recommendation_history, sn_rf_recommendation_rule, sn_rf_record_display_configuration, sn_rf_trend_definition, sn_sub_man_st_account_level_entitlement, sn_sub_man_st_gen_ai_metadata, sn_sub_man_st_instance_used_assist_count, sn_sub_man_st_now_assist_creator_instances, sn_sub_man_st_now_assists_aggregate, sn_sub_man_st_subscribed_groups, sn_sub_man_st_subscription_insights, sn_sub_man_st_subscription_license_detail_metric, sn_sub_man_st_unallocated_group_recommendation, sn_sub_man_st_unconfirmed_user_group, sn_wn_user_app_activity, sn_wn_user_content_activity, snc_monitorable_item, snpar_sched_export_v_scheduled_export_visualization, spotlight, spotlight_audit, spotlight_copy_log_row, spotlight_copy_log_row0000, spotlight_copy_log_row0001, spotlight_copy_log_row0002, spotlight_copy_log_row0003, spotlight_copy_log_row0004, spotlight_copy_log_row0005, spotlight_copy_log_row0006, spotlight_copy_log_row0007, spotlight_job_log_row, spotlight_job_log_row0000, spotlight_job_log_row0001, spotlight_job_log_row0002, spotlight_job_log_row0003, spotlight_job_log_row0004, spotlight_job_log_row0005, spotlight_job_log_row0006, spotlight_job_log_row0007, st_dfc_performance_metric, st_license_detail_metric, st_on_call_hour, st_sc_wizard_question, st_sys_catalog_items_and_variable_sets, st_sys_design_system_icon, subscription_instance_stats, svc_container_config, svc_environment_config, svc_layer_config, svc_model_assoc_ci, svc_model_checkpoint_attr, svc_model_obj_cluster, svc_model_obj_constraint, svc_model_obj_deployable, svc_model_obj_element, svc_model_obj_impact, svc_model_obj_impactrule, svc_model_obj_package, svc_model_obj_path, svc_model_obj_relation, svc_model_obj_service, sys_administrative_script_transaction, sys_amb_message, sys_amb_processor, sys_analytics_batch_state, sys_analytics_config, sys_analytics_data_points_error, sys_analytics_event, sys_analytics_logger, sys_analytics_logger_field, sys_app_payload_loader_rule, sys_app_payload_unloader_rule, sys_app_scan_payload, sys_app_scan_variable, sys_app_scan_variable_type, sys_archive_destroy_log, sys_archive_destroy_run, sys_archive_log, sys_archive_run, sys_atf_transaction_log, sys_attachment_doc, sys_attachment_doc_v2, sys_attachment_soft_deleted, sys_audit, sys_audit_relation, sys_auth_policy_api_allowed, sys_aw_registered_scripting_modal, sys_cache_flush, sys_data_egress_source, sys_dm_delete_count, sys_export_set_log, sys_export_set_log0000, sys_export_set_log0001, sys_export_set_log0002, sys_export_set_log0003, sys_export_set_log0004, sys_export_set_log0005, sys_export_set_log0006, sys_export_set_log0007, sys_flow_compiled_flow, sys_flow_compiled_flow_chunk, sys_flow_context_chunk, sys_flow_context_chunk_archive, sys_flow_context_inputs_chunk, sys_flow_execution_history, sys_flow_log, sys_flow_log0000, sys_flow_log0001, sys_flow_log0002, sys_flow_log0003, sys_flow_plan_context_binding, sys_flow_report_doc, sys_flow_report_doc_chunk, sys_flow_report_doc_chunk_archive, sys_flow_runtime_state_chunk, sys_flow_runtime_value_chunk, sys_flow_subflow_plan_chunk, sys_flow_trigger_plan_chunk, sys_flow_val_listener, sys_flow_value, sys_flow_value_chunk, sys_gen_ai_config_example, sys_gen_ai_feature_mapping, sys_gen_ai_strategy_mapping, sys_gen_ai_usage_log, sys_generative_ai_capability_definition, sys_generative_ai_log, sys_generative_ai_response_validator, sys_generative_ai_validator, sys_geo_routing, sys_geo_routing_config, sys_hop_token, sys_hub_action_plan_chunk, sys_hub_snapshot_chunk, sys_journal_field, sys_journal_field_edit, sys_json_chunk, sys_kaa_policy, sys_kaa_subidentity_assertion, sys_kaa_user_policy_mapping, sys_mapplication, sys_mass_encryption_job, sys_notification_execution_log, sys_notification_execution_log0000, sys_notification_execution_log0001, sys_notification_execution_log0002, sys_notification_execution_log0003, sys_notification_execution_log0004, sys_notification_execution_log0005, sys_notification_execution_log0006, sys_notification_execution_log0007, sys_nowmq_message, sys_nowmq_provider_param_definition, sys_orchestrator_action, sys_pd_asset_configuration, sys_pd_context_chunk, sys_pd_context_log, sys_pd_snapshot_chunk, sys_pd_trigger_license, sys_processing_framework_job, sys_query_index_hint, sys_query_rewrite, sys_query_string_log, sys_replication_queue, sys_replication_queue0, sys_replication_queue1, sys_replication_queue2, sys_replication_queue3, sys_replication_queue4, sys_replication_queue5, sys_replication_queue6, sys_replication_queue7, sys_request_performance, sys_rollback_blacklisted, sys_rollback_conflict, sys_rollback_incremental, sys_rollback_log, sys_rollback_log0000, sys_rollback_log0001, sys_rollback_log0002, sys_rollback_log0003, sys_rollback_log0004, sys_rollback_log0005, sys_rollback_log0006, sys_rollback_log0007, sys_rollback_run, sys_rollback_schema_change, sys_rollback_schema_conflict, sys_rollback_sequence, sys_scheduler_assignment, sys_scheduler_memory_pressure_job_log, sys_script_adapter_rule, sys_script_batch_adapter_rule, sys_search_source_filter, sys_service_authentication, sys_signing_job, sys_suggestion_reader, sys_sync_history_review, sys_trend, sys_unreferenced_preview, sys_unreferenced_record_rule, sys_upgrade_manifest, sys_upgrade_state, sys_ux_asset_cache_buster, sys_ux_lib_component_prop, sys_ux_lib_presource, sys_ux_page_action, sys_ux_page_action_binding, sysevent_queue_runtime, syslog, syslog_app_scope0000, syslog_app_scope0001, syslog_app_scope0002, syslog_app_scope0003, syslog_app_scope0004, syslog_app_scope0005, syslog_app_scope0006, syslog_app_scope0007, syslog_email0000, syslog_email0001, syslog_email0002, syslog_email0003, syslog_email0004, syslog_email0005, syslog_email0006, syslog_email0007, syslog_transaction, syslog_transaction0000, syslog_transaction0001, syslog_transaction0002, syslog_transaction0003, syslog_transaction0004, syslog_transaction0005, syslog_transaction0006, syslog_transaction0007, syslog0000, syslog0001, syslog0002, syslog0003, syslog0004, syslog0005, syslog0006, syslog0007, ts_attachment, ts_c_1_0, ts_c_1_1, ts_c_1_2, ts_c_1_3, ts_c_1_4, ts_c_1_5, ts_c_1_6, ts_c_1_7, ts_c_1_8, ts_c_1_9, ts_c_10_0, ts_c_10_1, ts_c_10_2, ts_c_10_3, ts_c_10_4, ts_c_10_5, ts_c_10_6, ts_c_10_7, ts_c_10_8, ts_c_10_9, ts_c_11_0, ts_c_11_1, ts_c_11_2, ts_c_11_3, ts_c_11_4, ts_c_11_5, ts_c_11_6, ts_c_11_7, ts_c_11_8, ts_c_11_9, ts_c_2_0, ts_c_2_1, ts_c_2_2, ts_c_2_3, ts_c_2_4, ts_c_2_5, ts_c_2_6, ts_c_2_7, ts_c_2_8, ts_c_2_9, ts_c_3_0, ts_c_3_1, ts_c_3_2, ts_c_3_3, ts_c_3_4, ts_c_3_5, ts_c_3_6, ts_c_3_7, ts_c_3_8, ts_c_3_9, ts_c_39_0, ts_c_39_1, ts_c_39_2, ts_c_39_3, ts_c_39_4, ts_c_39_5, ts_c_39_6, ts_c_39_7, ts_c_39_8, ts_c_39_9, ts_c_40_0, ts_c_40_1, ts_c_40_2, ts_c_40_3, ts_c_40_4, ts_c_40_5, ts_c_40_6, ts_c_40_7, ts_c_40_8, ts_c_40_9, ts_c_41_0, ts_c_41_1, ts_c_41_2, ts_c_41_3, ts_c_41_4, ts_c_41_5, ts_c_41_6, ts_c_41_7, ts_c_41_8, ts_c_41_9, ts_c_42_0, ts_c_42_1, ts_c_42_2, ts_c_42_3, ts_c_42_4, ts_c_42_5, ts_c_42_6, ts_c_42_7, ts_c_42_8, ts_c_42_9, ts_c_43_0, ts_c_43_1, ts_c_43_2, ts_c_43_3, ts_c_43_4, ts_c_43_5, ts_c_43_6, ts_c_43_7, ts_c_43_8, ts_c_43_9, ts_c_44_0, ts_c_44_1, ts_c_44_2, ts_c_44_3, ts_c_44_4, ts_c_44_5, ts_c_44_6, ts_c_44_7, ts_c_44_8, ts_c_44_9, ts_c_45_0, ts_c_45_1, ts_c_45_2, ts_c_45_3, ts_c_45_4, ts_c_45_5, ts_c_45_6, ts_c_45_7, ts_c_45_8, ts_c_45_9, ts_c_6_0, ts_c_6_1, ts_c_6_2, ts_c_6_3, ts_c_6_4, ts_c_6_5, ts_c_6_6, ts_c_6_7, ts_c_6_8, ts_c_6_9, ts_c_7_0, ts_c_7_1, ts_c_7_2, ts_c_7_3, ts_c_7_4, ts_c_7_5, ts_c_7_6, ts_c_7_7, ts_c_7_8, ts_c_7_9, ts_c_8_0, ts_c_8_1, ts_c_8_2, ts_c_8_3, ts_c_8_4, ts_c_8_5, ts_c_8_6, ts_c_8_7, ts_c_8_8, ts_c_8_9, ts_c_attachment, ts_chain, ts_deleted_doc, ts_document, ts_field, ts_index_stats, ts_phrase, ts_search_stats, ts_v4_attachment, ts_word, ua_app_metadata, ua_audit_stats, ua_extra_page, ua_monitor_property, ua_monitor_property_audit, ua_shared_service, ua_sn_table_inventory, ua_sp_known_bot, ua_upload_log, v_ais_result_improvement_rule_condition_builder_values, v_cluster_nodes, v_cxs_search_resource, v_db_index, v_db_trigger, v_file_load_order, v_interaction_context, v_iostats, v_mysql_proclist, v_mysql_status, v_mysql_variables, v_on_call_report_cache, v_pa_par_combined_dashboard, v_pd_activity_condition_to_run, v_pd_activity_start_rule_with_condition, v_pd_lane_condition_to_run, v_sql_debug, v_st_kb_category, v_st_kb_most_viewed, v_st_kb_recently_viewed, v_st_km_genai_mra_similar_task, v_st_popular_item, v_st_recent_item, v_st_sc_cat_item, v_st_sc_catalog, v_st_sc_category, validator_run_summary, vtb_card_history, wf_log, wf_log0000, wf_log0001, wf_log0002, wf_log0003, wf_log0004, wf_log0005, wf_log0006, wf_log0007, spotlight_criteria, pa_snapshots, pa_widget_indicators, pa_widgets, sn_cim_register, global, gsw_change_log, gsw_content, gsw_content_group, gsw_content_information, gsw_status_of_content, multi_factor_browser_fingerprint, multi_factor_criteria, pa_filters, password_policy, plan_execution, plan_mysql, plan_oracle, plan_postgres, sc_rest_api_without_access_policy, sn_actsub_activity, sn_actsub_activity_fanout, sn_actsub_activity_stream, sn_actsub_activity_type, sn_actsub_atype_attributes, sn_actsub_atype_notif_pref, sn_actsub_module, sn_actsub_notif_object, sn_actsub_subobject_stream, sn_actsub_subscribable_object, sn_actsub_subscription_notif_pref, sn_actsub_user_stream, sn_appclient_store_outbound_http_quota, sn_appcreator_app_template, sn_critical_update, sn_docker_spoke_images, sn_employee_app, sn_employee_app_access, sn_employee_app_access_criteria, sn_entitlement_genai_assist_counts, sn_entitlement_genai_creator_user_counts, sn_entitlement_genai_creator_users, sn_mif_instance, sn_mif_sync_data, sn_mif_sync_status, sn_mif_table_registration, sn_mif_trust_config, sn_vsc_best_practice_configurations, sn_vsc_best_practice_goals, sn_vsc_changed_hardening_settings, sn_vsc_changed_scan_findings, sn_vsc_check_security_area, sn_vsc_elevation_event, sn_vsc_event, sn_vsc_export_event, sn_vsc_export_setting, sn_vsc_harc_compliance_status_lookup, sn_vsc_hardening_compliance_scores, sn_vsc_impersonation_event, sn_vsc_instance_hardening_settings, sn_vsc_login_event, sn_vsc_scan_comparisons, sn_vsc_scan_summary, sn_vsc_security_check_categories, sn_vsc_security_check_configurations, sn_vsc_security_configuration_groups, sn_vsc_security_privacy_capabilities, sn_vsc_updated_settings, sn_vsc_user_comparisons, sys_app_hash_inventory, sys_coalesce_strategy_deferred, sys_flow_secure_data, sys_formula_function, sys_geocoding_request, sys_global_file_hash, sys_import_set_row, sys_index, sys_index_explain, sys_installation_schedule, sys_installation_schedule_item, sys_offline_app, sys_package, sys_package_dependency_item, sys_package_dependency_m2m, sys_plugins, sys_querystat, sys_reap_package, sys_scoped_plugin, sys_stage_storage_alias, sys_storage_alias, sys_storage_table_alias, sys_store_app, sys_table_partition, sys_upgrade_history_log, sys_user_public_credential, sys_webauthn_authentication_request, sys_webauthn_registration_request, syslog_app_scope, syslog_email, syslog_page_timing, ua_instance_state_config, v_expression_cache, v_private_cache, v_shared_cache, sys_amb_message0002, sys_amb_message0004, sys_amb_message0005, sys_metadata, v_par_unified_report_viz
```

# 제로 ETL 통합 대상 구성
<a name="zero-etl-target"></a>

제로 ETL 통합을 위해 대상을 구성할 때 AWS에서 제공하는 몇 가지 옵션이 있습니다. 대상은 암호화된 Amazon Redshift 데이터 웨어하우스 또는 Amazon SageMaker Lakehouse 카탈로그일 수 있습니다.

제로 ETL 통합의 대상을 선택하기 전에 다음 대상 리소스 중 하나를 구성해야 합니다.

제로 ETL 통합의 대상에 대한 구성 옵션은 다음을 포함합니다.
+ 일반 Amazon S3 스토리지로 구성된 Amazon SageMaker Lakehouse 카탈로그 및 데이터베이스. [일반 S3 스토리지를 사용한 Amazon SageMaker Lakehouse 카탈로그 구성](#zero-etl-config-target-regular-s3)을(를) 참조하세요.
+ Amazon S3 Tables 버킷으로 구성된 Amazon SageMaker Lakehouse 카탈로그. [Amazon S3 Tables를 대상으로 구성](#zero-etl-config-target-s3-tables)을(를) 참조하세요.
+ Amazon Redshift 관리형 스토리지로 구성된 Amazon SageMaker Lakehouse 카탈로그. [Amazon Redshift 관리형 스토리지로 Amazon SageMaker Lakehouse 카탈로그 구성](#zero-etl-config-target-redshift-managed-storage)을(를) 참조하세요.
+ Redshift 네임스페이스로 식별되는 Amazon Redshift 데이터 웨어하우스. [Amazon Redshift 데이터 웨어하우스 대상 구성](#zero-etl-config-target-redshift-data-warehouse)을(를) 참조하세요.

**참고**  
 생성 후에는 제로 ETL 통합의 대상을 수정할 수 없습니다.

## 일반 S3 스토리지를 사용한 Amazon SageMaker Lakehouse 카탈로그 구성
<a name="zero-etl-config-target-regular-s3"></a>

이 섹션에서는 제로 ETL 통합에서 Amazon SageMaker Lakehouse 카탈로그 대상의 스토리지로 일반 Amazon S3 버킷을 구성하는 데 필요한 사전 조건과 설정 단계에 대해 설명합니다.

### 통합 설정을 위한 사전 조건
<a name="zero-etl-config-target-regular-s3-prerequisites"></a>

일반 S3 스토리지를 사용하여 Amazon SageMaker Lakehouse 카탈로그와 제로 ETL 통합을 생성하기 전에 다음 설정 작업을 완료해야 합니다.

1. AWS Glue 데이터베이스 설정

1. 카탈로그 RBAC 정책 제공

1. 대상 IAM 역할 생성

일반 Amazon S3 스토리지로 Amazon SageMaker Lakehouse 카탈로그를 구성한 후 [대상과의 통합 구성](#zero-etl-config-target-configuring-the-integration)(으)로 이동하여 통합 설정을 완료할 수 있습니다.

## Amazon S3 Tables를 대상으로 구성
<a name="zero-etl-config-target-s3-tables"></a>

이 섹션에서는 제로 ETL 통합을 위한 대상으로 Amazon S3 Tables를 구성하는 데 필요한 사전 조건과 설정 단계에 대해 설명합니다.

### 통합 설정을 위한 사전 조건
<a name="zero-etl-config-target-s3-tables-prerequisites"></a>

Amazon S3 Tables를 대상으로 하는 제로 ETL 통합을 생성하기 전에 다음 설정 작업을 완료해야 합니다.

1. Amazon S3 Tables 버킷 설정

1. 카탈로그 RBAC 정책 제공

1. 대상 IAM 역할 생성

### Amazon S3 Tables 버킷 설정
<a name="zero-etl-config-target-s3-tables-bucket"></a>

1. [Amazon S3 Tables 시작하기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-getting-started.html)의 지침에 따라 계정에 S3 Tables 버킷을 생성합니다.

1. [Amazon S3 Tables와 AWS 서비스 통합](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html#table-integration-procedures) 지침에 따라 S3 Tables 버킷과의 분석 통합을 사용하도록 설정합니다.

### 카탈로그 RBAC 정책 제공
<a name="zero-etl-config-target-s3-tables-rbac"></a>

소스와 Amazon S3 Tables 카탈로그 대상 간의 통합을 허용하려면 카탈로그 RBAC 정책에 다음 권한을 추가해야 합니다.

대상 AWS Glue 카탈로그 리소스 정책에는 AuthorizeInboundIntegration에 대한 Glue 서비스 권한이 포함되어야 합니다. 또한 통합을 생성하는 소스 보안 주체나 대상 AWS Glue 리소스 정책에는 CreateInboundIntegration 권한이 필요합니다.

**참고**  
교차 계정 시나리오의 경우 소스 주 계정과 대상 AWS Glue 카탈로그 리소스 정책 모두에 리소스에 대한 glue:CreateInboundIntegration 권한이 포함되어야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Principal": {
        "AWS": [
        	"arn:aws:iam::123456789012:user/Alice"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:CreateInboundIntegration"
      ],
      "Resource": [
	      "arn:aws:glue:us-east-1:111122223333:catalog/<s3tablescatalog>/*"
      ],
      "Condition": {
        "StringLike": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    },
    {
      "Principal": {
        "Service": [
          "glue.amazonaws.com"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:AuthorizeInboundIntegration"
      ],
      "Resource": [
      "arn:aws:glue:us-east-1:111122223333:catalog/<s3tablescatalog>/*"
      ],
      "Condition": {
        "StringEquals": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    }
  ]
}
```

------

**참고**  
`<s3tablescatalog>`를 S3 Tables의 카탈로그 이름으로 바꿉니다.

### 대상 IAM 역할 생성
<a name="zero-etl-config-target-s3-tables-iam"></a>

다음과 같은 권한 및 신뢰 관계를 가진 대상 IAM 역할을 생성합니다.

IAM 정책 예제:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "s3tables:ListTableBuckets",
        "s3tables:GetTableBucket",
        "s3tables:GetTableBucketEncryption",
        "s3tables:GetNamespace",
        "s3tables:CreateNamespace",
        "s3tables:ListNamespaces",
        "s3tables:CreateTable",
        "s3tables:GetTable",
        "s3tables:GetTableEncryption",
        "s3tables:ListTables",
        "s3tables:GetTableMetadataLocation",
        "s3tables:UpdateTableMetadataLocation",
        "s3tables:GetTableData",
        "s3tables:PutTableData"
      ],
      "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": "AWS/Glue/ZeroETL"
        }
      },
      "Effect": "Allow"
    },
    {
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

------

대상 IAM 역할에 다음 신뢰 정책을 추가하여 AWS Glue 서비스가 역할을 수임할 수 있도록 허용합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "glue.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

**참고**  
S3 Tables 버킷 리소스 정책에 이 대상 IAM 역할에 대한 명시적인 거부 문이 없는지 확인합니다. 명시적으로 거부하면 모든 허용 권한이 무시되고 통합이 제대로 작동하지 않습니다.

## Amazon Redshift 관리형 스토리지로 Amazon SageMaker Lakehouse 카탈로그 구성
<a name="zero-etl-config-target-redshift-managed-storage"></a>

이 섹션에서는 Amazon Redshift 관리형 스토리지(RMS)를 제로 ETL 통합의 대상으로 사용하여 Amazon SageMaker Lakehouse 카탈로그를 구성하기 위한 사전 조건 및 설정 단계에 대해 설명합니다.

### 통합 설정을 위한 사전 조건
<a name="zero-etl-config-target-rms-prerequisites"></a>

Redshift 관리형 스토리지를 사용하여 Amazon SageMaker Lakehouse 카탈로그와의 제로 ETL 통합을 생성하기 전에 다음 설정 작업을 완료해야 합니다.

1. Amazon Redshift 클러스터 또는 서버리스 작업 그룹 설정

1. Lake Formation과의 Amazon Redshift 통합 등록

1. Lake Formation에서 관리형 카탈로그 생성

1. IAM 권한 구성

### Amazon Redshift 관리형 스토리지 설정
<a name="zero-etl-config-target-rms-setup"></a>

제로 ETL 통합을 위한 Amazon Redshift 관리형 스토리지를 설정하려면 다음 단계를 따르세요.

1. 기존 Amazon Redshift 클러스터 또는 Serverless 작업 그룹을 생성하거나 사용합니다. 통합을 성공적으로 수행하려면 대상 Amazon Redshift 작업 그룹이나 클러스터에서 `enable_case_sensitive_identifier` 파라미터가 켜져 있는지 확인합니다. 대소문자 구분 활성화에 대한 자세한 내용은 Amazon Redshift 관리 안내서의 [데이터 웨어하우스에 대소문자 구분 기능 사용 설정](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-setting-up.case-sensitivity.html)을 참조하세요.

1. Redshift에서 AWS Lake Formation의 카탈로그로 통합을 등록합니다. [AWS Glue 데이터 카탈로그에 클러스터 및 네임스페이스 등록](https://docs.aws.amazon.com/redshift/latest/dg/iceberg-integration-register.html)을 참조하세요.

1. AWS Lake Formation에서 페더레이션 또는 관리형 카탈로그를 생성합니다. 자세한 내용은 다음을 참조하세요.
   +  [AWS Glue 데이터 카탈로그로 Amazon Redshift 데이터 가져오기](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-namespaces-datacatalog.html) 
   +  [AWS Glue 데이터 카탈로그에서 Amazon Redshift 관리형 카탈로그 생성](https://docs.aws.amazon.com/lake-formation/latest/dg/create-rms-catalog.html) 

1. 대상 역할에 대한 IAM 권한을 구성합니다. 이 역할에는 Redshift 및 Lake Formation 리소스 모두에 액세스할 수 있는 권한이 필요합니다. 이 역할에는 적어도 다음 사항이 있어야 합니다.
   + Redshift 클러스터 또는 작업 그룹에 액세스할 수 있는 권한
   + Lake Formation 카탈로그에 액세스할 수 있는 권한
   + 카탈로그에서 테이블을 생성하고 관리할 수 있는 권한
   + 모니터링을 위한 CloudWatch 및 CloudWatch Logs 권한

Amazon Redshift 관리형 스토리지로 Amazon SageMaker Lakehouse 카탈로그를 구성한 후 [대상과의 통합 구성](#zero-etl-config-target-configuring-the-integration)(으)로 이동하여 통합 설정을 완료할 수 있습니다.

## Amazon Redshift 데이터 웨어하우스 대상 구성
<a name="zero-etl-config-target-redshift-data-warehouse"></a>

이 섹션에서는 제로 ETL 통합을 위한 대상으로 Amazon Redshift 데이터 웨어하우스를 구성하는 데 필요한 사전 조건과 설정 단계에 대해 설명합니다.

### 통합 설정을 위한 사전 조건
<a name="zero-etl-config-target-redshift-prerequisites"></a>

Amazon Redshift 데이터 웨어하우스 대상과 제로 ETL 통합을 생성하기 전에 다음 설정 작업을 완료해야 합니다.

1. Amazon Redshift 클러스터 또는 서버리스 작업 그룹 설정

1. 대/소문자 구분 구성

1. IAM 권한 구성

### Amazon Redshift 데이터 웨어하우스 설정
<a name="zero-etl-config-target-redshift-setup"></a>

제로 ETL 통합을 위한 Amazon Redshift 데이터 웨어하우스를 설정하려면 다음 단계를 따르세요.

1. [Amazon Redshift 콘솔](https://console.aws.amazon.com/redshiftv2/home)로 이동하여 **클러스터 생성**을 클릭하거나 기존 클러스터를 사용합니다. Amazon Redshift Serverless의 경우 **작업 그룹 생성**을 클릭합니다.

1. 새 클러스터를 생성하는 경우 적절한 클러스터 크기를 선택하고 클러스터가 암호화되어 있는지 확인합니다. 서버리스의 경우 요구 사항에 따라 작업 그룹 설정을 구성합니다.

1. 통합을 성공적으로 수행하려면 대상 Amazon Redshift 작업 그룹이나 클러스터에서 `enable_case_sensitive_identifier` 파라미터가 켜져 있는지 확인합니다. 대소문자 구분 활성화에 대한 자세한 내용은 Amazon Redshift 관리 안내서의 [데이터 웨어하우스에 대소문자 구분 기능 사용 설정](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-setting-up.case-sensitivity.html)을 참조하세요.

1. 제로 ETL 통합이 Amazon Redshift 데이터 웨어하우스에 액세스할 수 있도록 IAM 권한을 구성합니다. 다음 권한이 있는 IAM 역할을 생성해야 합니다.
   + Amazon Redshift 클러스터 또는 작업 그룹에 액세스할 수 있는 권한
   + Amazon Redshift에서 데이터베이스 및 테이블을 생성하고 관리할 수 있는 권한
   + 모니터링을 위한 CloudWatch 및 Amazon CloudWatch Logs 권한

1. Amazon Redshift 작업 그룹 또는 클러스터 설정이 완료되면 제로 ETL 통합을 위해 데이터 웨어하우스를 구성해야 합니다. 자세한 내용은 Amazon Redshift 관리 안내서의 [제로 ETL 통합 시작하기](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.setting-up.html)를 참조하세요.

**참고**  
Amazon Redshift 데이터 웨어하우스를 대상으로 사용하는 경우 통합은 지정된 데이터베이스에 복제된 데이터를 저장하기 위한 스키마를 생성합니다. 스키마 이름은 통합 이름에서 파생됩니다.

Amazon Redshift 데이터 웨어하우스를 구성한 후 [대상과의 통합 구성](#zero-etl-config-target-configuring-the-integration)(으)로 이동하여 통합 설정을 완료할 수 있습니다.

## 대상과의 통합 구성
<a name="zero-etl-config-target-configuring-the-integration"></a>

대상 리소스를 구성하고, 연결을 선택하고, 소스 IAM 역할을 지정한 후, 다음 단계에 따라 통합 설정을 완료합니다.

1. 이전 단계에서 구성한 대상을 지정합니다.

1. AWS Glue **수정 요청** 옵션을 선택합니다. Amazon Redshift 대상의 경우 다음과 같은 결과로 이어집니다.
   + Amazon Redshift 클러스터 또는 서버리스 작업 그룹에 권한이 있는 서비스 보안 주체를 적용합니다.
   + Amazon Redshift 클러스터 또는 서버리스 작업 그룹에 권한이 있는 AWS Glue 소스 ARN을 적용합니다.
   + `enable_case_sensitive_identifier = true`를 사용하여 새 파라미터 그룹을 연결합니다.  
![\[스크린샷은 제로 ETL 통합에서 대상을 선택하는 것을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/zero-etl-target-selection.png)

1. 통합 이름을 제공하고 **통합 생성 및 시작**을 선택합니다.

1. 통합이 활성 상태가 되면 통합 세부 정보 페이지로 이동하여 **통합에서 데이터베이스 생성**을 선택합니다.

1. 마지막으로 Redshift 쿼리 편집기로 이동한 다음 데이터베이스에 연결하여 스냅샷 및 증분 데이터를 검증할 수 있습니다.

**참고**  
네임스페이스 또는 카탈로그 이름에는 소문자 영숫자와 밑줄만 사용할 수 있습니다. 이는 AWS Glue Data Catalog에서 특수 문자를 포함한 원하는 이름을 사용하여 데이터베이스를 생성할 수 있도록 허용하는 것과 다릅니다.

# 통합 구성
<a name="zero-etl-configuring-integration"></a>

제로 ETL 통합을 설정할 때 소스 시스템과 대상 시스템 간에 데이터가 동기화되는 방식을 제어하도록 다양한 파라미터를 구성할 수 있습니다. 이 섹션에서는 데이터 추출 및 로드 프로세스에 영향을 주는 주요 구성 옵션을 설명합니다.

## 온디맨드 스냅샷 설정
<a name="zero-etl-config-continuous-sync"></a>

온디맨드 스냅샷 설정을 사용하면 데이터 소스의 업데이트 내용을 데이터 대상에 지속적으로 동기화할지 여부를 선택할 수 있습니다. 비활성화된 경우(기본값) 통합은 소스 시스템에 변경 사항이 있을 때 지속적인 동기화를 제공합니다. 활성화된 경우 통합은 지속적인 업데이트 없이 일회성 데이터 복제를 수행합니다.

![\[스크린샷은 온디맨드 스냅샷 설정 구성을 보여줍니다. 활성화된 경우 통합은 변경 데이터 캡처 없이 데이터를 한 번 복제하여 지속적인 업데이트 없이 일회성 데이터 복제를 제공합니다. 통합 생성 후에는 이 설정을 수정할 수 없습니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/ContinuousSync.png)


**참고**  
통합이 생성된 후에는 온디맨드 스냅샷 설정을 수정할 수 없습니다. 데이터 동기화 요구 사항에 따라 이 옵션을 신중하게 선택하세요.

## RefreshInterval 설정
<a name="zero-etl-config-refresh-interval"></a>

`RefreshInterval` 파라미터는 변경 데이터 캡처(CDC) 풀 또는 증분 로드가 트리거되는 빈도를 지정합니다. 이 파라미터는 특정 데이터 업데이트 패턴, 시스템 로드 고려 사항 및 성능 최적화 목표에 맞게 CDC 빈도를 조정할 수 있는 유연성을 제공합니다. 대상이 Redshift인 경우 통합이 생성된 후에는 새로 고침 간격을 수정할 수 없습니다. 다른 대상의 경우 통합 생성 후 새로 고침 간격을 수정할 수 있습니다. 새로 고침 간격이 24시간 이상인 DynamoDB 소스의 경우 순차적 일일 배치 처리에 대한 자세한 내용은 [DynamoDB 소스의 순차 일일 배치](#zero-etl-config-refresh-interval-ddb-batches) 섹션을 참조하세요.

![\[스크린샷은 제로 ETL 통합 설정의 refreshInterval 파라미터 구성을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/refreshinterval.png)


15분에서 8,640분(6일)까지 시간 간격을 설정할 수 있어 데이터 최신성과 시스템 리소스 사용량 사이의 균형을 맞출 수 있습니다. 현재 DynamoDB 소스와 SaaS 소스 모두에 대해 새로 고침 간격을 사용자 지정할 수 있습니다.
+ **최소 간격:** 15분
+ **최대 간격:** 8,640분(6일)
+ **기본값:** DynamoDB 소스의 경우 15분, SaaS 소스의 경우 60분

새로 고침 간격을 선택할 때 고려해야 할 요소:
+ **데이터 변동성:** 소스 데이터가 변경되는 빈도
+ **비즈니스 요구 사항:** 분석 데이터의 최신성 수준
+ **비용 고려 사항:** 업데이트 빈도가 높을수록 처리 및 스토리지 비용이 증가할 수 있음

**참고**  
RefreshInterval 파라미터는 CDC의 트리거 빈도를 정의합니다. 실제 새로 고침 빈도는 소스 데이터의 변경량과 대상 시스템의 처리 용량에 따라 달라질 수 있습니다. 통합 성능을 모니터링하고 필요에 따라 새로 고침 간격을 조정하여 특정 사용 사례에 맞게 최적화하세요.

프로그래밍 방식으로 새로 고침 간격을 수정하려면 IntegrationConfig 파라미터와 함께 [ModifyIntegration API](https://docs.aws.amazon.com/glue/latest/webapi/API_ModifyIntegration.html#API_ModifyIntegration_RequestSyntax)를 사용합니다.

### DynamoDB 소스의 순차 일일 배치
<a name="zero-etl-config-refresh-interval-ddb-batches"></a>

Amazon DynamoDB 소스를 사용하는 제로 ETL 통합의 경우 새로 고침 간격을 1,440분(24시간) 이상으로 구성하면 통합은 단일 내보내기 작업 대신 순차 일일 배치 처리를 사용합니다. 이 동작은 최대 내보내기 기간이 24시간인 [DynamoDB 내보내기 기간 제한](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ServiceQuotas.html#:~:text=Incremental%20export%3A%20DynamoDB%20Incremental%20Export%20to%20Amazon%20S3%20can%20support%20up%20to%20300%20concurrent%20export%20jobs%20or%20up%20to%20a%20total%20of%20100TB%20from%20all%20in%2Dflight%20table%20exports.%20The%20export%20period%20window%20limits%20are%2015%20minutes%20minimum%20and%2024%20hours%20maximum.) 때문입니다.

새로 고침 간격이 24시간을 초과하면 통합은 다음과 같이 작동합니다.

1. CDC 프로세스는 전체 새로 고침 간격 기간(예: 8,640분 간격의 경우 6일) 동안 대기합니다.

1. 새로 고침 간격이 경과한 후 통합은 최대 24시간 단위로 여러 차례의 순차 DynamoDB 내보내기를 수행합니다.

1. CDC 작업은 각 배치를 순차적으로 처리하여 새로 고침 간격 기간 동안 발생한 모든 변경 사항을 캡처합니다.

예를 들어 새로 고침 간격을 8,640분(6일)으로 설정하면 통합은 6일간 대기한 후 6\$17회의 순차 내보내기(내보내기 작업에 소요된 추가 시간을 반영하는 1회의 후속 내보내기 포함)와 CDC 작업을 실행하여 해당 기간 동안 발생한 모든 변경 사항을 동기화합니다.

# 파티션 사양 및 스키마 중첩 해제 안내서
<a name="zero-etl-partition-schema-unnesting"></a>

 DynamoDB 및 SaaS 애플리케이션과 같은 NoSQL 데이터 소스로 작업하는 경우 데이터는 종종 분석에 고유한 문제를 초래합니다.

1. 동일한 테이블 내의 레코드에 다른 스키마가 있을 수 있음

1. 동일한 테이블 내에 중첩된 레코드가 다르게 표현될 수 있음

1. 맵 및 배열과 같은 복잡한 중첩 구조에 효율적인 쿼리를 위한 변환이 필요함

1. 규모에 맞는 쿼리 성능을 보장하려면 최적의 데이터 구성이 필요함

 AWS Glue 제로 ETL 통합은 두 가지 강력한 기능을 통해 이러한 문제를 해결합니다.
+  **스키마 중첩 해제:** 복잡한 중첩된 데이터 구조를 분석하기 적합한 형식으로 자동으로 평면화하고 데이터 구조 보존과 쿼리 단순성 최적화 사이의 균형을 맞추기 위해 구성 가능한 수준의 중첩 해제 기능을 제공합니다.
+  **데이터 파티셔닝:** 지정된 열 또는 시간 기반 차원을 기반으로 데이터를 논리적 파티션으로 구성하여 쿼리 실행 중에 파티션 정리를 활성화함으로써 쿼리 성능을 개선하고 비용을 절감합니다.

 이러한 데이터 소스를 효과적으로 쿼리하기 위해 AWS Glue 제로 ETL은 대상 AWS Glue 데이터베이스에서 복제되는 소스 데이터에 대한 기본 스키마 처리 및 파티셔닝 스키마를 제공합니다. CreateIntegrationTableProperty API를 통해 각 테이블에 대한 스키마 중첩 해제 및 파티셔닝 설정을 구성하여 분석 워크로드에 맞게 데이터를 구조화하고 구성하는 방법을 세부적으로 제어할 수 있습니다.

## 기본 중첩 해제 및 파티셔닝 동작
<a name="default-behavior"></a>

1. 대상 테이블에 대한 중첩 해제 옵션이 제공되지 않은 경우 AWS Glue 제로 ETL은 기본적으로 전체 중첩 해제로 설정됩니다.

1. 대상 테이블에 PartitionSpec이 제공되지 않은 경우 AWS Glue 제로 ETL은 기본적으로 버킷 파티셔닝으로 설정됩니다.

# 스키마 중첩 해제
<a name="zero-etl-ddb-schema-unnesting"></a>

 제로 ETL을 통해 분석 서비스와 통합할 때 대상 테이블에 중첩 구조가 표시되는 방식을 선택할 수 있습니다. AWS Glue 제로 ETL은 복잡한 데이터 구조를 분석에 더 적합한 형식으로 평면화하기 위해 스키마 중첩 해제 옵션을 제공합니다.

## 중첩 해제 옵션
<a name="unnesting-options"></a>

 소스와 제로 ETL 통합을 생성할 때 다음의 중첩 해제 옵션 중에서 선택할 수 있습니다. 이러한 옵션은 CreateIntegrationTableProperty API를 호출할 때 사용하는 특정 열거 값에 해당합니다.

중첩 해제 없음(기본값)  
 **API 값: `NO_UNNEST`**   
 DynamoDB 항목의 원래 중첩 구조를 보존합니다. 맵 및 목록은 대상에 구조화된 열로 저장됩니다.  
 최적의 용도: 분석 도구가 중첩된 데이터를 처리할 수 있는 경우 DynamoDB 데이터의 정확한 구조를 보존하는 데 가장 적합합니다.

단일 수준의 중첩 해제  
 **API 값: `TOP_LEVEL`**   
 중첩 맵의 최상위 수준을 개별 열로 평면화합니다. 목록 구조는 중첩 상태로 유지됩니다.  
 최적의 용도: DynamoDB 항목에 일관된 스키마가 있는 경우 데이터 구조의 보존과 쿼리 단순성 사이의 균형을 맞추는 데 가장 적합합니다.

모든 수준의 중첩 해제  
 **API 값: `FULL`**   
 모든 중첩 구조(맵 및 목록)를 점 표기법을 사용하여 개별 열로 재귀적으로 평면화하고 이름을 지정합니다.  
 최적의 용도: 심층 중첩 구조와 평평한 스키마를 선호하는 분석 도구와 함께 작업하는 경우 쿼리 단순화를 극대화하는 데 가장 적합합니다.  
 DynamoDB 데이터에 변동 가능 또는 심층 중첩 구조가 있다면 완전한 중첩 해제로 인해 매우 넓은 테이블과 많은 열이 생성될 수 있습니다.

**Example API에서 중첩 해제 옵션 사용**  
 CreateIntegrationTableProperty API를 통해 스키마 중첩 해제를 구성할 때 UnnestSpec 파라미터에서 중첩 해제 옵션을 지정합니다.  

```
aws glue create-integration-table-property 
  --resource-arn "arn:aws:glue:us-east-1:123456789012:integration/my-integration" 
  --table-name "my-table" 
  --cli-input-json '{
      "TargetTableConfig": {
          "UnnestSpec": "FULL",
          "TargetTableName": "my-target-table",
      }
  }'
```

## 중첩 해제 예제
<a name="unnesting-examples"></a>

 다음 구조가 있는 DynamoDB 항목을 고려하세요.

```
{
  "ProductId": "P12345",
  "ProductDetails": {
    "Name": "Smartphone",
    "Brand": "TechCo",
    "Specifications": {
      "Color": "Black",
      "Storage": "128GB"
    }
  },
  "Reviews": [
    {
      "Rating": 5,
      "Comment": "Great product!"
    },
    {
      "Rating": 4,
      "Comment": "Good value."
    }
  ]
}
```

### 중첩 해제 없음 예제
<a name="no-unnesting-example"></a>

 중첩 해제를 수행하지 않으면 대상 테이블에는 다음과 같은 열이 포함됩니다.
+ ProductId(문자열)
+ ProductDetails(구조체)
+ Reviews(구조체 배열)

 쿼리는 구조체와 배열 액세스 패턴을 사용해야 합니다.

```
SELECT 
  ProductId, 
  ProductDetails.Name, 
  ProductDetails.Specifications.Color
FROM product_table;
```

### 단일 수준 중첩 해제 예제
<a name="unnest-one-level-example"></a>

 단일 수준의 중첩을 해제하면 대상 테이블에는 다음과 같은 열이 포함됩니다.
+ ProductId(문자열)
+ ProductDetails\$1Name(문자열)
+ ProductDetails\$1Brand(문자열)
+ ProductDetails\$1Specifications(구조체)
+ Reviews(구조체 배열)

 첫 번째 수준에서는 쿼리가 간소화됩니다.

```
SELECT 
  ProductId, 
  ProductDetails_Name, 
  ProductDetails_Specifications.Color
FROM product_table;
```

### 모든 수준 중첩 해제 예제
<a name="unnest-all-levels-example"></a>

 모든 수준의 중첩을 해제하면 대상 테이블에는 다음과 같은 열이 포함됩니다.


| Column Name(유형) | 값 | 
| --- | --- | 
| ProductId(문자열) | P12345 | 
| ProductDetails\$1Name(문자열) | 스마트폰 | 
| ProductDetails\$1Brand(문자열) | TechCo | 
| ProductDetails\$1Specifications\$1Color(문자열) | 검은색 | 
| ProductDetails\$1Specifications\$1Storage(문자열) | 128GB | 
| Reviews\$10\$1Rating(숫자) | 5 | 
| Reviews\$10\$1Comment(문자열) | 훌륭한 결과물입니다. | 
| Reviews\$11\$1Rating(숫자) | 4 | 
| Reviews\$11\$1Comment(문자열) | 좋은 값입니다. | 

 쿼리는 완전히 평면화됩니다.

```
SELECT 
  ProductId, 
  ProductDetails_Name, 
  ProductDetails_Specifications_Color
FROM product_table;
```

# 데이터 파티셔닝
<a name="zero-etl-data-partitioning"></a>

## 데이터 파티셔닝이란 무엇인가요?
<a name="partitioning-overview"></a>

 데이터 파티셔닝은 대규모 데이터세트를 파티션이라고 하는 더 작고 관리하기 쉬운 세그먼트로 나누는 기법입니다. AWS Glue 제로 ETL 통합의 컨텍스트에서 파티셔닝은 특정 열 값 또는 해당 값의 변환을 기반으로 대상 위치에서 데이터를 구성합니다.

### 데이터 파티셔닝의 이점
<a name="partitioning-benefits"></a>

 효과적인 데이터 파티셔닝은 분석 워크로드에 몇 가지 주요 이점을 제공합니다.
+  **쿼리 성능 향상:** 쿼리는 관련 없는 파티션을 건너뛸 수 있으므로(파티션 정리) 스캔해야 하는 데이터의 양이 줄어듭니다.
+  **비용 절감:** 스캔하는 데이터가 줄어들면 분석 쿼리에 대한 컴퓨팅 및 I/O 비용을 절감할 수 있습니다.
+  **확장성 향상:** 파티셔닝을 통해 데이터 세그먼트를 병렬 처리할 수 있으므로 분석 워크로드를 더 효율적으로 확장할 수 있습니다.
+  **간소화된 데이터 수명 주기 관리:** 파티션 수준에서 보존 정책을 관리할 수 있으므로 이전 데이터를 더 간편하게 보관하거나 삭제할 수 있습니다.

### 주요 파티셔닝 개념
<a name="partitioning-concepts"></a>

파티션 열  
 레코드가 파티션으로 구성되는 방식을 결정하는 데 사용되는 데이터의 열입니다. 효과적인 파티션 열은 일반적인 쿼리 패턴과 일치해야 하며 적절한 카디널리티가 있어야 합니다.

파티션 함수  
 파티션 열 값에 변환을 적용하여 실제 파티션 경계를 생성합니다. 예를 들어 자격 증명(원시 값 사용), 시간 기반 함수(year, month, day, hour)가 있습니다.

파티션 정리  
 쿼리 엔진이 쿼리와 관련된 데이터가 포함되지 않은 파티션을 식별하고 건너뛰어 성능을 개선하는 프로세스입니다.

분할 영역 세분성  
 데이터가 파티셔닝되는 세부 수준입니다. 더 세밀한 세분화(파티션 수가 많을수록)는 쿼리 성능을 개선할 수 있지만 메타데이터 오버헤드가 증가할 수 있습니다. 덜 세밀한(파티션 수가 적을수록) 메타데이터 오버헤드는 줄어들지만 필요 이상으로 많은 데이터를 스캔하게 될 수 있습니다.

### AWS Glue 제로 ETL 통합의 파티셔닝
<a name="partitioning-in-zero-etl"></a>

 AWS Glue 제로 ETL 통합은 고급 파티셔닝 기능을 제공하는 Apache Iceberg 테이블 형식을 사용합니다. 제로 ETL 통합을 생성하면 다음을 수행할 수 있습니다.
+ 데이터 소스에 최적화된 기본 파티셔닝 전략 사용
+ 쿼리 패턴에 맞는 사용자 지정 파티셔닝 사양 정의
+ 파티션 열에 변환 적용(타임스탬프 기반 파티셔닝에 특히 유용)
+ 다중 수준 파티셔닝을 위한 여러 파티션 전략 결합

 파티셔닝 구성은 제로 ETL 통합을 설정할 때 `CreateIntegrationTableProperty` API를 통해 지정됩니다. 구성이 완료되면 AWS Glue는 이러한 파티셔닝 전략을 자동으로 적용하여 대상 위치에서 데이터를 구성합니다.

## 파티셔닝 사양 API 참조
<a name="partition-api-reference"></a>

CreateIntegrationTableProperties API에서 다음 파라미터를 사용하여 파티셔닝을 구성합니다.

PartitionSpec  
대상 위치에서 데이터를 파티셔닝하는 방법을 정의하는 파티션 사양의 배열입니다.  

```
{
  "partitionSpec": [
    {
      "fieldName": "timestamp_col",
      "functionSpec": "month",
      "conversionSpec": "epoch_milli"
    },
    {
      "fieldName": "category",
      "functionSpec": "identity"
    }
  ]
}
```

FieldName  
파티셔닝에 사용할 열 이름을 지정하는 UTF-8 문자열(1\$1128바이트)입니다.

FunctionSpec  
파티셔닝 함수를 지정합니다. 유효한 값:  
+ `identity` - 변환 없이 소스 값을 직접 사용
+ `year` - 타임스탬프 값에서 연도 추출(예: 2023)
+ `month` - 타임스탬프 값에서 월 추출(예: 2023-01)
+ `day` - 타임스탬프 값에서 날짜 추출(예: 2023-01-15)
+ `hour` - 타임스탬프 값에서 시간 추출(예: 2023-01-15-14)
 시간 기반 함수(`year`, `month`, `day`, `hour`)는 소스 타임스탬프 형식을 지정하는 데 `ConversionSpec` 파라미터가 필요합니다.

ConversionSpec  
 소스 데이터의 타임스탬프 형식을 지정하는 UTF-8 문자열입니다. 유효값은 다음과 같습니다.  
+ `epoch_sec` - 초 단위의 Unix 에포크 타임스탬프
+ `epoch_milli` - 밀리초 단위의 Unix 에포크 타임스탬프
+ `iso` - ISO 8601 형식의 타임스탬프

## 파티셔닝 전략
<a name="partitioning-strategies"></a>

### 기본 파티셔닝
<a name="default-partitioning"></a>

 파티션 열을 지정하지 않으면 AWS Glue 제로 ETL은 데이터 소스에 최적화된 기본 파티셔닝 전략을 적용합니다.
+  **프라이머리 키 기반 파티셔닝:** 프라이머리 키가 있는 소스(예: DynamoDB 테이블)의 경우 AWS Glue 제로 ETL은 파티션 폭발을 방지하기 위해 버킷팅이 있는 프라이머리 키를 사용하여 데이터를 자동으로 파티셔닝합니다.

 기본 파티셔닝은 수동으로 구성할 필요 없이 일반적인 쿼리 패턴에 잘 작동하도록 설계되었습니다. 그러나 특정 쿼리 패턴 또는 성능 요구 사항의 경우 사용자 지정 파티셔닝 전략을 정의할 수 있습니다.

### 사용자 정의 파티셔닝 전략
<a name="user-defined-partitioning"></a>

 AWS Glue 제로 ETL을 사용하면 `PartitionSpec` 파라미터를 사용하여 사용자 지정 파티셔닝 전략을 정의할 수 있습니다. 하나 이상의 파티션 열을 지정하고 각 열에 서로 다른 파티셔닝 함수를 적용할 수 있습니다.

 **자격 증명 파티셔닝**은 열의 원시 값을 사용하여 파티션을 생성합니다. 이 전략은 범주, 리전 또는 상태 필드와 같이 카디널리티가 낮거나 중간 정도인 열에 유용합니다.

**Example 자격 증명 파티셔닝 예제**  

```
{
  "partitionSpec": [
    {
      "fieldName": "category",
      "functionSpec": "identity"
    }
  ]
}
```
 이렇게 하면 "category" 열의 각 고유 값에 대해 별도의 파티션이 생성됩니다.

**주의**  
 카디널리티가 높은 열(예: 프라이머리 키 또는 타임스탬프)에서 자격 증명 파티셔닝을 사용하면 파티션 폭발로 인해 성능이 저하되고 메타데이터 오버헤드가 증가할 수 있으므로 자격 증명 파티셔닝을 사용하지 마세요.

 **시간 기반 파티셔닝**은 다양한 세부 수준(연도, 월, 일 또는 시간)의 타임스탬프 값을 기반으로 데이터를 구성합니다. 이 전략은 시계열 데이터에 이상적이며 효율적인 시간 범위 쿼리를 지원합니다.

 시간 기반 파티셔닝을 사용하는 경우 AWS Glue 제로 ETL은 파티션 함수를 적용하기 전에 다양한 타임스탬프 형식을 표준화된 형식으로 자동 변환할 수 있습니다. 이 변환은 `ConversionSpec` 파라미터를 사용하여 지정됩니다.

**Example 시간 기반 파티셔닝 예제**  

```
{
  "partitionSpec": [
    {
      "fieldName": "created_at",
      "functionSpec": "month",
      "conversionSpec": "epoch_milli"
    }
  ]
}
```
 이렇게 하면 Unix 에포크 타임스탬프를 포함하는 "created\$1at" 열을 기반으로 데이터를 월별로 파티셔닝합니다.

 AWS Glue 제로 ETL은 다음과 같은 시간 기반 파티션 함수를 지원합니다.
+  **연도:** 데이터를 연도별로 파티셔닝(예: 2023, 2024) 
+  **월:** 데이터를 월별로 파티셔닝(예: 2023-01, 2023-02) 
+  **일:** 데이터를 일별로 파티셔닝(예: 2023-01-01, 2023-01-02) 
+  **시간:** 데이터를 시간별로 파티셔닝(예: 2023-01-01-01, 2023-01-01-02) 

 AWS Glue 제로 ETL은 `ConversionSpec` 파라미터를 통해 다음과 같은 타임스탬프 형식을 지원합니다.
+  **epoch\$1sec:** Unix 에포크 타임스탬프(초 단위) 
+  **epoch\$1milli:** Unix 에포크 타임스탬프(밀리초 단위) 
+  **iso:** ISO 8601 형식의 타임스탬프 

**참고**  
 원본 열 값은 소스 데이터에서 변경되지 않습니다. AWS Glue는 대상 데이터베이스 테이블에서 파티션 열 값만 타임스탬프 유형으로 변환합니다. 변환은 파티셔닝 프로세스에만 적용됩니다.

 **다중 수준 파티셔닝**은 여러 파티션 전략을 결합하여 계층 기반 파티셔닝 체계를 생성합니다. 이는 동일한 데이터세트에 대해 서로 다른 유형의 쿼리를 최적화하는 데 유용합니다.

**Example 다중 수준 파티셔닝 예제**  

```
{
  "partitionSpec": [
    {
      "fieldName": "created_at",
      "functionSpec": "month",
      "conversionSpec": "iso"
    },
    {
      "fieldName": "region",
      "functionSpec": "identity"
    }
  ]
}
```
 이렇게 하면 먼저 월별로("created\$1at" 열에서), 그리고 리전별로 2단계 파티셔닝 체계가 생성됩니다. 이를 통해 날짜 범위, 특정 리전, 또는 이러한 차원의 조합을 기준으로 필터링하는 효율적인 쿼리가 가능합니다.

 다중 수준 파티셔닝 체계를 설계할 때는 다음 사항을 고려하세요.
+  파티션 계층 구조에서 선택성이 높은 열을 먼저 배치 
+  파티션 세부 수준과 파티션 수 간 균형 맞추기 
+  파티셔닝 체계를 가장 일반적인 쿼리 패턴에 맞도록 조정 

## 모범 사례
<a name="best-practices"></a>

### 파티션 열 선택
<a name="best-practices-partition-column-selection"></a>
+  `identity` 파티션 함수에는 카디널리티가 높은 열을 사용하지 마세요. ID 파티셔닝과 함께 높은 카디널리티 열을 사용하면 작은 파티션이 많이 생성되어 수집 성능이 크게 저하될 수 있습니다. 카디널리티가 높은 열에는 다음이 포함될 수 있습니다.
  + 프라이머리 키
  + 타임스탬프 필드(예: `LastModifiedTimestamp`, `CreatedDate`)
  + 시스템 생성 타임스탬프
+  동일한 열에서 여러 타임스탬프 파티션을 선택하지 마세요. 예: 

  ```
  "partitionSpec": [
        {"fieldName": "col1", "functionSpec": "year", "conversionSpec" : "epoch_milli"},
        {"fieldName": "col1", "functionSpec": "month", "conversionSpec" : "epoch_milli"},
        {"fieldName": "col1", "functionSpec": "day", "conversionSpec" : "epoch_milli"},
        {"fieldName": "col1", "functionSpec": "hour", "conversionSpec" : "epoch_milli"}
  ]
  ```

### 파티션 FunctionSpec/ConversionSpec 선택
<a name="best-practices-partition-functionspec-conversionspec-selection"></a>
+  타임스탬프 기반 파티셔닝 함수를 사용할 때 타임스탬프 기반 파티셔닝에 대해 선택한 열 값의 형식을 나타내는 올바른 ConversionSpec(epoch\$1sec \$1 epoch\$1milli \$1 iso)을 지정합니다. AWS Glue 제로 ETL은 파티셔닝 전에 이 파라미터를 사용하여 소스 데이터를 타임스탬프 형식으로 올바르게 변환합니다.
+  데이터 볼륨에 따라 적절한 세분화(년/월/일/시간)를 사용합니다.
+  ISO 타임스탬프를 사용할 때 시간대 영향을 고려합니다. AWS Glue 제로 ETL은 선택한 타임스탬프 열의 모든 레코드 값을 UTC 시간대로 채웁니다.

## 오류 처리
<a name="error-handling"></a>

### NEEDS\$1ATTENTION 상태
<a name="needs-attention-state"></a>

 다음과 같은 경우 통합이 NEEDS\$1ATTENTION 상태가 됩니다.
+ 지정된 파티션 열이 소스에 없음
+ 파티션 열의 타임스탬프 변환 실패

# 제한 사항
<a name="limitations"></a>

## 파티셔닝 제한 사항
<a name="partitioning-limitations"></a>
+  통합이 생성된 후에는 나면 파티션 사양을 변경할 수 없습니다. 다른 파티셔닝 전략을 사용하려면 새로운 통합을 생성해야 합니다.
+  파티션 열의 최대 수는 10개로 제한됩니다.

## 교차 계정 통합 제한 사항
<a name="cross-account-limitations"></a>
+  교차 계정 통합을 생성할 때 AWS Glue 콘솔에는 통합이 존재하지 않는 계정에 호스팅된 대상 AWS Glue 테이블에 대해 UnnestSpec 및 PartitionSpec을 구성하기 위한 CreateIntegrationTableProperty API를 호출하지 않는다는 제한 사항이 있습니다.

   **해결 방법:** CreateIntegrationTableProperty API는 대상 데이터베이스가 있는 계정에서 CX에 의해 호출되어야 합니다.

## 다중 통합 제한 사항
<a name="multiple-integrations-limitations"></a>
+  동일한 소스를 다른 스키마 중첩 해제/파티션 구성으로 복제하려면 각 통합마다 새로운 AWS Glue 데이터베이스를 별도로 생성해야 합니다. 나중에 개별 AWS Glue 데이터베이스에서 각 테이블에 대해 원하는 스키마 중첩 해제 및 파티셔닝 구성을 사용하여 CreateIntegrationTableProperty를 호출합니다.

# 일반적인 통합 작업
<a name="zero-etl-common-integration-tasks"></a>



## 통합 생성
<a name="zero-etl-creating"></a>

이 섹션에서는 통합을 생성하는 일반적인 단계를 설명합니다. 이 예제에서는 Amazon DynamoDB를 소스로 사용합니다.

1. AWS Glue 콘솔 홈 페이지에서 **제로 ETL 통합**을 선택합니다.

1. 제로 ETL 통합 홈 페이지에서 모든 통합을 볼 수 있습니다. 새 통합을 생성하려면 **제로 ETL 통합 생성**을 선택합니다.  
![\[스크린샷은 기본 제로 ETL 통합 페이지를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/zero-etl-main.png)

1. **소스 유형**을 선택하라는 메시지가 표시됩니다. 소스를 선택하고 **다음**을 클릭합니다. SaaS 통합 소스에 대해서는 소스 구성 섹션을 참조하세요.

1. **소스 및 대상 구성** 페이지에서 복제할 테이블 또는 엔터티를 선택합니다. Amazon DynamoDB의 경우 PITR 및 RBAC 정책이 구성되어 있는지 확인합니다.

1. 통합 대상을 지정합니다.
   + AWS Glue Data Catalog 대상의 경우 데이터를 복제할 AWS Glue 데이터베이스를 선택합니다.
   + Amazon Redshift 데이터 웨어하우스 대상의 경우 Redshift 클러스터 네임스페이스 또는 Redshift Serverless 작업 그룹 네임스페이스를 선택합니다.

   자세한 내용은 [대상과의 통합 구성](zero-etl-target.md#zero-etl-config-target-configuring-the-integration) 섹션을 참조하세요.

1. 사전 조건에서 생성한 **대상 IAM 역할**을 제공합니다.

1. 대상에 저장되는 데이터에 대해 선택적인 **대상 KMS 키**를 구성하려면 활성화된 KMS 키를 제공합니다. 마찬가지로 대상 네트워크 연결을 구성하려면 AWS Glue 연결을 선택합니다.

1. **대상 수정** 버튼은 이 설명서의 사전 조건 섹션에 있는 일부 단계를 구성합니다. 즉, 1) 카탈로그 RBAC 정책을 제공하며 2) Amazon S3 URI가 제공되지 않은 경우 자동으로 생성하고, 그렇지 않으면 제공된 URI를 사용합니다.

1. Redshift 데이터 웨어하우스 대상과 통합하는 경우:

1. **소스 및 대상 구성** 페이지의 **출력 설정** 섹션에서 대상의 데이터에 사용할 스키마 중첩 해제 옵션을 선택합니다. 데이터에서 고객 파티션 키를 사용하려면 **사용자 지정 파티션 키 지정**을 선택하고 최대 10개의 키를 제공합니다. 그렇지 않으면 단순히 복제되는 DynamoDB 테이블에 할당된 파티션 키를 사용할 수 있습니다.

1. **보안 및 데이터 암호화** 섹션에서 데이터를 대상으로 복제하는 중개 프로세스에 사용할 KMS 키를 제공할 수 있습니다. 그렇지 않으면 AWS 관리형 KMS 키가 사용됩니다. 현재는 15분 복제 설정만 지원합니다. **통합 세부 정보**에 제로 ETL 통합의 이름을 입력합니다.

1. 제공된 모든 세부 정보가 올바른지 검토하고 확인합니다. 모두 확인했으면 **통합 생성 및 시작**을 클릭합니다.

1. 제로 ETL 홈 페이지에서 생성한 통합을 선택하면 통합 세부 정보가 표시됩니다. "상태"는 통합 상태를 나타냅니다.

## 통합 수정
<a name="zero-etl-modifying"></a>

기존 통합을 수정할 수 있습니다.

1. 통합 세부 정보 페이지의 오른쪽 상단 모서리에서 **편집**을 선택합니다.

1. **소스 및 대상 편집** 페이지에서 대상 IAM 역할 및 대상 네트워크 연결을 변경할 수 있습니다. 통합을 생성한 후에는 다른 필드를 편집할 수 없습니다. **다음**을 클릭합니다.

1. **통합 및 구성 편집** 페이지에서 통합의 이름과 설명을 편집할 수도 있습니다. **다음**을 클릭합니다.

1. 편집을 검토하고 확인한 후 **통합 업데이트**를 클릭합니다.

## 통합 삭제
<a name="zero-etl-deleting"></a>

삭제는 통합의 말기 상태입니다. 삭제한 후에는 통합을 되살릴 수 없습니다. 통합을 삭제하면 모든 내부 메타데이터와 중간 저장 데이터가 삭제됩니다.

이 프로세스 중에 대상 테이블에 데이터를 쓰는 실행 중인 모든 작업이 종료됩니다. AWS Glue는 Data Catalog에 위치하는 대상 AWS Glue 데이터베이스와 계정의 Amazon S3 버킷에 있는 관련 데이터를 삭제하거나 정리하지 않습니다. 필요한 경우 이들을 명시적으로 정리해야 합니다.

통합을 삭제하려면:

1. 통합 세부 정보 페이지에서 **삭제**를 클릭합니다.

1. "Delete"를 입력하고 **삭제**를 클릭합니다. 참고: 이는 되돌릴 수 없는 작업입니다.

1. 통합 세부 정보 페이지에서 상태가 "삭제하는 중"으로 표시됩니다. 통합이 실제로 삭제되면 더 이상 제로 ETL 통합 홈 페이지에 표시되지 않습니다.

# API를 사용하여 통합 생성
<a name="zero-etl-using-apis"></a>

다음 API를 사용하여 AWS Glue에서 제로 ETL 통합을 생성하고 관리할 수 있습니다.
+ CreateIntegration
+ CreateIntegrationTableProperties
+ CreateIntegrationResourceProperty
+ UpdateIntegrationTableProperties
+ UpdateIntegrationResourceProperty
+ ModifyingIntegration
+ DeleteIntegration
+ DeleteIntegrationTableProperties
+ DescribeIntegrations
+ DescribeInboundIntegrations
+ GetIntegrationTableProperties
+ GetIntegrationResourceProperty

자세한 내용은 [AWS Glue의 통합 API](aws-glue-api-integrations.md) 섹션을 참조하세요.

# 통합 모니터링
<a name="zero-etl-monitoring"></a>



## 통합 상태
<a name="zero-etl-integration-states"></a>

다음 통합 상태는 통합을 설명합니다.
+ `Creating` - 통합이 생성 중입니다.
+ `Active` - 통합이 트랜잭션 데이터를 대상으로 전송하고 있습니다.
+ `Modifying` - 통합이 수정 중입니다.
+ `Syncing` - 통합에 복구 가능한 오류가 발생하여 데이터를 다시 시드하고 있습니다.
+ `Needs attention` - 통합에 수동 개입이 필요한 이벤트 또는 오류가 발생하여 이를 해결해야 합니다. 문제를 해결하기 위해 통합 세부 정보에 있는 오류 메시지의 지침을 따릅니다.
+ `Failed` - 통합에서 복구할 수 없는 이벤트 또는 오류가 발생했습니다. 통합을 삭제하고 다시 만들어야 합니다.
+ `Deleting` - 통합이 삭제되고 있습니다.

## 통합에 대한 Amazon CloudWatch 로그 보기
<a name="zero-etl-cloudwatch-logs"></a>

AWS Glue 제로 ETL 통합은 데이터 이동을 파악할 수 있도록 Amazon CloudWatch 로그를 생성합니다. 성공한 각 수집 또는 소스의 문제가 있는 데이터 레코드로 인해 발생하는 모든 실패, 스키마 변경 또는 권한 부족으로 인한 데이터 쓰기 오류와 관련된 로그 이벤트는 고객 계정에 생성된 기본 로그 그룹으로 내보냅니다.

생성된 각 통합의 로그 이벤트는 Amazon Cloudwatch의 `/aws-glue/zeroETL-integrations/logs/`에서 수집됩니다. 로그 그룹 내에서 로그 메시지는 로그 스트림으로 분할됩니다. 생성된 각 통합에는 해당 통합에 대한 모든 로그가 기록되는 전용 로그 스트림이 있습니다. 예를 들어, IntegrationArn `arn:aws:glue:us-east-1:123456789012:integration:03cabe77-79e7-4b7a-b3da-8c160bea6bbf`와의 통합에 대한 로그는 /aws-glue/zeroETL-integrations/logs/03cabe77-79e7-4b7a-b3da-8c160bea6bbf에서 찾을 수 있습니다. 통합이 생성될 때 생성된 \$1integrationArn\$1에서 \$1IntegrationId\$1를 참조할 수 있습니다.

**참고**  
교차 계정 시나리오의 경우 통합이 존재하는 소스 계정에서 소스 처리 로그를 내보내고 대상 데이터베이스가 존재하는 대상 계정에서 대상 처리 로그를 내보냅니다.

### 로깅을 활성화하는 데 필요한 IAM 권한
<a name="zero-etl-cloudwatch-logs-iam"></a>

통합을 생성할 때 통합에 대한 CloudWatch 로깅을 활성화하려면 소스 및 대상 역할에 다음 IAM 권한이 필요합니다. AWS Glue 제로 ETL 통합은 소스 및 대상 역할에 제공된 이러한 권한을 사용하여 CloudWatch 로그를 고객 계정으로 내보냅니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

### 로그 메시지
<a name="zero-etl-cloudwatch-logs-messages"></a>

로그 형식: 제로 ETL 통합은 네 가지 유형의 로그 메시지를 내보냅니다.

```
// Ingestion started
{
"integrationArn": "arn:aws:glue:us-east-2:123456789012:integration/1a012bba-123a-1bba-ab1c-173de3b12345",
...
    "messageType": "IngestionStarted",
    "details": {
        "tableName": "testDDBTable",
        "message": "Ingestion Job started"
    }
}
// Data processing stats on successful table ingestion
{
...
    "messageType": "IngestionProcessingStats",
    "details": {
        "tableName": "testDDBTable",
        "insert_count": 100,
        "update_count": 10,
        "delete_count": 10   
    }
}
// Ingestion failure logs for failed table-processing
{
...
    "messageType": "IngestionFailed",
    "details": {
        "tableName": "testDDBTable",
        "errorMessage": "Failed to ingest data with error: Target Glue database not found.",
        "error_code" : "client_error"
    }
}
// Ingestion completed notification with lastSyncedTimestamp
{
...
    "messageType": "IngestionCompleted",
    "details": {
        "tableName": "testDDBTable",
        "message": "Ingestion Job completed"
        "lastSyncedTimestamp": "1132344255745"
    }
}
```

## 통합에 대한 Amazon CloudWatch 지표 보기
<a name="zero-etl-cloudwatch-metrics"></a>

통합이 완료되면 각 AWS Glue 작업 실행에 대해 계정에 생성된 Amazon Cloudwatch 지표를 볼 수 있습니다.

CloudWatch 지표 네임스페이스: "AWS/Glue/ZeroETL"

지표의 차원:
+ `integrationArn`
+ `loadType`
+ `tableName`

지표 이름:
+ `InsertCount` - 대상 Iceberg 테이블에 삽입된 레코드 수입니다.
+ `UpdateCount` - 대상 Iceberg 테이블에서 업데이트된 레코드 수입니다.
+ `DeleteCount` - 대상 Iceberg 테이블에서 삭제된 레코드 수입니다.
+ `IngestionSucceeded` - 통합에서 수집이 성공한 경우 1을 카운트합니다.
+ `IngestionFailed` - 통합에서 수집이 실패한 경우 1을 카운트합니다.
+ `LastSyncTimestamp` - 소스가 대상에 동기화된 때의 타임스탬프입니다.

## Amazon EventBridge를 사용하여 이벤트 알림 관리
<a name="zero-etl-eventbridge-notifications-setup"></a>

제로 ETL 통합은 Amazon EventBridge를 통해 이벤트 알림을 관리하여 통합의 변경 사항에 대한 최신 정보를 제공합니다. Amazon EventBridge는 애플리케이션을 다양한 소스의 데이터와 연결하는 데 사용할 수 있는 서버리스 이벤트 버스 서비스입니다. 이 경우 이벤트 소스는 AWS Glue입니다. 환경에서 모니터링되는 변경 사항인 이벤트는 AWS Glue에서 EventBridge로 자동으로 전송됩니다. 이벤트는 거의 실시간으로 전송됩니다.

EventBridge는 특정 이벤트에 대해 수행할 작업을 지정하는 이벤트 규칙을 작성할 수 있는 환경을 제공합니다. 또한 EventBridge가 이벤트를 보낼 수 있는 리소스인 대상을 설정할 수도 있습니다. 대상에는 API 대상, Amazon CloudWatch 로그 그룹 등이 포함될 수 있습니다. 규칙에 대한 자세한 내용은 [Amazon EventBridge 규칙](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)을 참조하세요. 대상에 대한 자세한 내용은 [Amazon EventBridge 대상](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html)을 참조하세요.

모든 제로 ETL 알림을 캡처하려면 다음과 일치하는 Eventbridge 규칙을 생성합니다.

```
{
  "source": [{
    "prefix": "aws.glue-zero-etl“
  }],
  "detail-type": [{
    "prefix": "Glue Zero ETL“
  }]
}
```

다음 테이블에는 추가 메타데이터와 함께 제로 ETL 통합 이벤트가 나와 있습니다.


| 고객에게 표시되는 세부 정보 유형 | 설명 | 
| --- | --- | 
| AWS Glue 제로 ETL 수집 완료 | 엔터티에 대한 개별 실행이 성공적으로 완료되었습니다. | 
| AWS Glue 제로 ETL 수집 실패 | 엔터티에 대한 개별 실행이 성공적으로 완료되지 않았습니다(클라이언트 또는 시스템 오류). | 
| AWS Glue 제로 ETL 통합 재동기화 완료 | 통합이 RESYNCED 상태가 되었습니다. | 
| AWS Glue 제로 ETL 통합 실패 | 오류로 인해 통합 상태가 FAILED로 변경되었습니다. | 
| AWS Glue 제로 ETL 통합 주의 필요 | 오류로 인해 통합 상태가 NEEDS\$1ATTENTION으로 변경되었습니다. | 
| AWS Glue 제로 ETL 수집 진행 중 | 엔터티에 대한 개별 실행이 부분적으로 완료되었습니다. | 

# 제한 사항
<a name="zero-etl-limitations"></a>

다음은 제로 ETL 통합에 대한 일반적인 제한 사항 또는 고려 사항입니다.
+  리소스 속성은 해당 리소스와 일대일 관계를 갖습니다. 따라서 해당 리소스를 사용하여 생성된 모든 통합은 단일 리소스 속성을 준수해야 합니다. 따라서 리소스 속성을 수정하면 해당 리소스와 연결된 모든 통합에 영향을 미칩니다.
+  테이블 속성은 리소스 내의 해당 테이블 또는 객체와 일대일 관계를 갖습니다. 따라서 동일한 리소스를 오가는 동일한 테이블을 처리하는 모든 통합은 단일 테이블 속성을 준수해야 합니다.
+ 소스에서 열의 이름을 바꿀 수 없습니다. 열의 이름을 바꾸면 AWS Glue에서 스키마 탐지가 정확하게 수행된다는 보장이 없으며 통합에 대한 영향이 정의되지 않습니다.
+ 다음 고려 사항은 통합이 AWS Lake Formation 관리형 테이블에서 작동하는 방식에 적용됩니다. 기본적으로 IAM/AWS Glue 정책을 사용하여 테이블 및 데이터베이스를 관리합니다.
+ AWS Lake Formation을 사용하여 해당 데이터베이스에서 테이블 생성을 관리하는 경우 역할에 테이블 및 데이터베이스를 생성, 수정 및 삭제할 수 있는 충분한 Lake Formation 권한이 부여되어 있는지 확인해야 합니다.
+ 제로 ETL 요약 페이지에는 현재 어떠한 지표도 포함되어 있지 않습니다.

다음은 제로 ETL 통합의 소스별 제한 사항입니다.
+  SAP OData 소스와의 제로 ETL 통합은 `EntityOf`로 시작하는 엔터티를 지원합니다. 프라이머리 키를 재정의하는 기능은 현재 SAPOData `EntityOf` 객체에만 지원됩니다. 이 속성이 설정되면 수정할 수 없습니다.
+ S3를 통한 Amazon DynamoDB에서 Amazon SageMaker Lakehouse로의 제로 ETL 통합은 최대 50TB의 DynamoDB 테이블 크기를 지원합니다.
+ 소스 DynamoDB 테이블은 Amazon 소유 또는 고객 관리형 AWS KMS 키로 암호화해야 합니다. 소스 DynamoDB 테이블에는 Amazon 관리형 암호화가 지원되지 않습니다.
+ SAP OData는 OAuth 클라이언트와 엔터티의 조합 또는 기본 인증과 엔터티의 조합이 단일 델타 토큰만 가질 수 있는 델타 토큰을 사용하여 작동합니다. 동일한 클라이언트를 사용하는 서로 다른 두 통합에서 동일한 엔터티를 사용하지 마세요.
+ 다음 Salesforce 엔터티 또는 필드는 Salesforce 소스를 사용하는 제로 ETL 통합에 사용할 수 없습니다.

  ```
  AccountChangeEvent, AccountContactRoleChangeEvent, AccountHistory, AccountShare, ActiveFeatureLicenseMetric, ActivePermSetLicenseMetric, ActiveProfileMetric, ActivityFieldHistory, amzsec__asi_Telemetry_Data_Store__ChangeEvent, amzsec__asi_Telemetry_Data_Store__History, amzsec__asi_Telemetry_Data_Store__Share, amzsec__asi_Telemetry_Job_Log__ChangeEvent, amzsec__asi_Telemetry_Job_Log__History, amzsec__asi_Telemetry_Job_Log__Share, amzsec__asi_Telemetry_Requirement__ChangeEvent, amzsec__asi_Telemetry_Requirement__History, amzsec__asi_Telemetry_Requirement__Share, ApexClass, ApexComponent, ApexLog, ApexPage, ApexTestQueueItem, ApexTestResult, ApexTrigger, AssetChangeEvent, AssetHistory, AssetRelationshipHistory, AssetShare, AssignmentRule, AssociatedLocationHistory, AsyncApexJob, AuditTrailFileExportShare, AuthorizationFormConsentChangeEvent, AuthorizationFormConsentHistory, AuthorizationFormConsentShare, AuthorizationFormDataUseHistory, AuthorizationFormDataUseShare, AuthorizationFormHistory, AuthorizationFormShare, AuthorizationFormTextHistory, AuthProvider, AuthSession, BatchJobHistory, BatchJobPartFailedRecordHistory, BatchJobPartHistory, BatchJobShare, BrandTemplate, BriefcaseAssignmentChangeEvent, BriefcaseDefinitionChangeEvent, BusinessBrandShare, BusinessHours, BusinessProcess, CalcMatrixColumnRangeHistory, CalcProcStepRelationshipHistory, CalculationMatrixColumnHistory, CalculationMatrixHistory, CalculationMatrixRowHistory, CalculationMatrixShare, CalculationMatrixVersionHistory, CalculationProcedureHistory, CalculationProcedureShare, CalculationProcedureStepHistory, CalculationProcedureVariableHistory, CalculationProcedureVersionHistory, Calendar, CalendarViewShare, CallCenter, CallCoachConfigModifyEvent, CampaignChangeEvent, CampaignHistory, CampaignMemberChangeEvent, CampaignMemberStatusChangeEvent, CampaignShare, CaseChangeEvent, CaseHistory, CaseHistory2 CaseHistory2ChangeEvent, CaseRelatedIssueChangeEvent, CaseRelatedIssueHistory, CaseShare, CaseStatus, CaseTeamMember, CaseTeamRole, CaseTeamTemplate, CaseTeamTemplateMember, CaseTeamTemplateRecord, CategoryNode, ChangeRequestChangeEvent, ChangeRequestHistory, ChangeRequestRelatedIssueChangeEvent, ChangeRequestRelatedIssueHistory, ChangeRequestRelatedItemChangeEvent, ChangeRequestRelatedItemHistory, ChangeRequestShare, ChatRetirementRdyMetrics, ChatterActivity, ClientBrowser, CollaborationGroup, CollaborationGroupMember, CollaborationGroupMemberRequest, CollaborationInvitation, CommSubscriptionChannelTypeHistory, CommSubscriptionChannelTypeShare, CommSubscriptionConsentChangeEvent, CommSubscriptionConsentHistory, CommSubscriptionConsentShare, CommSubscriptionHistory, CommSubscriptionShare, CommSubscriptionTimingHistory, Community, ConnectedApplication, ContactChangeEvent, ContactHistory, ContactPointAddressChangeEvent, ContactPointAddressHistory, ContactPointAddressShare, ContactPointConsentChangeEvent, ContactPointConsentHistory, ContactPointConsentShare, ContactPointEmailChangeEvent, ContactPointEmailHistory, ContactPointEmailShare, ContactPointPhoneChangeEvent, ContactPointPhoneHistory, ContactPointPhoneShare, ContactPointTypeConsentChangeEvent, ContactPointTypeConsentHistory, ContactPointTypeConsentShare, ContactRequestShare, ContactShare, ContentDocumentChangeEvent, ContentDocumentHistory, ContentDocumentLink, ContentDocumentLinkChangeEvent, ContentDocumentSubscription, ContentFolderItem, ContentFolderLink, ContentFolderMember, ContentNote, ContentNotification, ContentTagSubscription, ContentUserSubscription, ContentVersionChangeEvent, ContentVersionComment, ContentVersionHistory, ContentVersionRating, ContentWorkspace, ContentWorkspaceMember, ContentWorkspacePermission, ContentWorkspaceSubscription, ContractChangeEvent, ContractHistory, ContractLineItemChangeEvent, ContractLineItemHistory, ContractStatus, Conversation, ConversationParticipant, CronJobDetail, CronTrigger, CustomBrand, CustomBrandAsset, CustomerShare, CustomHttpHeader, DashboardComponent, DataUseLegalBasisHistory, DataUseLegalBasisShare, DataUsePurposeHistory, DataUsePurposeShare, DecisionTableRecordset, DeleteEvent, DocumentAttachmentMap, Domain, DomainSite, DTRecordsetReplicaShare, EmailBounceEvent, EmailMessageChangeEvent, EmailServicesAddress, EmailServicesFunction, EmailTemplate, EmailTemplateChangeEvent, EngagementAttendeeChangeEvent, EngagementAttendeeHistory, EngagementChannelTypeHistory, EngagementChannelTypeShare, EngagementInteractionChangeEvent, EngagementInteractionHistory, EngagementInteractionShare, EngagementInterface, EngagementTopicChangeEvent, EngagementTopicHistory, EntitlementChangeEvent, EntitlementHistory, EntitlementTemplate, EntityMilestoneHistory, EntitySubscription, EventChangeEvent, EventRelationChangeEvent, EventRelayConfigChangeEvent, ExpressionSetHistory, ExpressionSetShare, ExpressionSetVersionHistory, ExternalEventMappingShare, FeedAttachment, FeedLike, FeedPollChoice, FeedPollVote, FeedSignal, FieldPermissions, FieldSecurityClassification, FiscalYearSettings, FlowInterviewLogShare, FlowInterviewShare, FlowOrchestrationEvent, FlowOrchestrationInstanceShare, FlowOrchestrationStageInstanceShare, FlowOrchestrationStepInstanceShare, FlowOrchestrationWorkItemShare, FlowRecordShare, FlowRecordVersionChangeEvent, FlowTestResultShare, Folder, Group, GroupMember, Holiday, IdeaComment, IdpEventLog, ImageHistory, ImageShare, IncidentChangeEvent, IncidentHistory, IncidentRelatedItemChangeEvent, IncidentRelatedItemHistory, IncidentShare, IndividualChangeEvent, IndividualHistory, IndividualShare, KnowledgeableUser, LeadChangeEvent, LeadHistory, LeadShare, LeadStatus, LightningExitByPageMetrics, LightningToggleMetrics, LightningUsageByAppTypeMetrics, LightningUsageByBrowserMetrics, LightningUsageByFlexiPageMetrics, LightningUsageByPageMetrics, ListEmailChangeEvent, ListEmailShare, ListView, LocationChangeEvent, LocationHistory, LocationShare, LocationTrustMeasureShare, LoginHistory, LoginIp, MacroChangeEvent, MacroHistory, MacroInstructionChangeEvent, MacroShare, MacroUsageShare, ManagedContentVariantChangeEvent, MessagingEndUserHistory, MessagingEndUserShare, MessagingSessionHistory, MessagingSessionShare, MilestoneType, MLEngagementEvent, ObjectPermissions, OpportunityChangeEvent, OpportunityContactRoleChangeEvent, OpportunityFieldHistory, OpportunityLineItemChangeEvent, OpportunityShare, OpportunityStage, OrderChangeEvent, OrderHistory, OrderItemChangeEvent, OrderItemHistory, OrderShare, OrderStatus, Organization, OrgEmailAddressSecurity, OrgWideEmailAddress, OutgoingEmail, OutgoingEmailRelation, PackageLicense, PartnerRole, PartyConsentChangeEvent, PartyConsentHistory, PartyConsentShare, Period, PermissionSet, PermissionSetAssignment, PermissionSetTabSetting, Pricebook2ChangeEvent, Pricebook2History, PricebookEntryChangeEvent, PricebookEntryHistory, PrivacyJobSessionShare, PrivacyObjectSessionShare, PrivacyRTBFRequestHistory, PrivacyRTBFRequestShare, PrivacySessionRecordFailureShare, ProblemChangeEvent, ProblemHistory, ProblemIncidentChangeEvent, ProblemIncidentHistory, ProblemRelatedItemChangeEvent, ProblemRelatedItemHistory, ProblemShare, ProcessDefinition, ProcessExceptionEvent, ProcessExceptionShare, ProcessInstanceChangeEvent, ProcessInstanceStep, ProcessInstanceStepChangeEvent, ProcessNode, Product2ChangeEvent, Product2History, ProductEntitlementTemplate, Profile, ProfileSkillEndorsementHistory, ProfileSkillHistory, ProfileSkillShare, ProfileSkillUserHistory, PromptActionShare, PromptErrorShare, QueueSobject, QuickTextChangeEvent, QuickTextHistory, QuickTextShare, QuickTextUsageShare, RecentlyViewed, RecommendationChangeEvent, RecordActionHistory, RecordAlertHistory, RecordAlertShare, RecordType, ScorecardShare, SellerHistory, SellerShare, ServiceContractChangeEvent, ServiceContractHistory, ServiceContractShare, SetupAuditTrail, SetupEntityAccess, SharingRecordCollectionShare, Site, SiteHistory, SiteRedirectMapping, SocialPersonaHistory, SocialPostChangeEvent, SocialPostHistory, SocialPostShare, SolutionHistory, SolutionStatus, StaticResource, StreamingChannelShare, TableauHostMappingShare, TaskChangeEvent, TaskPriority, TaskStatus, ThreatDetectionFeedback, TimelineObjectDefinitionChangeEvent, TodayGoalShare, Topic, TopicUserEvent, Translation, User, UserAppMenuCustomizationShare, UserChangeEvent, UserDefinedLabelAssignmentShare, UserDefinedLabelShare, UserEmailPreferredPersonShare, UserLicense, UserLogin, UserPackageLicense, UserPreference, UserPrioritizedRecordShare, UserProvisioningRequestShare, UserRole, UserShare, VideoCallChangeEvent, VideoCallParticipantChangeEvent, VideoCallRecordingChangeEvent, VideoCallShare, VisualforceAccessMetrics, VoiceCallChangeEvent, VoiceCallRecordingChangeEvent, VoiceCallShare, Vote, WebLink, WorkAccessShare, WorkBadgeDefinitionHistory, WorkBadgeDefinitionShare, WorkOrderChangeEvent, WorkOrderHistory, WorkOrderLineItemChangeEvent, WorkOrderLineItemHistory, WorkOrderLineItemStatus, WorkOrderShare, WorkOrderStatus, WorkPlanChangeEvent, WorkPlanHistory, WorkPlanShare, WorkPlanTemplateChangeEvent, WorkPlanTemplateEntryChangeEvent, WorkPlanTemplateEntryHistory, WorkPlanTemplateHistory, WorkPlanTemplateShare, WorkStepChangeEvent, WorkStepHistory, WorkStepStatus, WorkStepTemplateChangeEvent, WorkStepTemplateHistory, WorkStepTemplateShare, WorkThanksShare
  ```
+ 다음 ServiceNow 엔터티 또는 필드는 ServiceNow 소스를 사용하는 제로 ETL 통합에 사용할 수 없습니다.

  ```
  ais_acl_overrides, ais_async_genius_result, ais_async_request, ais_connection, ais_genius_result_configuration_parameters, ais_partition_health, ais_partition_health_response, ais_publish_history, ais_relevancy_training_execution, ais_relevancy_training_staging, ais_search_profile_relevancy_model, catalog_draft_entities, clone_log, clone_log0000, clone_log0001, clone_log0002, clone_log0003, clone_log0004, clone_log0005, clone_log0006, clone_log0007, cmdb_ie_context, cmdb_ie_log, cmdb_ie_run, cmdb_ire_partial_payloads_index, cmdb_qb_result_base$par1, cmdb$par1, discovery_log, discovery_log0000, discovery_log0001, discovery_log0002, discovery_log0003, discovery_log0004, discovery_log0005, discovery_log0006, discovery_log0007, ecc_agent_log, entitlement_data, entl_subscription_map, gs_entitlement_plugin_mapping, ih_transaction_exclusion, import_log, import_log0000, import_log0001, import_log0002, import_log0003, import_log0004, import_log0005, import_log0006, import_log0007, jrobin_archive, jrobin_database, jrobin_datasource, jrobin_definition, jrobin_graph, jrobin_graph_line, jrobin_graph_set, jrobin_graph_set_member, jrobin_shard, jrobin_shard_location, license_role_discovery_run, logger_configuration_validation, m2m_analytics_event_logger, m2m_user_consent_info, ml_artifact_object_store, np$sys_gen_ai_filter_sample, np$sys_ui_element, np$sys_ui_list_element, one_api_service_plan_feature_invocation, one_api_service_plan_invocation, open_nlu_predict_log, open_nlu_predict_log0000, open_nlu_predict_log0001, open_nlu_predict_log0002, open_nlu_predict_log0003, open_nlu_predict_log0004, open_nlu_predict_log0005, open_nlu_predict_log0006, open_nlu_predict_log0007, pa_diagnostic_log, pa_diagnostic_log0000, pa_diagnostic_log0001, pa_diagnostic_log0002, pa_diagnostic_log0003, pa_diagnostic_log0004, pa_diagnostic_log0005, pa_diagnostic_log0006, pa_diagnostic_log0007, pa_favorites, pa_job_log_rows, pa_job_log_rows0000, pa_job_log_rows0001, pa_job_log_rows0002, pa_job_log_rows0003, pa_job_log_rows0004, pa_job_log_rows0005, pa_job_log_rows0006, pa_job_log_rows0007, pa_migration_ignored_scores, pa_scores_l1, pa_scores_l2, pa_scores_migration_groups, par_dashboard_conversion_backup, promin_log, promin_log0000, promin_log0001, promin_log0002, promin_log0003, promin_log0004, promin_log0005, promin_log0006, promin_log0007, promin_request_object, proposed_change_verification_log, proposed_change_verification_log0000, proposed_change_verification_log0001, proposed_change_verification_log0002, proposed_change_verification_log0003, proposed_change_verification_log0004, proposed_change_verification_log0005, proposed_change_verification_log0006, proposed_change_verification_log0007, protected_table_log, protected_table_log0000, protected_table_log0001, protected_table_log0002, protected_table_log0003, protected_table_log0004, protected_table_log0005, protected_table_log0006, protected_table_log0007, pwd_history, qb_query_results, scan_log, scan_log0000, scan_log0001, scan_log0002, scan_log0003, scan_log0004, scan_log0005, scan_log0006, scan_log0007, schema_validator_error, sla_repair_log_entry, sla_repair_log_entry0000, sla_repair_log_entry0001, sla_repair_log_entry0002, sla_repair_log_entry0003, sla_repair_log_entry0004, sla_repair_log_entry0005, sla_repair_log_entry0006, sla_repair_log_entry0007, sla_repair_log_message, sla_repair_log_message0000, sla_repair_log_message0001, sla_repair_log_message0002, sla_repair_log_message0003, sla_repair_log_message0004, sla_repair_log_message0005, sla_repair_log_message0006, sla_repair_log_message0007, sn_bm_client_activity, sn_ci_analytics_st_actionable_notifs, sn_ci_analytics_st_conv_completion_by_cat, sn_ci_analytics_st_conv_dynamic_property, sn_ci_analytics_st_conversation, sn_ci_analytics_st_count_by_date, sn_ci_analytics_st_event_occurrence, sn_ci_analytics_st_event_property_value_trend, sn_ci_analytics_st_issue_auto_resolution, sn_ci_analytics_st_no_clicks, sn_ci_analytics_st_no_results, sn_ci_analytics_st_property_summary_by_event, sn_ci_analytics_st_session_count_per_locale, sn_ci_analytics_st_session_duration, sn_ci_analytics_st_spokes_usage, sn_ci_analytics_st_topic_execution_stats, sn_ci_analytics_st_topic_occurrence, sn_ci_analytics_st_trending_content, sn_ci_analytics_st_trending_queries, sn_ci_analytics_st_users, sn_cs_plugin_signatures, sn_cs_telemetry_log, sn_dfc_application, sn_dfc_product, sn_employee_position, sn_entitlement_st_subscription_application_family, sn_entitlement_st_subscription_application_users, sn_hr_sp_st_relevant_for_you, sn_instance_clone_log, sn_instance_clone_log0000, sn_instance_clone_log0001, sn_instance_clone_log0002, sn_instance_clone_log0003, sn_instance_clone_log0004, sn_instance_clone_log0005, sn_instance_clone_log0006, sn_instance_clone_log0007, sn_km_mr_st_kb_knowledge, sn_me_st_topic, sn_rf_conditional_definition, sn_rf_evaluation_type, sn_rf_evaluation_type_input, sn_rf_recommendation_action, sn_rf_recommendation_experience, sn_rf_recommendation_history, sn_rf_recommendation_rule, sn_rf_record_display_configuration, sn_rf_trend_definition, sn_sub_man_st_account_level_entitlement, sn_sub_man_st_gen_ai_metadata, sn_sub_man_st_instance_used_assist_count, sn_sub_man_st_now_assist_creator_instances, sn_sub_man_st_now_assists_aggregate, sn_sub_man_st_subscribed_groups, sn_sub_man_st_subscription_insights, sn_sub_man_st_subscription_license_detail_metric, sn_sub_man_st_unallocated_group_recommendation, sn_sub_man_st_unconfirmed_user_group, sn_wn_user_app_activity, sn_wn_user_content_activity, snc_monitorable_item, snpar_sched_export_v_scheduled_export_visualization, spotlight, spotlight_audit, spotlight_copy_log_row, spotlight_copy_log_row0000, spotlight_copy_log_row0001, spotlight_copy_log_row0002, spotlight_copy_log_row0003, spotlight_copy_log_row0004, spotlight_copy_log_row0005, spotlight_copy_log_row0006, spotlight_copy_log_row0007, spotlight_job_log_row, spotlight_job_log_row0000, spotlight_job_log_row0001, spotlight_job_log_row0002, spotlight_job_log_row0003, spotlight_job_log_row0004, spotlight_job_log_row0005, spotlight_job_log_row0006, spotlight_job_log_row0007, st_dfc_performance_metric, st_license_detail_metric, st_on_call_hour, st_sc_wizard_question, st_sys_catalog_items_and_variable_sets, st_sys_design_system_icon, subscription_instance_stats, svc_container_config, svc_environment_config, svc_layer_config, svc_model_assoc_ci, svc_model_checkpoint_attr, svc_model_obj_cluster, svc_model_obj_constraint, svc_model_obj_deployable, svc_model_obj_element, svc_model_obj_impact, svc_model_obj_impactrule, svc_model_obj_package, svc_model_obj_path, svc_model_obj_relation, svc_model_obj_service, sys_administrative_script_transaction, sys_amb_message, sys_amb_processor, sys_analytics_batch_state, sys_analytics_config, sys_analytics_data_points_error, sys_analytics_event, sys_analytics_logger, sys_analytics_logger_field, sys_app_payload_loader_rule, sys_app_payload_unloader_rule, sys_app_scan_payload, sys_app_scan_variable, sys_app_scan_variable_type, sys_archive_destroy_log, sys_archive_destroy_run, sys_archive_log, sys_archive_run, sys_atf_transaction_log, sys_attachment_doc, sys_attachment_doc_v2, sys_attachment_soft_deleted, sys_audit, sys_audit_relation, sys_auth_policy_api_allowed, sys_aw_registered_scripting_modal, sys_cache_flush, sys_data_egress_source, sys_dm_delete_count, sys_export_set_log, sys_export_set_log0000, sys_export_set_log0001, sys_export_set_log0002, sys_export_set_log0003, sys_export_set_log0004, sys_export_set_log0005, sys_export_set_log0006, sys_export_set_log0007, sys_flow_compiled_flow, sys_flow_compiled_flow_chunk, sys_flow_context_chunk, sys_flow_context_chunk_archive, sys_flow_context_inputs_chunk, sys_flow_execution_history, sys_flow_log, sys_flow_log0000, sys_flow_log0001, sys_flow_log0002, sys_flow_log0003, sys_flow_plan_context_binding, sys_flow_report_doc, sys_flow_report_doc_chunk, sys_flow_report_doc_chunk_archive, sys_flow_runtime_state_chunk, sys_flow_runtime_value_chunk, sys_flow_subflow_plan_chunk, sys_flow_trigger_plan_chunk, sys_flow_val_listener, sys_flow_value, sys_flow_value_chunk, sys_gen_ai_config_example, sys_gen_ai_feature_mapping, sys_gen_ai_strategy_mapping, sys_gen_ai_usage_log, sys_generative_ai_capability_definition, sys_generative_ai_log, sys_generative_ai_response_validator, sys_generative_ai_validator, sys_geo_routing, sys_geo_routing_config, sys_hop_token, sys_hub_action_plan_chunk, sys_hub_snapshot_chunk, sys_journal_field, sys_journal_field_edit, sys_json_chunk, sys_kaa_policy, sys_kaa_subidentity_assertion, sys_kaa_user_policy_mapping, sys_mapplication, sys_mass_encryption_job, sys_notification_execution_log, sys_notification_execution_log0000, sys_notification_execution_log0001, sys_notification_execution_log0002, sys_notification_execution_log0003, sys_notification_execution_log0004, sys_notification_execution_log0005, sys_notification_execution_log0006, sys_notification_execution_log0007, sys_nowmq_message, sys_nowmq_provider_param_definition, sys_orchestrator_action, sys_pd_asset_configuration, sys_pd_context_chunk, sys_pd_context_log, sys_pd_snapshot_chunk, sys_pd_trigger_license, sys_processing_framework_job, sys_query_index_hint, sys_query_rewrite, sys_query_string_log, sys_replication_queue, sys_replication_queue0, sys_replication_queue1, sys_replication_queue2, sys_replication_queue3, sys_replication_queue4, sys_replication_queue5, sys_replication_queue6, sys_replication_queue7, sys_request_performance, sys_rollback_blacklisted, sys_rollback_conflict, sys_rollback_incremental, sys_rollback_log, sys_rollback_log0000, sys_rollback_log0001, sys_rollback_log0002, sys_rollback_log0003, sys_rollback_log0004, sys_rollback_log0005, sys_rollback_log0006, sys_rollback_log0007, sys_rollback_run, sys_rollback_schema_change, sys_rollback_schema_conflict, sys_rollback_sequence, sys_scheduler_assignment, sys_scheduler_memory_pressure_job_log, sys_script_adapter_rule, sys_script_batch_adapter_rule, sys_search_source_filter, sys_service_authentication, sys_signing_job, sys_suggestion_reader, sys_sync_history_review, sys_trend, sys_unreferenced_preview, sys_unreferenced_record_rule, sys_upgrade_manifest, sys_upgrade_state, sys_ux_asset_cache_buster, sys_ux_lib_component_prop, sys_ux_lib_presource, sys_ux_page_action, sys_ux_page_action_binding, sysevent_queue_runtime, syslog, syslog_app_scope0000, syslog_app_scope0001, syslog_app_scope0002, syslog_app_scope0003, syslog_app_scope0004, syslog_app_scope0005, syslog_app_scope0006, syslog_app_scope0007, syslog_email0000, syslog_email0001, syslog_email0002, syslog_email0003, syslog_email0004, syslog_email0005, syslog_email0006, syslog_email0007, syslog_transaction, syslog_transaction0000, syslog_transaction0001, syslog_transaction0002, syslog_transaction0003, syslog_transaction0004, syslog_transaction0005, syslog_transaction0006, syslog_transaction0007, syslog0000, syslog0001, syslog0002, syslog0003, syslog0004, syslog0005, syslog0006, syslog0007, ts_attachment, ts_c_1_0, ts_c_1_1, ts_c_1_2, ts_c_1_3, ts_c_1_4, ts_c_1_5, ts_c_1_6, ts_c_1_7, ts_c_1_8, ts_c_1_9, ts_c_10_0, ts_c_10_1, ts_c_10_2, ts_c_10_3, ts_c_10_4, ts_c_10_5, ts_c_10_6, ts_c_10_7, ts_c_10_8, ts_c_10_9, ts_c_11_0, ts_c_11_1, ts_c_11_2, ts_c_11_3, ts_c_11_4, ts_c_11_5, ts_c_11_6, ts_c_11_7, ts_c_11_8, ts_c_11_9, ts_c_2_0, ts_c_2_1, ts_c_2_2, ts_c_2_3, ts_c_2_4, ts_c_2_5, ts_c_2_6, ts_c_2_7, ts_c_2_8, ts_c_2_9, ts_c_3_0, ts_c_3_1, ts_c_3_2, ts_c_3_3, ts_c_3_4, ts_c_3_5, ts_c_3_6, ts_c_3_7, ts_c_3_8, ts_c_3_9, ts_c_39_0, ts_c_39_1, ts_c_39_2, ts_c_39_3, ts_c_39_4, ts_c_39_5, ts_c_39_6, ts_c_39_7, ts_c_39_8, ts_c_39_9, ts_c_40_0, ts_c_40_1, ts_c_40_2, ts_c_40_3, ts_c_40_4, ts_c_40_5, ts_c_40_6, ts_c_40_7, ts_c_40_8, ts_c_40_9, ts_c_41_0, ts_c_41_1, ts_c_41_2, ts_c_41_3, ts_c_41_4, ts_c_41_5, ts_c_41_6, ts_c_41_7, ts_c_41_8, ts_c_41_9, ts_c_42_0, ts_c_42_1, ts_c_42_2, ts_c_42_3, ts_c_42_4, ts_c_42_5, ts_c_42_6, ts_c_42_7, ts_c_42_8, ts_c_42_9, ts_c_43_0, ts_c_43_1, ts_c_43_2, ts_c_43_3, ts_c_43_4, ts_c_43_5, ts_c_43_6, ts_c_43_7, ts_c_43_8, ts_c_43_9, ts_c_44_0, ts_c_44_1, ts_c_44_2, ts_c_44_3, ts_c_44_4, ts_c_44_5, ts_c_44_6, ts_c_44_7, ts_c_44_8, ts_c_44_9, ts_c_45_0, ts_c_45_1, ts_c_45_2, ts_c_45_3, ts_c_45_4, ts_c_45_5, ts_c_45_6, ts_c_45_7, ts_c_45_8, ts_c_45_9, ts_c_6_0, ts_c_6_1, ts_c_6_2, ts_c_6_3, ts_c_6_4, ts_c_6_5, ts_c_6_6, ts_c_6_7, ts_c_6_8, ts_c_6_9, ts_c_7_0, ts_c_7_1, ts_c_7_2, ts_c_7_3, ts_c_7_4, ts_c_7_5, ts_c_7_6, ts_c_7_7, ts_c_7_8, ts_c_7_9, ts_c_8_0, ts_c_8_1, ts_c_8_2, ts_c_8_3, ts_c_8_4, ts_c_8_5, ts_c_8_6, ts_c_8_7, ts_c_8_8, ts_c_8_9, ts_c_attachment, ts_chain, ts_deleted_doc, ts_document, ts_field, ts_index_stats, ts_phrase, ts_search_stats, ts_v4_attachment, ts_word, ua_app_metadata, ua_audit_stats, ua_extra_page, ua_monitor_property, ua_monitor_property_audit, ua_shared_service, ua_sn_table_inventory, ua_sp_known_bot, ua_upload_log, v_ais_result_improvement_rule_condition_builder_values, v_cluster_nodes, v_cxs_search_resource, v_db_index, v_db_trigger, v_file_load_order, v_interaction_context, v_iostats, v_mysql_proclist, v_mysql_status, v_mysql_variables, v_on_call_report_cache, v_pa_par_combined_dashboard, v_pd_activity_condition_to_run, v_pd_activity_start_rule_with_condition, v_pd_lane_condition_to_run, v_sql_debug, v_st_kb_category, v_st_kb_most_viewed, v_st_kb_recently_viewed, v_st_km_genai_mra_similar_task, v_st_popular_item, v_st_recent_item, v_st_sc_cat_item, v_st_sc_catalog, v_st_sc_category, validator_run_summary, vtb_card_history, wf_log, wf_log0000, wf_log0001, wf_log0002, wf_log0003, wf_log0004, wf_log0005, wf_log0006, wf_log0007, spotlight_criteria, pa_snapshots, pa_widget_indicators, pa_widgets, sn_cim_register, global, gsw_change_log, gsw_content, gsw_content_group, gsw_content_information, gsw_status_of_content, multi_factor_browser_fingerprint, multi_factor_criteria, pa_filters, password_policy, plan_execution, plan_mysql, plan_oracle, plan_postgres, sc_rest_api_without_access_policy, sn_actsub_activity, sn_actsub_activity_fanout, sn_actsub_activity_stream, sn_actsub_activity_type, sn_actsub_atype_attributes, sn_actsub_atype_notif_pref, sn_actsub_module, sn_actsub_notif_object, sn_actsub_subobject_stream, sn_actsub_subscribable_object, sn_actsub_subscription_notif_pref, sn_actsub_user_stream, sn_appclient_store_outbound_http_quota, sn_appcreator_app_template, sn_critical_update, sn_docker_spoke_images, sn_employee_app, sn_employee_app_access, sn_employee_app_access_criteria, sn_entitlement_genai_assist_counts, sn_entitlement_genai_creator_user_counts, sn_entitlement_genai_creator_users, sn_mif_instance, sn_mif_sync_data, sn_mif_sync_status, sn_mif_table_registration, sn_mif_trust_config, sn_vsc_best_practice_configurations, sn_vsc_best_practice_goals, sn_vsc_changed_hardening_settings, sn_vsc_changed_scan_findings, sn_vsc_check_security_area, sn_vsc_elevation_event, sn_vsc_event, sn_vsc_export_event, sn_vsc_export_setting, sn_vsc_harc_compliance_status_lookup, sn_vsc_hardening_compliance_scores, sn_vsc_impersonation_event, sn_vsc_instance_hardening_settings, sn_vsc_login_event, sn_vsc_scan_comparisons, sn_vsc_scan_summary, sn_vsc_security_check_categories, sn_vsc_security_check_configurations, sn_vsc_security_configuration_groups, sn_vsc_security_privacy_capabilities, sn_vsc_updated_settings, sn_vsc_user_comparisons, sys_app_hash_inventory, sys_coalesce_strategy_deferred, sys_flow_secure_data, sys_formula_function, sys_geocoding_request, sys_global_file_hash, sys_import_set_row, sys_index, sys_index_explain, sys_installation_schedule, sys_installation_schedule_item, sys_offline_app, sys_package, sys_package_dependency_item, sys_package_dependency_m2m, sys_plugins, sys_querystat, sys_reap_package, sys_scoped_plugin, sys_stage_storage_alias, sys_storage_alias, sys_storage_table_alias, sys_store_app, sys_table_partition, sys_upgrade_history_log, sys_user_public_credential, sys_webauthn_authentication_request, sys_webauthn_registration_request, syslog_app_scope, syslog_email, syslog_page_timing, ua_instance_state_config, v_expression_cache, v_private_cache, v_shared_cache, sys_amb_message0002, sys_amb_message0004, sys_amb_message0005, sys_metadata, v_par_unified_report_viz
  ```