Amazon Athena Timestream 커넥터 - Amazon Athena

Amazon Athena Timestream 커넥터

Amazon Athena Timestream 커넥터를 사용하면 Amazon Athena가 Amazon Timestream과 통신할 수 있으므로 Amazon Athena를 통해 시계열 데이터에 액세스할 수 있습니다. 선택에 따라 AWS Glue Data Catalog를 보충 메타데이터의 소스로 사용할 수 있습니다.

Amazon Timestream은 빠르고 확장 가능한 완전 관리형 특수 목적 시계열 데이터베이스로, 매일 수조 개의 시계열 데이터 포인트를 쉽게 저장하고 분석할 수 있습니다. Timestream은 사용자 정의 정책에 따라 최근 데이터는 메모리에 보관하고 기록 데이터는 비용 최적화 스토리지 계층으로 이동하여 시계열 데이터의 수명주기를 관리하는 데 드는 시간과 비용을 절약합니다.

계정에서 Lake Formation을 활성화한 경우 AWS Serverless Application Repository에 배포한 Athena 페더레이션형 Lambda 커넥터의 IAM 역할은 Lake Formation에서 AWS Glue Data Catalog에 대한 읽기 액세스 권한을 가지고 있어야 합니다.

사전 조건

파라미터

이 섹션의 Lambda 환경 변수를 사용하여 Timestream 커넥터를 구성합니다.

  • spill_bucket – Lambda 함수 제한을 초과하는 데이터에 대한 Amazon S3 버킷을 지정합니다.

  • spill_prefix – (선택 사항) 기본값은 athena-federation-spill이라는 지정된 spill_bucket의 하위 폴더입니다. 미리 정해진 일 수 또는 시간보다 오래된 유출을 삭제하려면 이 위치에서 Amazon S3 스토리지 수명 주기를 구성하는 것이 좋습니다.

  • spill_put_request_headers – (선택 사항) 유출에 사용되는 Amazon S3 putObject 요청에 대한 요청 헤더 및 값의 JSON 인코딩 맵입니다(예: {"x-amz-server-side-encryption" : "AES256"}). 다른 가능한 헤더를 알아보려면 Amazon Simple Storage Service API Reference(Amazon Simple Storage Service API 참조)의 PutObject를 참조하세요.

  • kms_key_id – (선택 사항) 기본적으로 Amazon S3로 유출된 모든 데이터는 AES-GCM 인증 암호화 모드와 임의로 생성된 키를 사용하여 암호화됩니다. Lambda 함수가 a7e63k4b-8loc-40db-a2a1-4d0en2cd8331과 같이 KMS에서 생성된 더 강력한 암호화 키를 사용하도록 하려면 KMS 키 ID를 지정합니다.

  • disable_spill_encryption – (선택 사항) True로 설정하면 유출 암호화가 비활성화됩니다. S3로 유출되는 데이터가 AES-GCM을 사용하여 암호화되도록 기본값은 False입니다(임의로 생성된 키 또는 KMS를 사용하여 키 생성). 유출 암호화를 비활성화하면 특히 유출 위치가 서버 측 암호화를 사용하는 경우 성능이 향상될 수 있습니다.

  • glue_catalog – (선택 사항) 이 옵션을 사용하여 크로스 계정 AWS Glue 카탈로그를 지정합니다. 기본적으로 커넥터는 자체 AWS Glue 계정에서 메타데이터를 가져오려고 시도합니다.

AWS Glue에서 데이터베이스 및 테이블 설정

필요에 따라 AWS Glue Data Catalog를 보충 메타데이터의 소스로 사용할 수 있습니다. Timestream에서 사용할 AWS Glue 테이블을 활성화하려면 보충 메타데이터를 제공할 Timestream 데이터베이스 및 테이블과 이름이 일치하는 AWS Glue 데이터베이스 및 테이블이 있어야 합니다.

참고

최상의 성능을 얻으려면 데이터베이스 이름과 테이블 이름에 소문자만 사용합니다. 대/소문자를 혼합하여 사용하면 커넥터에서 대소문자를 구분하지 않고 검색하므로 더욱 컴퓨팅 집약적입니다.

Timestream에서 사용할 AWS Glue 테이블을 구성하려면 AWS Glue에서 테이블 속성을 설정해야 합니다.

