Configurations pour Snowpipe Streaming avec architecture hautes performances

Ce guide décrit les paramètres de configuration du client Snowpipe Streaming hautes performances disponibles dans les SDKs Java et Python. Il existe deux types distincts de configurations :

  • Variables d’environnement à l’échelle du processus : Variables qui contrôlent la journalisation et les métriques pour l’ensemble de l’application en cours d’exécution et qui doivent être définies avant l’initialisation du client.

  • Propriétés côté client : Propriétés qui définissent la connexion sécurisée et la cible d’ingestion — telles que, url, user, et private_key — et sont configurées pour un objet client spécifique, généralement via une carte en ligne ou un fichier profile.json.

Une seule application peut exécuter plusieurs objets clients. Chaque objet possède ses propres propriétés côté client, mais ils partagent tous les mêmes paramètres de variables d’environnement à l’échelle du processus pour la journalisation et les métriques.

L’architecture hautes performances nécessite que le client soit explicitement lié à un objet PIPE spécifique, qui gère le schéma, les transformations et l’ingestion dans la table cible.

Variables d’environnement

Ces paramètres de configuration contrôlent le comportement à l’échelle du processus, tel que la journalisation et la collecte de métriques, et doivent être configurés en tant que variables d’environnement avant l’initialisation de l’objet client. Le tableau suivant indique les variables d’environnement qui s’appliquent à tous les objets du client Snowpipe Streaming dans le même processus :

Variable

Description

Valeur par défaut

SS_ENABLE_METRICS

Définissez la valeur sur TRUE pour activer le serveur de métriques Prometheus intégré.

FALSE

SS_METRICS_PORT

Le port utilisé pour exposer les métriques.

50000

SS_METRICS_IP

L’adresse IP à laquelle le serveur de métriques est hébergé.

127.0.0.1

SS_LOG_LEVEL

Le niveau de journalisation minimum à sortir.

info (Options : info, warn, error)

Propriétés requises

Le SDK hautes performances requiert plusieurs propriétés pour établir à la fois la connexion sécurisée et la cible d’ingestion spécifique (PIPE). Le tableau suivant indique les propriétés de connexion et d’authentification utilisateur requises :

Propriété

Description

url

URL pour accéder à votre compte Snowflake, y compris votre identificateur de compte. Le protocole (https://) et le numéro de port sont facultatifs.

user

Nom de connexion de l’utilisateur pour le compte Snowflake.

account

Identificateur de compte Snowflake ; par exemple, xy12345.

Si authorization_type est défini sur JWT, qui est la valeur par défaut, vous devez fournir soit le contenu de la clé, soit le chemin du fichier de clé, comme indiqué dans le tableau suivant :

Propriété

Description

private_key

Contenu de la clé privée utilisé pour authentifier l’utilisateur. Incluez uniquement le contenu de la clé ; pas de saut de ligne, de pied de page ou d’en-tête.

private_key_file

Chemin d’accès au fichier de la clé privée ; par exemple, rsa_key.p8. Il s’agit d’une alternative à la fourniture directe du contenu de la clé.

Propriétés facultatives

Le tableau suivant indique les propriétés facultatives du SDK hautes performances :

Propriété

Description

role

Rôle de contrôle d’accès à utiliser pour la session après la connexion à Snowflake.

authorization_type

Propriété qui configure la méthode d’authentification. Les options sont les suivantes : JWT (authentification par paire de clés, par défaut).

Externaliser les secrets

Snowflake recommande fortement d’externaliser des secrets, tels que les identifiants de connexion private_key et OAuth et de les stocker dans un service de gestion de clés ; par exemple, AWS KMS.

Exemples de configuration

Les exemples suivants montrent les configurations côté client et les configurations des variables d’environnement.

Configuration côté client via un fichier profile.json

L’exemple suivant montre comment définir les propriétés côté client :

// profile.json
{
  "authorization_type": "JWT",
  "url": "https://<account_identifier>.snowflakecomputing.com",
  "user": "MY_SNOWFLAKE_USER",
  "account": "XY12345",
  "private_key_file": "/path/to/rsa_key.p8",
  "role": "MY_INGEST_ROLE"
}
Copy

Configuration côté client fournie en ligne

Les exemples suivants montrent comment définir les propriétés côté client directement dans le code :

Exemple Python

config = {
    "authorization_type": "JWT",
    "url": "https://<account_identifier>.snowflakecomputing.com",
    "user": "MY_SNOWFLAKE_USER",
    "account": "XY12345",
    "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
}
# ... code to initialize client with 'config'
Copy

Exemple Java

Map<String, Object> config = new HashMap<>();
config.put("authorization_type", "JWT");
config.put("url", "https://<account_identifier>.snowflakecomputing.com");
config.put("user", "MY_SNOWFLAKE_USER");
config.put("account", "XY12345");
config.put("private_key_file", "/path/to/rsa_key.p8");
config.put("role", "MY_INGEST_ROLE");
// ... code to initialize client with 'config'
Copy

La configuration de la variable d’environnement

Les exemples suivants montrent comment définir des variables d’environnement pour l’ensemble du processus dans le shell avant d’exécuter l’application :

Linux ou macOS (Bash ou Zsh)

# Set the log level for the entire application process to 'warn'
export SS_LOG_LEVEL=warn

# Change the IP for metrics to a specific loopback address
export SS_METRICS_IP=127.0.0.5

# Now run your application
Copy

Windows (invite de commande)

# Set the log level for the entire application process to 'warn'
set SS_LOG_LEVEL=warn

# Change the metrics port
set SS_METRICS_PORT=55000

# Now run your application
Copy