GET_PRESIGNED_URL
GET_PRESIGNED_URL
스테이지 이름과 상대 파일 경로를 입력으로 사용해 스테이지의 파일에 대한 사전 서명(pre-signed) URL을 생성하는 파일 함수예요. 스테이징된 파일에 시간 제한 접근을 허용할 때 씁니다.
본문
스테이지의 파일에 접근하는 방법은 여러 가지예요.
- 웹 브라우저에서 사전 서명 URL로 직접 이동.
- Snowsight에서 사전 서명 URL 조회(결과 테이블의 URL 클릭).
- 파일 지원 REST API 요청에 사전 서명 URL 전송.
참고: Microsoft Azure 클라우드 스토리지를 참조하는 외부 스테이지의 파일에 대해 호출하면, blob 객체를 저장하는 Azure 컨테이너에 스토리지 통합으로 접근할 때만 출력을 반환해요. 직접 만든 공유 액세스 서명(SAS) 토큰으로 컨테이너에 접근하면 쿼리가 실패해요. GET_PRESIGNED_URL은 사용자 위임 SAS 토큰을 만들기 위해 Azure Active Directory 인증이 필요하며, 스토리지 통합 객체가 Azure 클라우드 스토리지용 생성 서비스 주체를 저장해요.
참고: Microsoft Fabric OneLake 스테이지의 사전 서명 URL은 Microsoft Fabric의 사용자 위임 키 제약 때문에 만료 시간 최대가 60분(3600초)이에요. 더 긴 만료 시간을 지정하면 함수가 오류를 반환해요.
GET_PRESIGNED_URL( @<stage_name> , '<relative_file_path>' , [ <expiration_time> ] )
stage_name — 파일이 저장된 내부 또는 외부 스테이지 이름. 이름에 공백·특수문자가 있으면 작은따옴표로 감싸야 해요(예: '"my stage"' 스테이지는 '@"my stage"').
relative_file_path — 스테이지 위치 기준 파일의 경로와 파일 이름.
expiration_time — 단기 접근 토큰이 만료되는 시간(초). 기본값은 3600(60분). 최대값은 스테이지가 AWS IAM 역할(AWS_ROLE)로 S3 버킷에 연결하면 3600(60분), Microsoft Fabric OneLake 스테이지도 3600(60분), 그 외에는 604800(7일)이에요.
반환값 — 스테이징된 파일의 사전 서명 URL.
참고: 이 함수는 스테이지에 파일이 없어도 지정한 파일 경로에 대한 사전 서명 URL을 생성해요. 생성된 URL이 기대한 파일을 반환하는지 확인하려면 웹 브라우저에서 URL을 여세요. 파일이 없으면 브라우저가 XML 형식의
NoSuchKey오류를 반환해요.
사용 메모
- 내부 또는 외부 스테이지에 서버 측 암호화가 필요해요(CREATE STAGE 참고).
- 이 함수는 스테이지에 대해 외부 스테이지는 USAGE, 내부 스테이지는 READ 권한이 있는 역할에게 값을 반환해요.
- 내부 스테이지에서 내려받은 파일이 손상되었다면 스테이지 생성자에게
ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')가 설정되어 있는지 확인하세요.
예시
SELECT GET_PRESIGNED_URL(@images_stage, 'us/yosemite/half_dome.jpg', 3600);
+------------------------------------------------------------------------------------------------------------------------------------+
| GET_PRESIGNED_URL(@IMAGES_STAGE, 'US/YOSEMITE/HALF_DOME.JPG', 3600) |
|------------------------------------------------------------------------------------------------------------------------------------|
| http://myaccount.s3.amazonaws.com/national_parks/us/yosemite/half_dome.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600... |
+------------------------------------------------------------------------------------------------------------------------------------+