보충 메타데이터에 AWS Glue 테이블 사용
  1. AWS Glue 콘솔에서 테이블을 편집하여 다음 테이블 속성을 추가합니다.

    • timestream-metadata-flag – 이 속성은 보충 메타데이터에 테이블을 사용할 수 있음을 Timestream 커넥터에 나타냅니다. timestream-metadata-flag 속성이 테이블 속성 목록에 있는 한 timestream-metadata-flag에 모든 값을 제공할 수 있습니다.

    • _view_template – 보충 메타데이터에 AWS Glue를 사용하는 경우 이 테이블 속성을 사용하고 모든 Timestream SQL을 보기로 지정할 수 있습니다. Athena Timestream 커넥터는 보기의 SQL을 Athena의 SQL과 함께 사용하여 쿼리를 실행합니다. 이는 Athena에서 사용할 수 없는 Timestream SQL의 기능을 사용하려는 경우에 유용합니다.

  2. 이 문서에 나열된 대로 AWS Glue에 적합한 데이터 형식을 사용해야 합니다.

데이터 타입

현재 Timestream 커넥터는 Timestream에서 사용 가능한 데이터 형식의 하위 세트, 특히 스칼라 값 varchar, doubletimestamp만 지원합니다.

timeseries 데이터 형식을 쿼리하려면 Timestream CREATE_TIME_SERIES 함수를 사용하는 AWS Glue 테이블 속성에서 보기를 구성해야 합니다. 또한 시계열 열의 유형으로 ARRAY<STRUCT<time:timestamp,measure_value::double:double>> 구문을 사용하는 보기에 대한 스키마를 제공해야 합니다. double을 테이블에 적합한 스칼라 유형으로 바꿉니다.

다음 이미지는 시계열에 대한 보기를 설정하도록 구성된 AWS Glue 테이블 속성의 예제를 보여줍니다.

AWS Glue에서 테이블 속성을 구성하여 시계열에 대한 보기 설정.

필수 권한

이 커넥터에 필요한 IAM 정책에 대한 자세한 내용을 알아보려면 athena-timestream.yaml 파일의 Policies 섹션을 검토하세요. 다음 목록에 필요한 권한이 요약되어 있습니다.

  • Amazon S3 쓰기 액세스 - 대규모 쿼리의 결과 유출을 위해서는 커넥터에 Amazon S3 위치에 대한 쓰기 액세스 권한이 필요합니다.

  • Athena GetQueryExecution - 커넥터는 업스트림 Athena 쿼리가 종료된 경우 이 권한을 사용하여 빠른 실패를 수행합니다.

  • AWS Glue Data Catalog - 스키마 정보를 가져오기 위해 Timestream 커넥터에 AWS Glue Data Catalog에 대한 읽기 전용 액세스 권한이 필요합니다.

  • CloudWatch Logs - 로그를 저장하기 위해 커넥터 CloudWatch Logs에 대한 액세스 권한이 필요합니다.

  • Timestream 액세스 - Timestream 쿼리를 실행하는 데 사용됩니다.

성능

대화형 쿼리가 제대로 작동하려면 반환되는 데이터(스캔되는 데이터 아님)를 256MB 미만으로 제한하는 LIMIT 절을 사용하는 것이 좋습니다.

Athena Timestream 커넥터는 조건자 푸시다운을 수행하여 쿼리에서 스캔하는 데이터를 줄입니다. LIMIT 절은 스캔하는 데이터를 줄이지만 조건자가 제공되지 않으면 LIMIT 절을 포함하는 SELECT 쿼리는 최소 16MB의 데이터를 스캔합니다. 열의 하위 집합을 선택하면 쿼리 런타임 속도를 높이고 스캔되는 데이터를 줄일 수 있습니다. Timestream 커넥터는 동시성으로 인한 제한에 대한 복원력이 뛰어납니다.

패스스루 쿼리

Timestream 커넥터는 패스스루 쿼리를 지원합니다. 패스스루 쿼리는 테이블 함수를 사용하여 실행을 위해 전체 쿼리를 데이터 소스로 푸시다운합니다.

Timestream에서 패스스루 쿼리를 사용하려면 다음 구문을 사용합니다.

SELECT * FROM TABLE( system.query( query => 'query string' ))

다음 예제 쿼리는 Timestream의 데이터 소스로 쿼리를 푸시다운합니다. 쿼리는 customer 테이블의 모든 열을 선택하여 결과를 10개로 제한합니다.

SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))

라이선스 정보

Amazon Athena Timestream 커넥터 프로젝트는 Apache-2.0 라이선스에 따라 사용이 허가됩니다.

추가 리소스

이 커넥터에 대한 추가 정보를 알아보려면 GitHub.com의 해당 사이트를 참조하세요.