- 카테고리:
GET_PRESIGNED_URL¶
스테이지 이름과 상대 파일 경로를 입력으로 사용하여 스테이지의 파일에 대한 사전 서명 URL을 생성합니다.
다음 방법 중 하나를 사용하여 스테이지의 파일에 액세스합니다.
웹 브라우저에서 사전 서명 URL로 직접 이동합니다.
Snowsight에서 사전 서명 URL을 검색합니다. 결과 테이블에서 사전 서명 URL을 클릭합니다.
파일 지원을 위해 REST API에 대한 요청의 사전 서명 URL을 보냅니다.
참고
Microsoft Azure 클라우드 저장소를 참조하는 외부 스테이지의 파일에 대해 이 함수를 호출하는 경우: 이 함수는 blob 오브젝트를 저장하는 Azure 컨테이너가 저장소 통합을 사용하여 액세스하는 경우에 한해 출력을 반환합니다. 생성한 공유 액세스 서명(SAS) 토큰을 사용하여 컨테이너에 액세스하면 함수 쿼리가 실패합니다.
이 GET_PRESIGNED_URL 함수는 사용자 위임 SAS 토큰을 만들기 위해 Azure Active Directory 인증이 필요합니다. 이를 위해 저장소 통합 오브젝트는 Azure 클라우드 저장소에 대해 생성된 서비스 주체를 저장합니다. Snowflake 서비스 주체에게는 Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey
권한(또는 작업)이 포함된 역할이 부여됩니다. Storage Blob Data Reader
및 Storage Blob Data Contributor
역할은 둘 다 이 권한을 포함합니다. 이 권한에 대한 자세한 내용은 Microsoft 설명서 를 참조하십시오.
Azure 컨테이너에 액세스하는 것에 관한 자세한 내용은 데이터를 로드하기 위해 Azure 컨테이너 구성하기 섹션을 참조하십시오.
구문¶
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분)입니다. 그렇지 않은 경우 최대 만료 시간은604800
(7일)입니다.
반환¶
스테이징된 파일의 사전 서명 URL.
참고
이 SQL 함수는 파일이 스테이지에 존재하지 않는 경우에도 지정한 파일 경로에 대해 미리 서명된 URL을 생성합니다. 생성된 URL이 예상한 파일을 반환하도록 보장하려면 웹 브라우저에서 URL을 여십시오. 파일이 없으면 브라우저는 XML 형식으로 NoSuchKey
오류를 반환합니다.
사용법 노트¶
내부 또는 외부 스테이지에서 서버 측 암호화가 필요합니다. 자세한 내용은 CREATE STAGE 섹션을 참조하십시오.
이 SQL 함수는 스테이지에서 다음 권한이 있는 역할에 대한 값을 반환합니다.
- 외부 스테이지:
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-Credential=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAus-west-xxxxxxxxxaws1_request&X-Amz-Date=20200625T162738Z&X-Amz-Expires=3600&X-Amz-Security-Token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-Amz-SignedHeaders=host&X-Amz-Signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================-------+
이미지 파일의 메타데이터를 로딩하고 사전 서명 URL 검색하기¶
클라우드 저장소 서비스용 API를 사용하여 이미지에서 추출한 메타데이터가 포함된 JSON 문서의 목록을 생성합니다.
예를 들어, 하나의 비트맵 이미지 파일에 대한 JSON 문서가 다음과 같다고 가정합니다.
{
"file_url": "s3://photos/national_parks/us/yosemite/half_dome.jpg",
"image_format": "jpeg",
"dimensions": {"x" : 1024, "y" : 768},
"tags":[
"rock",
"cliff",
"valley"
],
"dominant_color": "gray"
}
이미지 메타데이터에 대한 테이블을 만들고, 메타데이터를 테이블에 로딩하고, 이미지에 대한 사전 서명 URL을 생성합니다.
-- Create a table to store the file metadata
CREATE TABLE images_table
(
file_url string,
image_format string,
dimensions_X number,
dimensions_Y number,
tags array,
dominant_color string,
relative_path string
);
-- Load the metadata from the JSON document into the table.
COPY INTO images_table
FROM
(SELECT $1:file_url::STRING, $1:image_format::STRING, $1:size::NUMBER, $1:tags, $1:dominant_color::STRING, GET_RELATIVE_PATH(@images_stage, $1:file_url)
FROM
@images_stage/image_metadata.json)
FILE_FORMAT = (type = json);
-- Create a view that queries the pre-signed URL for an image as well as the image metadata stored in a table.
CREATE VIEW image_catalog AS
(
SELECT
size,
get_presigned_url(@images_stage, relative_path) AS presigned_url,
tags
FROM
images_table
);