Amazon Athena Redis 커넥터 - Amazon Athena

Amazon Athena Redis 커넥터

Amazon Redis 커넥터를 통해 Amazon Athena는 Redis 인스턴스와 통신할 수 있고, 이로써 SQL을 사용하여 Redis 데이터를 쿼리할 수 있습니다. AWS Glue Data Catalog를 사용하여 Redis 키-값 쌍을 가상 테이블에 매핑할 수 있습니다.

기존의 관계형 데이터 스토어와 달리 Redis에는 테이블이나 열의 개념이 없습니다. 대신 Redis는 키가 기본적으로 string이고 값이 string, z-set 또는 hmap인 키-값 액세스 패턴을 제공합니다.

AWS Glue Data Catalog를 사용하여 스키마를 생성하고 가상 테이블을 구성할 수 있습니다. Athena Redis 커넥터는 특수 테이블 속성을 통해 Redis 키와 값을 테이블에 매핑하는 방법을 알 수 있습니다. 자세한 내용은 이 문서의 후반부에서 AWS Glue에서 데이터베이스 및 테이블 설정 단원을 참조하세요.

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

Amazon Athena Redis 커넥터는 Amazon MemoryDB for Redis 및 Amazon ElastiCache for Redis를 지원합니다.

필수 조건

파라미터

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

  • 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에서 데이터베이스 및 테이블 설정

Redis에서 사용할 AWS Glue 테이블을 활성화하려면 테이블에서 redis-endpoint, redis-value-typeredis-keys-zset 또는 redis-key-prefix와 같은 테이블 속성을 설정합니다.

또한 Redis 테이블이 포함된 모든 AWS Glue 데이터베이스에는 데이터베이스의 URI 속성에 redis-db-flag가 있어야 합니다. redis-db-flag URI 속성을 설정하려면 AWS Glue 콘솔을 사용하여 데이터베이스를 편집합니다.

다음 목록에서는 테이블 속성을 설명합니다.

  • redis-endpoint – (필수) 이 테이블에 대한 데이터가 포함된 Redis 서버의 hostname:port:password(예: athena-federation-demo.cache.amazonaws.com:6379). 또는 ${Secret_Name}을 테이블 속성 값으로 사용하여 AWS Secrets Manager에 엔드포인트 또는 엔드포인트의 일부를 저장할 수 있습니다.

참고

AWS Secrets Manager에서 Athena 연합 쿼리 기능을 사용하려면 Lambda 함수에 연결된 VPC에 Secrets Manager에 연결할 VPC 엔드포인트 또는 인터넷 액세스 가 있어야 합니다.

  • redis-keys-zset – (redis-key-prefix가 사용되지 않는 경우 필수) 값이 zset인 쉼표로 구분된 키 목록입니다(예: active-orders,pending-orders). zset의 각 값은 테이블의 일부인 키로 처리됩니다. redis-keys-zset 속성 또는 redis-key-prefix 속성을 설정해야 합니다.

  • redis-key-prefix – (redis-keys-zset가 사용되지 않는 경우 필수) 테이블에서 값을 스캔하기 위한 쉼표로 구분된 키 접두사 목록입니다(예: accounts-*,acct-). redis-key-prefix 속성 또는 redis-keys-zset 속성을 설정해야 합니다.

  • redis-value-type – (필수) redis-key-prefix 또는 redis-keys-zset에 의해 정의된 키의 값이 테이블에 매핑되는 방법을 정의합니다. 리터럴은 단일 열에 매핑됩니다. zset도 단일 열에 매핑되지만 각 키는 많은 행을 저장할 수 있습니다. 해시를 사용하면 각 키가 여러 열(예: 해시, 리터럴 또는 zset)이 있는 행이 될 수 있습니다.

  • redis-ssl-flag – (선택 사항) True이면 SSL/TLS를 사용하는 Redis 연결을 생성합니다. 기본값은 False입니다.

  • redis-cluster-flag – (선택 사항) True이면 클러스터링된 Redis 인스턴스에 대한 지원을 활성화합니다. 기본값은 False입니다.

  • redis-db-number – (선택 사항) 클러스터링되지 않은 독립 실행형 인스턴스에만 적용됩니다. 기본값이 아닌 Redis 데이터베이스에서 읽으려면 이 번호(예: 1, 2 또는 3)를 설정합니다. 기본값은 Redis 논리적 데이터베이스 0입니다. 이 번호는 Athena 또는 AWS Glue의 데이터베이스가 아니라 Redis 논리 데이터베이스를 나타냅니다. 자세한 내용을 알아보려면 Redis 설명서의 SELECT 인덱스를 참조하세요.

데이터 타입

Redis 커넥터는 다음 데이터 형식을 지원합니다. Redis 스트림은 지원되지 않습니다.

모든 Redis 값은 string 데이터 형식으로 검색됩니다. 그런 다음 AWS Glue Data Catalog에서 테이블이 정의된 방식에 따라 다음 Apache Arrow 데이터 형식 중 하나로 변환됩니다.

AWS Glue 데이터 유형 Apache Arrow 데이터 형식
int INT
문자열 VARCHAR
bigint BIGINT
double FLOAT8
float FLOAT4
smallint SMALLINT
tinyint TINYINT
boolean BIT
이진수 VARBINARY

필수 권한

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

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

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

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

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

  • AWS Secrets Manager 읽기 액세스 - Secrets Manager에 Redis 엔드포인트 세부 정보를 저장하기로 선택하는 경우 커넥터에 해당 보안 암호에 대한 액세스 권한을 부여해야 합니다.

  • VPC 액세스 - VPC에 연결하고 Redis 인스턴스와 통신할 수 있도록 VPC에 인터페이스를 연결하고 분리하는 기능이 커넥터에 필요합니다.

성능

Athena Redis 커넥터는 사용자가 정의한 테이블 유형(예: zset 키 또는 접두사 키)에 따라 Redis 인스턴스에 대한 쿼리 병렬화를 시도합니다.

쿼리에서 스캔하는 데이터를 줄이기 위해 Athena Redis 커넥터에서 조건자 푸시다운을 수행합니다. 그러나 프라이머리 키에 대한 조건자를 포함하는 쿼리는 시간 초과로 실패합니다. LIMIT 절은 스캔되는 데이터의 양을 줄이지만 조건자를 제공하지 않으면 LIMIT 절을 포함하는 SELECT 쿼리가 최소 16MB의 데이터를 스캔할 것으로 예상해야 합니다. Redis 커넥터는 동시성으로 인한 제한에 대한 복원력이 뛰어납니다.

라이선스 정보

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

추가적인 리소스

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