파라미터화된 쿼리 사용
Athena 파라미터화된 쿼리를 사용하여 실행 시 동일한 쿼리를 다른 파라미터 값으로 다시 실행하고 SQL 명령어 삽입 공격을 방지할 수 있습니다. Athena에서 파라미터화된 쿼리는 모든 DML 쿼리나 SQL 준비된 문에서 실행 파라미터 형태를 취할 수 있습니다.
-
실행 파라미터가 있는 쿼리는 한 단계로 수행할 수 있으며 작업 그룹에 특정되지 않습니다. 파라미터화하려는 값의 아무 DML 쿼리에 물음표를 넣습니다. 쿼리를 실행할 때 실행 파라미터 값을 순차적으로 선언합니다. 파라미터 선언과 파라미터 값 할당은 동일한 쿼리에서 분리된 방식으로 수행할 수 있습니다. 준비된 문과 달리 실행 파라미터를 사용하여 쿼리를 제출할 경우 작업 그룹을 선택할 수 있습니다.
-
준비된 문에는 두 개의 개별 SQL 문인
PREPARE
및EXECUTE
가 필요합니다. 먼저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개의 물음표로 제한됩니다.