1️⃣ Directory Tables
- 본질: Stage 위 implicit object (별도 DB 객체 ❌, 자체 권한 ❌)
- 저장: 파일 단위 메타데이터 (External Table과 유사)
- 켜기:
DIRECTORY = (ENABLE = TRUE) ← CREATE / ALTER 공통
- 조회:
SELECT * FROM DIRECTORY(@stage)
- 출력 컬럼:
RELATIVE_PATH · SIZE · LAST_MODIFIED · MD5 · ETAG · FILE_URL
2️⃣ Refreshing
- 트리거 대상: 추가된 파일 / 삭제된 파일 / 변경된 파일
- 수동:
ALTER STAGE <name> REFRESH; (Internal은 수동 필수)
- 자동(External): ① ENABLE → ②
DESCRIBE STAGE로 SQS ARN(directory_notification_channel) → ③ S3 이벤트 알림 구성
- 비용: 자동 = Snowpipe 청구 / 수동 = cloud services
3️⃣ File Support REST API → GET /api/files
| Scoped URL | File URL |
|---|
| 함수 | BUILD_SCOPED_FILE_URL() | BUILD_STAGE_FILE_URL() |
| 인가 | 생성자 본인만 | Stage 권한자 누구나 |
| 기간 | 24시간 | 영구 |
- 인증: OAuth
Bearer {token} + allow_redirects=True 필수
- File URL 접근: ① 인증 → ② role 권한 검증 → ③ 스토리지로 리다이렉트
🎯 핵심 요약
| 약어 | 의미 |
|---|
| ENABLE-REFRESH | 켜고(ENABLE TRUE) → 갱신(REFRESH) |
| 스코프드 = 본·24 | 본인만·24시간 |
| 스테이지 = 권·영 | 권한자 누구나·영구 |
| 자동 = 파이프 | 자동 refresh → Snowpipe 비용 |
✅ 한 줄: "디렉터리는 ENABLE로 켜고 REFRESH로 갱신. 스코프드는 본인·24시간, 스테이지는 권한자·영구."