메뉴
Amazon Simple Storage Service
개발자 안내서 (API 버전 2006-03-01)

보관된 객체의 쿼리

select 유형의 POST Object restore로 간단한 구조화 질의 언어(SQL) 문을 Amazon S3이 Amazon Glacier에 보관한 데이터에서 직접 사용하여 필터링 작업을 수행할 수 있습니다. 보관된 객체에 대해 SQL 쿼리를 제공하면 select가 쿼리를 실행하고 출력 결과를 S3 버킷에 작성합니다. 전체 객체를 Amazon S3로 복원할 필요 없이 Amazon Glacier에 저장된 데이터에서 쿼리 및 사용자 지정 분석을 실행할 수 있습니다.

선택 쿼리를 수행할 때 Amazon Glacier는 세 가지 데이터 액세스 계층(신속, 표준, 벌크)을 제공합니다. 이 계층들은 데이터 액세스 시간과 비용이 서로 다르므로 데이터를 얼마나 빨리 사용하기 원하는지에 따라 선택하면 됩니다. 자세한 내용은 데이터 액세스 계층 단원을 참조하십시오.

AWS SDK, Amazon Glacier REST API 및 AWS Command Line Interface(AWS CLI)와 함께 select 유형의 복원을 사용할 수 있습니다.

Select 요구 사항 및 제한

다음은 Select를 사용하기 위한 요구 사항입니다.

  • Select에 의해 쿼리되는 아카이브 객체는 압축되지 않은, 쉼표로 분리된 값(CSV) 형식이어야 합니다.

  • 출력을 위한 S3 버킷. Amazon Glacier Select 작업 시작에 사용하는 AWS 계정에는 S3 버킷에 대한 쓰기 권한이 있어야 합니다. Amazon S3 버킷은 쿼리되는 아카이브 객체를 포함하는 버킷과 동일한 AWS 리전에 있어야 합니다.

  • 요청하는 AWS 계정에 s3:RestoreObjects3:GetObject 작업을 수행할 수 있는 권한이 있어야 합니다. 이러한 권한에 대한 자세한 내용은 버킷 하위 리소스 작업에 관련된 권한 단원을 참조하십시오.

  • 아카이브가 SSE-C 또는 클라이언트측 암호화를 사용하여 암호화되지 않아야 합니다.

Select를 사용할 때는 다음 제한이 적용됩니다.

  • Select가 처리할 수 있는 레코드의 수에는 제한이 없습니다. 입력 또는 출력 레코드는 1MB를 초과해서는 안 되며, 초과할 경우 쿼리가 실패합니다. 레코드당 1,048,576열의 제한이 있습니다.

  • 최종 결과의 크기에는 제한이 없습니다. 다만 결과는 여러 파트로 나뉩니다.

  • SQL 표현식은 128KB로 제한됩니다.

Select를 사용하여 데이터를 쿼리하려면 어떻게 해야 합니까?

Select를 사용하면 SQL 명령으로 압축되지 않은 암호화 CSV 형식의 Amazon Glacier 아카이브 객체를 쿼리할 수 있습니다. 이러한 제한이 적용되므로 Amazon Glacier에 있는 텍스트 기반 데이터에서 간단한 쿼리 작업을 수행할 수 있습니다. 예를 들어, 보관된 텍스트 파일 집합 중에서 특정 이름이나 ID를 찾을 수 있습니다.

Amazon Glacier 데이터를 쿼리하려면 POST Object restore 작업을 사용하여 select 요청을 생성하십시오. select 요청을 수행할 때 SQL 표현식, 쿼리할 아카이브, 결과를 저장할 위치를 제공합니다.

다음 예제 표현식은 POST Object restore에 지정된 아카이브 객체로부터 모든 레코드를 반환합니다.

SELECT * FROM object

Amazon Glacier Select는 ANSI SQL 언어 하위 집합을 지원합니다. SELECT, FROMWHERE 같은 일반적인 필터링 SQL 절을 지원하지만 SUM, COUNT, GROUP BY, JOINS, DISTINCT, UNION, ORDER BYLIMIT는 지원하지 않습니다. SQL 지원에 대한 자세한 내용은 Amazon Simple Storage Service 개발자 가이드Amazon S3 Select 및 Amazon Glacier Select에 대한 SQL 참조 단원을 참조하십시오.

