- Catégories :
GET_PRESIGNED_URL¶
Génère l’URL pré-signée vers un fichier en zone de préparation en utilisant le nom de la zone de préparation et le chemin de fichier relatif comme entrées.
Accédez aux fichiers d’une zone de préparation en utilisant l’une des méthodes suivantes :
Accédez à l’URL pré-signée directement dans un navigateur Web.
Récupérez une URL pré-signée dans Snowsight. Cliquez sur l’URL pré-signée dans la table des résultats.
Envoyez l’URL pré-signée dans une requête dans l’API REST pour la prise en charge de fichiers.
Note
Lorsque vous appelez cette fonction pour des fichiers dans une zone de préparation externe qui fait référence au stockage Cloud Microsoft Azure : Cette fonction renvoie un résultat uniquement lorsque le conteneur Azure qui stocke l’objet blob est accessible à l’aide d’une intégration de stockage ; l’interrogation de la fonction échoue si le conteneur est accessible à l’aide d’un jeton de signature d’accès partagé (SAS) que vous générez.
La fonction GET_PRESIGNED_URL nécessite une authentification Azure Active Directory pour créer le jeton SAS de délégation de l’utilisateur. À cette fin, un objet d’intégration de stockage stocke un principal de service généré pour votre stockage dans le Cloud Azure. Le principal du service Snowflake se voit attribuer un rôle qui inclut l’autorisation Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey
(ou action). Les rôles Storage Blob Data Reader
et Storage Blob Data Contributor
comprennent tous deux cette autorisation. Pour plus d’informations sur cette autorisation, consultez la documentation Microsoft.
Pour plus d’informations sur l’accès à un conteneur Azure, voir Configuration d’un conteneur Azure pour le chargement de données.
Syntaxe¶
GET_PRESIGNED_URL( @<stage_name> , '<relative_file_path>' , [ <expiration_time> ] )
Arguments¶
stage_name
Nom de la zone de préparation interne ou externe où le fichier est stocké.
Note
Si le nom de la zone de préparation comprend des espaces ou des caractères spéciaux, il doit être placé entre guillemets simples (par exemple,
'@"my stage"'
pour une zone de préparation nommée"my stage"
).relative_file_path
Chemin et nom de fichier du fichier relatif à son emplacement dans la zone de préparation.
expiration_time
Durée (en secondes) après laquelle le jeton d’accès à court terme expire.
Valeur par défaut :
3600
(60 minutes).Valeur maximale : si la zone de préparation utilise un rôle AWS IAM (
AWS_ROLE
) pour se connecter en toute sécurité à votre compartiment S3, le délai d’expiration maximal est de3600
(60 minutes). Sinon, le délai d’expiration maximal est de604800
(7 jours).
Renvoie¶
URL pré-signée du fichier en zone de préparation.
Note
Cette fonction SQL génère une URL pré-signée pour le chemin de fichier que vous spécifiez, même si le fichier n’existe pas sur la zone de préparation. Pour vous assurer que l’URL générée renvoie le fichier attendu, ouvrez l’URL dans un navigateur Web. Si le fichier n’existe pas, le navigateur renvoie une erreur NoSuchKey
au format XML.
Notes sur l’utilisation¶
Le chiffrement côté serveur est nécessaire sur la zone de préparation interne ou externe. Pour plus de détails, voir CREATE STAGE.
Cette fonction SQL renvoie une valeur pour tout rôle qui possède le privilège suivant sur la zone de préparation :
- Zone de préparation externe:
USAGE
- Zone de préparation interne:
READ
Si les fichiers téléchargés à partir d’une zone de préparation interne sont corrompus, vérifiez avec le créateur de zone de préparation que
ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')
est défini pour la zone de préparation.
Exemples¶
Interrogation de la fonction¶
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 |
+================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================-------+
Chargement des métadonnées d’un fichier image et récupération de l’URL pré-signée¶
Utilisez l’API de votre service de stockage dans le Cloud pour générer une liste de documents JSON contenant les métadonnées extraites des images.
Par exemple, supposons que le document JSON pour un fichier image bitmap soit le suivant :
{
"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"
}
Créez une table pour les métadonnées de l’image, chargez les métadonnées dans la table et générez l’URL pré-signée pour l’image :
-- 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
);