파라미터화된 쿼리 사용 - Amazon Athena

파라미터화된 쿼리 사용

Athena 파라미터화된 쿼리를 사용하여 실행 시 동일한 쿼리를 다른 파라미터 값으로 다시 실행하고 SQL 명령어 삽입 공격을 방지할 수 있습니다. Athena에서 파라미터화된 쿼리는 모든 DML 쿼리나 SQL 준비된 문에서 실행 파라미터 형태를 취할 수 있습니다.

  • 실행 파라미터가 있는 쿼리는 한 단계로 수행할 수 있으며 작업 그룹에 특정되지 않습니다. 파라미터화하려는 값의 아무 DML 쿼리에 물음표를 넣습니다. 쿼리를 실행할 때 실행 파라미터 값을 순차적으로 선언합니다. 파라미터 선언과 파라미터 값 할당은 동일한 쿼리에서 분리된 방식으로 수행할 수 있습니다. 준비된 문과 달리 실행 파라미터를 사용하여 쿼리를 제출할 경우 작업 그룹을 선택할 수 있습니다.

  • 준비된 문에는 두 개의 개별 SQL 문인 PREPAREEXECUTE가 필요합니다. 먼저 PREPARE 문에서 파라미터를 정의합니다. 그런 다음 정의한 파라미터의 값을 제공하는 EXECUTE 문을 실행합니다. 준비된 문은 작업 그룹마다 다르므로 해당 문이 속한 작업 그룹의 컨텍스트 외부에서는 실행할 수 없습니다.

고려 사항 및 제한

  • 파라미터화된 쿼리는 Athena 엔진 버전 2 이상에서만 지원됩니다. Athena 엔진 버전에 대한 자세한 내용은 Athena 엔진 버전 관리 단원을 참조하세요.

  • 현재 파라미터화된 쿼리는 SELECT, INSERT INTO, CTAS, UNLOAD 문에만 지원됩니다.

  • 파라미터화된 쿼리에서 파라미터는 위치 파라미터이며 ?로 표시됩니다. 파라미터에는 쿼리의 순서에 따라 값이 할당됩니다. 명명된 파라미터는 지원되지 않습니다.

  • 현재 ? 파라미터는 WHERE절에만 배치할 수 있습니다. SELECT ? FROM table 등의 구문은 지원되지 않습니다.

  • 물음표 파라미터는 큰 따옴표나 작은 따옴표로 묶을 수 없습니다(즉,'?'"?"의 경우 잘못된 구문임).

  • SQL 실행 파라미터를 문자열로 처리하려면 큰따옴표 대신 작은따옴표로 묶어야 합니다.

  • 필요한 경우 파라미터화된 용어의 값을 입력할 때 CAST 함수를 사용할 수 있습니다. 예를 들어 쿼리에서 파라미터화한 date 유형의 열이 있고 날짜 2014-07-05에 대해 쿼리하려는 경우 파라미터 값으로 CAST('2014-07-05' AS DATE)를 입력하면 결과가 반환됩니다.

  • 준비된 문은 작업 그룹에 특정하며 준비된 문 이름은 작업 그룹 내에서 고유해야 합니다.

  • 준비된 문에 대한 IAM 권한이 필요합니다. 자세한 내용은 준비된 문에 대한 액세스 구성 단원을 참조하십시오.

  • Athena 콘솔에서 실행 파라미터가 있는 쿼리는 최대 25개의 물음표로 제한됩니다.