Select 출력

Select 작업을 시작할 때 선택 쿼리 결과의 출력 위치를 정의해야 합니다. 이 위치는 쿼리되는 보관된 객체가 포함된 버킷과 동일한 AWS 리전의 Amazon S3 버킷이어야 합니다. 작업을 시작하는 AWS 계정은 S3 버킷에 대한 쓰기 권한이 있어야 합니다.

Amazon S3에 저장되는 출력 객체의 Amazon S3 스토리지 클래스와 암호화를 지정할 수 있습니다. Select는 SSE-KMS 및 SSE-S3 암호화를 지원합니다. Select는 SSE-C 및 클라이언트 측 암호화를 지원하지 않습니다. Amazon S3 스토리지 클래스 및 암호화에 대한 자세한 내용은 스토리지 클래스서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시오.

Amazon Glacier Select 결과는 POST Object restore에서 지정된 출력 위치에 제공된 접두사를 사용하여 S3 버킷에 저장됩니다. 이 정보를 가지고 select는 작업 ID를 참조하는 고유 접두사를 생성합니다. (접두사는 공통 문자열로 객체 이름을 시작함으로써 Amazon S3 객체를 그룹화하는 데 사용됩니다.) 이 고유한 접두사 아래에 새로운 접두사 2개가 생성됩니다(결과를 위한 접두사 results와 로그 및 오류를 위한 접두사 errors). 작업이 완료되면 모든 결과의 위치가 포함된 결과 매니페스트가 작성됩니다.

출력 위치에 작성되는 job.txt라는 자리 표시자 파일도 있습니다. 이 파일은 작성된 후 업데이트되지 않습니다. 자리 표시자 파일은 다음에 사용됩니다.

  • 쓰기 권한과 SQL 구문 오류 대부분 동시 확인.

  • 원할 때는 언제나 쉽게 참조할 수 있는 select 요청에 대한 정적 출력 제공.

예를 들어, 결과의 출력 위치가 s3://example-bucket/my-prefix로 지정된 Select 요청을 하고, 작업 응답이 examplekne1209ualkdjh812elkassdu9012e로 작업 ID를 반환한다고 가정해 보겠습니다. 선택 작업이 종료된 후 버킷에서 다음과 같은 Amazon S3 객체를 볼 수 있습니다.

s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/job.txt s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/abc s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/def s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/ghi s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/result_manifest.txt

선택 쿼리 결과는 여러 파트로 나뉩니다. 이 예제에서 Select는 출력 위치를 설정할 때 지정한 접두사를 사용하고, 작업 ID와 results 접두사를 추가합니다. 그런 다음 결과를 세 파트로 작성합니다(객체 이름이 abc, def, ghi로 끝납니다). 결과 매니페스트에는 프로그래밍 방식의 가져오기를 허용하기 위해 3개 파일이 모두 포함됩니다. 작업이 오류와 함께 실패하면 오류 접두사 아래 파일이 표시되고 error_manifest.txt가 생성됩니다.

result_manifest.txt 파일이 존재하면서 error_manifest.txt가 없다면 작업이 성공적으로 완료된 것입니다. 결과가 어떻게 정렬되는지는 보장할 수 없습니다.

참고

라고도 하는 Amazon S3 객체 이름의 길이는 1,024바이트를 넘을 수 없습니다. Amazon Glacier select에서는 접두사를 위해 128바이트가 예약되어 있습니다. Amazon S3 위치 경로의 길이는 512바이트를 넘을 수 없습니다. 길이가 512바이트를 넘는 요청은 예외를 반환하며, 수락되지 않습니다.

오류 처리

Select는 두 가지 오류를 알립니다. 첫 번째 오류 집합은 사용자가 POST Object restore에서 쿼리를 제출하는 것과 동시에 사용자에게 전송됩니다. 이러한 오류는 HTTP 응답의 일부로 전송됩니다. 또 다른 오류 집합은 쿼리가 성공적으로 수락된 후에 발생할 수 있지만 쿼리 실행 중에 발생합니다. 이 경우, 오류는 errors 접두사 아래 지정된 출력 위치에 작성됩니다.

