- カテゴリ:
GET_PRESIGNED_URL¶
ステージ名と相対ファイルパスを入力として使用して、ステージ上のファイルに事前署名付き URL を生成します。
次の方法のいずれかを使用して、ステージ内のファイルにアクセスします。
ウェブブラウザーで直接、事前署名済み URL に移動します。
Snowsightで事前署名済み URL を取得します。結果テーブルで事前署名済み URL をクリックします。
リクエストで事前署名済み URL をファイルサポートの REST API に送信します。
注釈
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 をウェブブラウザーで開きます。ファイルが存在しない場合、ブラウザーは NoSuchKey
エラーを XML 形式で返します。
使用上の注意¶
サーバー側の暗号化は、内部ステージまたは外部ステージで必要です。詳細については、 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 ドキュメントのリストを生成します。
たとえば、1つのビットマップイメージファイルの 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
);