Création d’une intégration de notification pour envoyer des notifications à un sujet Amazon SNS¶
Pour envoyer des notifications à un sujet Amazon SNS, vous devez créer une intégration de notification pour ce sujet. Pour ce faire :
Note
Cette fonctionnalité est actuellement limitée aux comptes Snowflake hébergés sur AWS.
Créer un sujet Amazon SNS¶
Créez un sujet SNS dans votre compte AWS pour gérer toutes les notifications. Enregistrez le nom de la ressource Amazon (ARN) pour la file d’attente SNS.
Note
Seules les rubriques SNS standard sont prises en charge. Ne pas créer de sujets SNS FIFO (premier entré, premier sorti) pour les notifications d’erreur. Actuellement, les notifications d’erreur envoyées aux sujets FIFO échouent en silence.
Pour réduire la latence et éviter des frais de sortie de données pour l’envoi de notifications entre régions, nous vous recommandons de créer le sujet SNS dans la même région que votre compte Snowflake.
Pour obtenir des instructions, consultez la rubrique Création d’un sujet SNS Amazon dans la documentation SNS.
Créer la politique IAM¶
Créez une politique de gestion des identités et des accès AWS (IAM) qui accorde des autorisations pour appeler le sujet SNS. La politique définit les actions suivantes :
sns:publish
: publiez dans le sujet SNS.
Connectez-vous à la console de gestion AWS.
Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM).
Cliquez sur Account settings dans le volet de navigation de gauche.
Développez la liste Security Token Service Regions, recherchez la région AWS qui correspond à la région où se trouve votre compte et choisissez Activate si le statut est Inactive.
Cliquez sur Policies dans le volet de navigation de gauche.
Sélectionnez Create Policy.
Sélectionnez l’onglet JSON.
Ajoutez un document de politique qui définit les actions qui peuvent être prises sur votre sujet SNS.
Copiez et collez le texte suivant dans l’éditeur de politiques :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "<sns_topic_arn>" } ] }
Remplacez
sns_topic_arn
par le ARN du sujet SNS que vous avez créé précédemment.Sélectionnez Review policy.
Entrez le nom de la politique (par exemple,
snowflake_sns_topic
) et une description facultative et sélectionnez Create policy.
Créer le rôle AWS IAM¶
Créez un rôle AWS IAM auquel attribuer des privilèges sur le sujet SNS.
Connectez-vous à la console de gestion AWS.
Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM) :
Cliquez sur Roles dans le volet de navigation de gauche.
Sélectionnez Create role.
Sélectionnez Another AWS account comme type d’entité de confiance.
Dans le champ Account ID entrez votre propre ID de compte AWS temporaire.
Sélectionnez l’option Require external ID. Cette option vous permet d’accorder des autorisations sur les ressources de votre compte Amazon (c’est-à-dire SNS) à un tiers (c’est-à-dire Snowflake).
Pour le moment, entrez un ID fictif tel que
0000
. Plus tard, vous modifierez la relation de confiance et remplacerez l’ID fictif par l’ID externe pour l’utilisateur IAM de Snowflake généré pour votre compte. Une condition dans la politique de confiance pour votre rôle IAM permet à vos utilisateurs Snowflake d’assumer le rôle en utilisant l’objet d’intégration de notification que vous créerez plus tard.Sélectionnez Next.
Localisez la politique que vous avez créée précédemment, et sélectionnez cette politique.
Sélectionnez Next.
Saisissez un nom et une description pour le rôle, puis sélectionnez Create role.
Enregistrez la valeur Role ARN située sur la page de résumé du rôle. Vous préciserez cette valeur dans une ou plusieurs étapes ultérieures.
Créer l’intégration des notifications¶
Exécutez la commande CREATE NOTIFICATION INTEGRATION pour créer une intégration de notification. Une intégration est un objet Snowflake qui fait référence au sujet SNS que vous avez créé.
Note
Si vous prévoyez d’utiliser l’intégration pour des notifications d’erreurs dans les tâches ou les canaux, une seule intégration de notification peut prendre en charge plusieurs tâches ou canaux.
Lors de l’exécution de la commande, définissez ces paramètres sur les valeurs suivantes :
Définissez AWS_SNS_TOPIC_ARN sur le sujet SNS ARN que vous avez enregistré précédemment.
Définissez AWS_SNS_ROLE_ARN sur le rôle IAM ARN que vous avez enregistré précédemment.
Note
La valeur de AWS_SNS_ROLE_ARN est sensible à la casse. Utilisez la valeur exacte spécifiée dans votre compte AWS.
Par exemple :
CREATE NOTIFICATION INTEGRATION my_notification_int
ENABLED = TRUE
DIRECTION = OUTBOUND
TYPE = QUEUE
NOTIFICATION_PROVIDER = AWS_SNS
AWS_SNS_TOPIC_ARN = 'arn:aws:sns:us-east-2:111122223333:sns_topic'
AWS_SNS_ROLE_ARN = 'arn:aws:iam::111122223333:role/error_sns_role';
Accorder un accès à Snowflake au sujet SNS¶
Récupérer l’ARN de l’utilisateur IAM et l’ID externe du sujet SNS¶
Exécutez la commande DESCRIBE INTEGRATION pour afficher les propriétés de l’intégration de notification que vous venez de créer.
Par exemple, pour afficher les propriétés de l’intégration de notification nommée
my_notification_int
:DESC NOTIFICATION INTEGRATION my_notification_int;
+---------------------------+-------------------+------------------------------------------------------+----------------------+ | property | property_type | property_value | property_default | +---------------------------+-------------------+------------------------------------------------------+----------------------+ | ENABLED | Boolean | true | false | | NOTIFICATION_PROVIDER | String | AWS_SNS | | | DIRECTION | String | OUTBOUND | INBOUND | | AWS_SNS_TOPIC_ARN | String | arn:aws:sns:us-east-2:111122223333:myaccount | | | AWS_SNS_ROLE_ARN | String | arn:aws:iam::111122223333:role/myrole | | | SF_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/c_myaccount | | | SF_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=2_a123456/s0aBCDEfGHIJklmNoPq= | | +---------------------------+-------------------+------------------------------------------------------+----------------------+
Notez les valeurs des propriétés suivantes :
SF_AWS_IAM_USER_ARN
ARN pour l’utilisateur IAM Snowflake créé pour votre compte. Les utilisateurs de votre compte Snowflake assumeront le rôle IAM que vous avez créé précédemment en soumettant l’ID externe pour cet utilisateur en utilisant votre intégration de notification.
SF_AWS_EXTERNAL_ID
ID externe pour l’utilisateur IAM Snowflake créé pour votre compte.
Dans l’étape suivante, vous allez mettre à jour la relation de confiance pour le rôle IAM avec ces valeurs.
Notez la propriété DIRECTION , qui indique la direction de la messagerie Cloud par rapport à Snowflake.
Modifier la relation de confiance dans le rôle IAM¶
Connectez-vous à la console de gestion AWS.
Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM) :
Cliquez sur Roles dans le volet de navigation de gauche.
Sélectionnez le rôle que vous avez créé précédemment.
Sélectionnez l’onglet Trust relationships.
Sélectionnez Edit trust relationship.
Modifiez le document de politique pour utiliser les valeurs des propriétés d’intégration de notification que vous avez enregistrées précédemment.
Document de politique pour le rôle IAM
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<sf_aws_iam_user_arn>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<sf_aws_external_id>" } } } ] }
Où :
sf_aws_iam_user_arn
est la valeur SF_AWS_IAM_USER_ARN que vous avez enregistrée.sf_aws_external_id
est la valeur SF_AWS_EXTERNAL_ID que vous avez enregistrée.
Sélectionnez Update Trust Policy. Les modifications sont enregistrées.