Amazon S3에서 COPY
1개 이상의 S3 버킷에 위치한 파일에서 데이터를 로드하려면 FROM 절을 사용하여 COPY가 Amazon S3의 파일을 찾는 방법을 지정합니다. 데이터 파일의 객체 경로를 FROM 절의 일부로 제공하거나 Amazon S3 객체 경로 목록이 포함된 매니페스트 파일의 위치를 제공할 수 있습니다. Amazon S3에서 COPY는 HTTPS 연결을 사용합니다. S3 IP 범위가 허용 목록에 추가되었는지 확인합니다. 필요한 S3 IP 범위에 대한 자세한 내용은 네트워크 격리를 참조하세요.
중요
데이터 파일이 위치한 Amazon S3 버킷이 클러스터와 동일한 AWS 리전에 속하지 않을 때는 REGION 파라미터를 사용하여 데이터가 위치한 리전을 지정해야 합니다.
구문
FROM { 's3://objectpath' | 's3://manifest_file' } authorization | MANIFEST | ENCRYPTED | REGION [AS] 'aws-region' | optional-parameters
예시
다음은 객체 경로를 사용하여 Amazon S3에서 데이터를 로드하는 예입니다.
copy customer from 's3://amzn-s3-demo-bucket/customer' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
다음은 매니페스트 파일을 사용하여 Amazon S3에서 데이터를 로드하는 예입니다.
copy customer from 's3://amzn-s3-demo-bucket/cust.manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;
파라미터
- FROM
-
로드할 데이터 원본입니다. Amazon S3 파일의 인코딩에 대한 자세한 내용은 데이터 변환 파라미터 섹션을 참조하세요.
- 's3://copy_from_s3_objectpath'
-
데이터가 포함된 Amazon S3 객체의 경로를 지정합니다(예:
's3://amzn-s3-demo-bucket/custdata.txt'
). s3://copy_from_s3_objectpath 파라미터는 단일 파일, 또는 동일한 키 접두사를 갖는 객체 및 폴더 집합을 참조할 수 있습니다. 예를 들어custdata.txt
는custdata.txt
,custdata.txt.1
,custdata.txt.2
,custdata.txt.bak
등 다수의 물리적 파일을 참조하는 키 접두사입니다. 키 접두사는 다수의 폴더도 참조할 수 있습니다. 예를 들어's3://amzn-s3-demo-bucket/custfolder'
는custfolder
,custfolder_1
,custfolder_2
폴더 등을 참조합니다. 키 접두사가 다수의 폴더를 참조하는 경우 해당 폴더의 모든 파일이 로드됩니다. 키 접두사가 폴더는 물론 파일과도 일치하는 경우(예:custfolder.log
) COPY가 파일도 로드하려고 합니다. 이처럼 키 접두사로 인해 COPY 명령이 불필요한 파일까지 로드하려고 할 때는 매니페스트 파일을 사용하십시오. 자세한 내용은 다음 자료를 참조하십시오.copy_from_s3_manifest_file중요
데이터 파일이 위치한 S3 버킷이 클러스터와 동일한 AWS 리전에 속하지 않을 때는 REGION 파라미터를 사용하여 데이터가 위치한 리전을 지정해야 합니다.
자세한 내용은 Amazon S3에서 데이터 로드 단원을 참조하십시오.
- 's3://copy_from_s3_manifest_file'
-
로드할 데이터 파일을 나열하는 매니페스트 파일에 Amazon S3 객체 키를 지정합니다. 's3://copy_from_s3_manifest_file' 인수는 단일 파일을 명시적으로 참조해야 합니다(예:
's3://amzn-s3-demo-bucket/manifest.txt'
). 키 접두사를 참조할 수는 없습니다.매니페스트란 Amazon S3에서 로드할 개별 파일의 URL을 JSON 형식으로 나열한 텍스트 파일을 말합니다. URL에는 파일의 버킷 이름과 전체 객체 경로가 포함됩니다. 매니페스트에서 지정되는 파일이 서로 다른 버킷에 있을 수 있지만 모든 버킷은 Amazon Redshift 클러스터와 동일한 AWS 리전에 속해야 합니다. 파일이 두 번 나열되면 마찬가지로 두 번 로드됩니다. 다음은 3개의 파일을 로드하는 매니페스트의 JSON 형식을 나타낸 예입니다.
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/custdata.2","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/custdata.1","mandatory":false} ] }
큰따옴표가 필요하며, 기울어진 따옴표나 "스마트" 따옴표가 아닌 단순한 따옴표(0x22)여야 합니다. 매니페스트의 각 항목은 옵션으로
mandatory
플래그를 추가할 수 있습니다.mandatory
가true
로 설정된 경우 해당 항목에서 파일을 찾지 못하면 COPY 명령이 종료되고, 그렇지 않으면 COPY 명령이 계속 됩니다.mandatory
의 기본값은false
입니다.ORC 또는 Parquet 형식의 데이터 파일에서 불러올 경우 다음 예에 나와 있는 것처럼
meta
필드가 필요합니다.{ "entries":[ { "url":"s3://amzn-s3-demo-bucket1/orc/2013-10-04-custdata", "mandatory":true, "meta":{ "content_length":99 } }, { "url":"s3://amzn-s3-demo-bucket2/orc/2013-10-05-custdata", "mandatory":true, "meta":{ "content_length":99 } } ] }
매니페스트 파일에서도 ENCRYPTED, GZIP, LZOP, BZIP2 또는 ZSTD 옵션이 지정되지만 암호화하거나 압축해서는 안 됩니다. 지정된 매니페스트 파일을 찾지 못하거나, 혹은 매니페스트 파일의 형식이 잘못되면 COPY 명령이 오류를 반환합니다.
매니페스트 파일을 사용할 때는 COPY 명령에서 MANIFEST 파라미터를 지정해야 합니다. MANIFEST 파라미터를 지정하지 않으면 COPY가 FROM에서 지정한 파일이 데이터 파일인 것으로 간주합니다.
자세한 내용은 Amazon S3에서 데이터 로드 단원을 참조하십시오.
- 권한 부여
-
COPY 명령을 실행하려면 Amazon S3, Amazon EMR, Amazon DynamoDB, Amazon EC2의 데이터를 포함해 다른 AWS 리소스의 데이터에도 액세스할 수 있도록 권한 부여가 필요합니다. 권한은 클러스터에 연결되는 AWS Identity and Access Management(IAM) 역할을 참조하거나(역할 기반 액세스 제어) 사용자의 액세스 자격 증명을 입력하면(키 기반 액세스 제어) 부여할 수 있습니다. 보안과 유연성을 높이려면 IAM 역할 기반 액세스 제어를 권장합니다. 자세한 내용은 권한 부여 파라미터 단원을 참조하십시오.
- MANIFEST
-
Amazon S3에서 로드할 데이터 파일을 식별할 때 매니페스트를 사용하도록 지정합니다. MANIFEST 파라미터를 사용하는 경우에는 COPY 명령이 's3://copy_from_s3_manifest_file'에서 참조하는 매니페스트 파일에 나열된 파일에서 데이터를 로드합니다. 매니페스트 파일을 찾지 못하거나, 혹은 잘못된 형식일 때는 COPY가 중단됩니다. 자세한 내용은 매니페스트를 사용하여 데이터 파일 지정 단원을 참조하십시오.
- Encrypted
-
고객 관리형 키를 사용하는 클라이언트 측 암호화로 Amazon S3의 입력 파일을 암호화하도록 지정하는 절입니다. 자세한 내용은 Amazon S3에서 암호화된 데이터 파일 로드 단원을 참조하십시오. 입력 파일이 Amazon S3 서버 측 암호화(SSE-KMS 또는 SSE-S3)로 암호화되어 있는 경우에는 ENCRYPTED를 지정하지 마십시오. COPY가 자동으로 서버 측 암호화 파일을 읽습니다.
ENCRYPTED 파라미터를 지정하는 경우에는 MASTER_SYMMETRIC_KEY 파라미터도 지정하거나, 혹은
master_symmetric_key
값을 CREDENTIALS 문자열에 추가해야 합니다.암호화된 파일이 압축 형식일 때는 GZIP, LZOP, BZIP2 또는 ZSTD 파라미터를 추가하십시오.
ENCRYPTED 옵션을 지정하더라도 매니페스트 파일과 JSONPaths 파일을 암호화해서는 안 됩니다.
- MASTER_SYMMETRIC_KEY 'root_key'
-
Amazon S3에서 데이터 파일을 암호화할 때 사용되는 루트 대칭 키입니다. MASTER_SYMMETRIC_KEY를 지정하면 ENCRYPTED 파라미터도 지정해야 합니다. MASTER_SYMMETRIC_KEY를 CREDENTIALS 파라미터와 함께 사용할 수는 없습니다. 자세한 내용은 Amazon S3에서 암호화된 데이터 파일 로드 단원을 참조하십시오.
암호화된 파일이 압축 형식일 때는 GZIP, LZOP, BZIP2 또는 ZSTD 파라미터를 추가하십시오.
- REGION [AS] 'aws-region'
-
원본 데이터가 위치한 AWS 리전을 지정합니다. 데이터가 위치한 AWS 리소스가 Amazon Redshift 클러스터와 동일한 리전에 속하지 않을 때는 Amazon S3 버킷 또는 DynamoDB 테이블에서 COPY를 실행하려면 REGION이 필요합니다.
aws_region의 값은 Amazon Redshift 리전 및 엔드포인트 표에 나와 있는 리전과 일치해야 합니다.
REGION 파라미터를 지정하면 매니페스트 파일 또는 여러 Amazon S3 버킷을 포함한 모든 리소스가 지정한 리전에 위치해야 합니다.
참고
리전 간 데이터를 전송하면 데이터가 있는 Amazon S3 버킷 또는 DynamoDB 테이블을 대상으로 추가 요금이 발생합니다. 요금에 대한 자세한 내용은 Amazon S3 요금
페이지의 Amazon S3에서 다른 AWS 리전으로 데이터 전송과 Amazon DynamoDB 요금 페이지의 데이터 전송을 참조하세요. 기본적으로 COPY의 경우 데이터가 Amazon Redshift 클러스터와 동일한 리전에 위치한다고 가정합니다.
선택적 파라미터
Amazon S3에서 COPY를 지원할 때는 다음 파라미터를 옵션으로 지정할 수 있습니다.
지원되지 않는 파라미터
Amazon S3에서 COPY를 지원할 때는 다음 파라미터를 사용할 수 없습니다.
-
SSH
-
READRATIO