Passer au contenu principal

Présentation

L’intégration OneSignal + Amazon Redshift permet la synchronisation des événements personnalisés depuis votre entrepôt de données Redshift vers OneSignal pour déclencher des campagnes de messagerie automatisées et des parcours basés sur le comportement des utilisateurs. Amazon Redshift est un service d’entrepôt de données entièrement géré à l’échelle du pétaoctet qui rend rentable l’analyse de grands volumes de données à l’aide de vos outils d’intelligence économique existants.

Prérequis

  • Accès aux Event Streams pour les événements de message sortants (Les limitations de forfait et les dépassements s’appliquent)
  • Accès aux Événements personnalisés pour la synchronisation des événements entrants (Les limitations de forfait et les dépassements s’appliquent)
  • Forfait de compte mis à jour (non disponible sur les applications gratuites)

Amazon Redshift

  • Cluster Redshift avec accès réseau
  • Utilisateur de base de données avec les autorisations appropriées
  • Tables d’événements contenant des données comportementales structurées
  • Connectivité réseau de OneSignal vers votre cluster Redshift

Configuration

1

Créer un utilisateur dédié pour OneSignal

Créez un compte utilisateur dédié avec les autorisations appropriées :
-- Créer un utilisateur OneSignal avec un mot de passe fort
CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';

-- Créer un schéma de comptabilité privé pour l'état de synchronisation (ignorer en mode lecture seule)
CREATE SCHEMA CENSUS;

-- Accorder un accès complet au schéma de comptabilité (ignorer en mode lecture seule)
GRANT ALL ON SCHEMA CENSUS TO CENSUS;

-- Assurer l'accès aux objets existants dans le schéma de comptabilité (ignorer en mode lecture seule)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
2

Accorder des autorisations aux données d'événements

Fournissez un accès en lecture aux schémas contenant vos données d’événements :
-- Accorder l'accès au schéma (répéter pour chaque schéma avec des données d'événements)
GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

-- Accorder l'accès en lecture aux tables existantes
GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

-- Accorder l'accès en lecture aux tables futures
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

-- Accorder des autorisations d'exécution sur les fonctions
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
3

Configurer l'accès réseau

Ajoutez les adresses IP de OneSignal à vos groupes de sécurité Redshift. Redshift empêche l’accès externe par défaut.Vous pouvez trouver les adresses IP de OneSignal pour votre région dans les paramètres d’intégration. Pour plus d’informations, visitez le Centre d’aide AWS Redshift.
4

Se connecter à OneSignal

Dans OneSignal, allez dans Data > Integrations et cliquez sur Add Integration.
  1. Sélectionnez Amazon Redshift dans la liste
  2. Saisissez vos détails de connexion :
    • Hôte : Le point de terminaison de votre cluster Redshift
    • Port : Généralement 5439
    • Base de données : Le nom de votre base de données
    • Nom d’utilisateur : CENSUS
    • Mot de passe : Le mot de passe que vous avez créé
  3. Testez la connexion
  4. Configurez quelles tables contiennent vos données d’événements

Mappage des données d’événement

Mappez vos au format des événements personnalisés de OneSignal :
Champ OneSignalDescriptionRequis
nameevent_nameIdentifiant de l’événementOui
external_iduser_idIdentifiant de l’utilisateurOui
timestampevent_timestampQuand l’événement s’est produitNon
propertiesevent_dataNon

Exemple de schéma de table d’événements

-- Exemple de table d'événements Redshift
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1),
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP DEFAULT GETDATE(),
    event_data SUPER,
    session_id VARCHAR(255),
    created_at TIMESTAMP DEFAULT GETDATE()
)
DISTKEY(user_id)
SORTKEY(event_timestamp);

Mode de requête SQL

Écrivez des requêtes SQL personnalisées pour transformer vos données d’événements :
-- Exemple : Événements récents de grande valeur
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETDATE())
    AND JSON_EXTRACT_PATH_TEXT(event_data, 'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;

Intégration dbt

Si vous utilisez dbt avec Redshift, assurez-vous que OneSignal conserve l’accès après chaque exécution dbt :

Option 1 : Autorisations granulaires

Ajoutez des post-hooks dans votre projet dbt pour accorder l’accès après la construction de chaque modèle :
-- Dans votre modèle dbt
{{ config(
    post_hook="GRANT SELECT ON {{ this }} TO CENSUS"
) }}

Option 2 : Privilèges par défaut (Recommandé)

Accordez des autorisations par défaut pour votre utilisateur de production dbt :
-- Doit être exécuté par le super-utilisateur Redshift
ALTER DEFAULT PRIVILEGES FOR USER "<your_dbt_run_user>"
IN SCHEMA "<your_dbt_target_schema>"
GRANT SELECT ON TABLES TO CENSUS;

Configuration réseau avancée

Configuration du tunnel SSH

Pour les clusters Redshift sur des réseaux privés :
  1. Créer un utilisateur SSH : Configurez un utilisateur dédié sur votre hôte SSH
  2. Configurer le tunnel : Activez “Utiliser un tunnel SSH” dans les paramètres d’intégration OneSignal
  3. Installer la paire de clés : Ajoutez la clé publique de OneSignal à ~/.ssh/authorized_keys
  4. Tester la connexion : Vérifiez la connectivité du tunnel

Déploiement VPC

Pour Redshift dans AWS VPC : OneSignal utilise la commande UNLOAD pour une extraction efficace des données en masse. Les déploiements VPC nécessitent un point de terminaison VPC S3 pour permettre à Redshift de communiquer avec S3. Configuration du point de terminaison VPC S3 :
  1. Accédez au service VPC dans la console AWS
  2. Créez un point de terminaison VPC pour le service S3
  3. Associez-le à votre sous-réseau Redshift
  4. Configurez les tables de routage

Optimisation des performances

Clés de distribution et de tri

Optimisez vos tables d’événements pour les charges de travail analytiques :
-- Distribuer par user_id pour les requêtes centrées sur l'utilisateur
CREATE TABLE analytics.user_events (
    -- colonnes
)
DISTKEY(user_id)
SORTKEY(event_timestamp, event_name);

Stockage en colonnes

Profitez du stockage en colonnes de Redshift pour l’analyse :
  • Compression : Redshift compresse automatiquement les colonnes
  • Cartes de zones : Améliorez les performances des requêtes avec des données triées
  • Orientation colonne : Efficace pour les requêtes analytiques sur les données d’événements

Limitations

  • Les schémas multiples nécessitent des octrois d’autorisations séparés
  • Les vues référençant des tables inter-schémas nécessitent des autorisations supplémentaires
  • L’accès aux procédures stockées complexes peut nécessiter une configuration supplémentaire
  • Les déploiements VPC nécessitent la configuration d’un point de terminaison VPC S3

FAQ

Comment OneSignal gère-t-il les ensembles de données d’événements volumineux ?

OneSignal utilise la commande UNLOAD de Redshift pour une extraction efficace des données en masse, optimisée pour les charges de travail analytiques à grande échelle.

Puis-je utiliser le mode lecture seule ?

Oui, vous pouvez ignorer la création du schéma de comptabilité et utiliser le mode lecture seule si vous préférez une configuration plus simple et ne pouvez pas autoriser OneSignal à créer des tables.

Qu’en est-il de la compatibilité dbt ?

OneSignal fournit des modèles d’intégration dbt spécifiques pour garantir que les autorisations sont maintenues après les exécutions dbt. Utilisez des post-hooks ou des privilèges par défaut selon votre configuration.