카테고리:

파일 함수

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 ReaderStorage Blob Data Contributor 역할은 둘 다 이 권한을 포함합니다. 이 권한에 대한 자세한 내용은 Microsoft 설명서 를 참조하십시오.

Azure 컨테이너에 액세스하는 것에 관한 자세한 내용은 데이터를 로드하기 위해 Azure 컨테이너 구성하기 섹션을 참조하십시오.

구문

GET_PRESIGNED_URL( @<stage_name> , '<relative_file_path>' , [ <expiration_time> ] )
Copy

인자

stage_name

파일이 저장된 내부 또는 외부 스테이지의 이름입니다.

참고

스테이지 이름에 공백이나 특수 문자가 포함된 경우 작은따옴표로 묶어야 합니다(예: "my stage" 라는 스테이지의 경우 '@"my stage"').

relative_file_path

스테이지에서의 위치와 관련된 파일의 경로 및 파일 이름입니다.

expiration_time

단기 액세스 토큰이 만료되는 시간(초)입니다. 기본값: 3600 (60분).

반환

스테이징된 파일의 사전 서명 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   |
+================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================-------+
Copy

이미지 파일의 메타데이터를 로딩하고 사전 서명 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"
}
Copy

이미지 메타데이터에 대한 테이블을 만들고, 메타데이터를 테이블에 로딩하고, 이미지에 대한 사전 서명 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
);
Copy