Select는 오류 발생 후 쿼리 실행을 중지합니다. 쿼리를 성공적으로 실행하려면 모든 오류를 해결해야 합니다. 로그를 확인하여 실패를 초래한 레코드를 식별할 수 있습니다.

쿼리가 여러 컴퓨터 노드에서 병렬로 실행되므로 오류는 순서대로 나열되지 않습니다. 예를 들어, 쿼리가 행 6,234에서의 오류와 함께 실패하는 경우, 행 6,234 앞의 모든 행이 성공적으로 처리되었음을 뜻하지 않습니다. 다음 쿼리 실행에서 다른 행의 오류가 표시될 수도 있습니다.

데이터 액세스 계층

보관된 객체를 쿼리할 때 다음 데이터 액세스 계층 중 하나를 지정할 수 있습니다.

  • Expedited – 아카이브의 하위 집합에 대한 긴급 요청이 간헐적으로 필요한 경우, 신속 계층을 통해 빠르게 데이터에 액세스할 수 있습니다. 매우 큰 보관된 객체(250MB 이상)를 제외한 모든 경우, Expedited 가져오기를 사용하여 액세스된 데이터는 일반적으로 1~5분 안에 사용할 수 있게 됩니다. Expedited 데이터 액세스는 온디맨드와 프로비저닝의 두 가지 유형이 있습니다. 온디맨드 요청은 EC2 온디맨드 인스턴스와 유사하고, 대부분 경우에 이용할 수 있습니다. 프로비저닝 요청은 필요한 경우에 이용이 보장됩니다. 자세한 내용은 프로비저닝된 용량 단원을 참조하십시오.

  • Standard – 몇 시간 내에 보관된 객체 중 어느 것에든 액세스할 수 있습니다. 표준 검색은 보통 3-5시간 안에 완료됩니다. 이 값이 기본 계층입니다.

  • Bulk – Amazon Glacier에서 가장 낮은 비용의 데이터 액세스 옵션으로서 페타바이트 단위의 대용량 데이터도 저렴한 비용으로 하루 내에 가져올 수 있습니다. Bulk는 보통 5-12시간 안에 액세스가 종료됩니다.

Expedited, Standard, 또는 Bulk 요청을 실행하려면, POST 객체 복원 REST API 요청의 Tier 요청 요소를 사용자가 원하는 옵션 또는 AWS CLI 또는 AWS SDK의 동등한 옵션으로 설정합니다. Expedited 액세스의 경우 이를 온디맨드 또는 프로비저닝으로 지정할 필요가 없습니다. 프로비저닝된 용량을 구매하였다면, 사용자의 프로비저닝된 용량을 통해 모든 Expedited 검색이 자동으로 수행됩니다. 계층 요금에 대한 자세한 내용은 Amazon Glacier 요금을 참조하십시오.

프로비저닝된 용량

프로비저닝된 용량을 통해 필요할 때 신속 검색에 대한 검색 용량이 보장됩니다. 각 용량 단위로 5분마다 신속 검색 3회를 수행할 수 있고, 최대 150MB/s의 검색 처리량이 제공됩니다.

워크로드에 몇 분 내로 데이터의 하위 집합에 대한 매우 안전하고 예측 가능한 액세스가 필요한 경우 프로비저닝된 검색 용량을 구매해야 합니다. 프로비저닝된 검색 용량이 없더라도 비정상적으로 수요가 높지 않은 경우를 제외하면 Expedited 검색은 허용됩니다. 하지만 모든 상황에서 Expedited 검색에 액세스해야 하는 경우 프로비저닝된 검색 용량을 구매해야 합니다. Amazon S3 콘솔, Amazon Glacier 콘솔, 프로비저닝된 용량 구매 REST API, AWS SDK 또는 AWS CLI를 사용하여 프로비저닝된 용량을 구매할 수 있습니다. 프로비저닝된 용량의 요금에 대한 자세한 내용은 Amazon Glacier 요금을 참조하십시오.

추가 정보