Création d’un exemple de fonction externe à l’aide d’un modèle AWS CloudFormation

Ce document montre comment créer un exemple de fonction externe sur AWS en utilisant un modèle CloudFormation. Si vous souhaitez personnaliser le modèle, vous pouvez en savoir plus sur AWS CloudFormation .

Snowflake fournit un modèle avec lequel vous pouvez commencer. Ce modèle masque certains détails du processus de création et code en dur certains noms (par exemple le nom de la zone de préparation) et fonctionnalités. Lorsque vous êtes prêt à créer votre propre fonction externe personnalisée, vous pouvez soit personnaliser une copie du modèle, soit suivre les instructions plus souples disponibles sur Création d’une fonction externe personnalisable sur AWS.

Dans ce chapitre :

Voir aussi :

Introduction

Le modèle CloudFormation exécute les deux étapes suivantes de la création d’une fonction externe :

  • Création du service à distance (par exemple AWS lambda).

  • Créer et configurer le service proxy (par exemple, Amazon API Gateway).

Le modèle aussi :

  • Crée deux rôles IAM (un pour le Lambda et un pour API Gateway).

  • Configure une politique de ressources pourAPI Gateway.

Le modèle est disponible à l’adresse https://github.com/Snowflake-Labs/sfguide-external-functions-examples/tree/main/DeploymentTemplates/aws/BasicSetup.yaml .

Conditions préalables

Vous avez besoin des éléments suivants :

  • Un compte avec AWS, y compris des privilèges pour :

    • Créer des rôles AWS via IAM (gestion des identités et des accès).

    • Créer des fonctions Lambda AWS.

    • Créer un point de terminaison API Gateway.

  • Un compte Snowflake dans lequel vous disposez des privilèges ACCOUNTADMIN ou un rôle avec le privilège CREATE INTEGRATION.

Ce document suppose que vous êtes un administrateur AWS expérimenté.

Feuille de calcul

Lorsque vous créez votre fonction externe, vous devez enregistrer des informations spécifiques (par exemple, l’URL d’API Gateway) que vous saisissez afin de pouvoir utiliser ces informations dans les étapes suivantes. La feuille de calcul ci-dessous vous aide à suivre ces informations.

==============================================================================================
=========================================== Worksheet ========================================
==============================================================================================

New IAM Role Name........: _____________________________________________
New IAM Role ARN.........: _____________________________________________
Resource Invocation URL..: _____________________________________________
API_AWS_IAM_USER_ARN.....: _____________________________________________
API_AWS_EXTERNAL_ID......: _____________________________________________

Étape 1 : Créer AWS Lambda et API Gateway en utilisant le modèle

  1. Allez à la Console de gestion AWS.

  2. Dans la barre de recherche supérieure, cherchez CloudFormation.

  3. Sous la rubrique Services, cliquez sur CloudFormation.

  4. Cliquez sur Create stack.

    Si vous avez le choix entre With new resources (standard) ou With existing resources (import resources), choisissez With new resources (standard).

  5. Sur la page Create stack , sélectionnez Template is ready sous Prepare template.

  6. Sélectionnez Upload a template file.

  7. Sélectionnez Choose file.

  8. Naviguez jusqu’au répertoire qui contient votre copie du modèle, puis sélectionnez ce modèle.

  9. Cliquez sur Next pour atteindre la page sur laquelle vous entrez les noms des rôles, etc.

    Note

    Le modèle utilise des noms par défaut pour certaines ressources. Vous pouvez changer les noms.

  10. Saisissez un nom pour la pile.

  11. Entrez un nom pour le rôle IAM de API Gateway (paramètre apiGatewayIAMRoleName). C’est le rôle assumé par Snowflake pour l’autorisation avec API Gateway. Assurez-vous que ce rôle n’existe pas déjà, car le modèle tentera de mettre à jour le rôle s’il existe.

    Enregistrez le nom du rôle comme « Nouveau nom de rôle IAM » dans la feuille de calcul.

  12. Entrez un nom pour le rôle d’exécution Lambda (paramètre lambdaExecutionRoleName). Ce rôle est utilisé par le service Lambda pour l’ajout des logs CloudWatch. Assurez-vous que ce rôle n’existe pas déjà car le modèle tentera de mettre à jour le rôle s’il existe.

  13. Cliquez sur Next.

    Cette page propose des options avancées pour le déploiement des modèles.

    1. En option, définissez des options avancées, comme la politique de la pile. (Celles-ci ne sont généralement pas nécessaires pour les démonstrations).

    2. Cliquez sur Next.

  14. Sur la page de révision, faites défiler la page jusqu’à la fin et reconnaissez que le modèle CloudFormation peut créer des ressources IAM avec des noms personnalisés. Cela est nécessaire car le modèle crée deux rôles IAM dans le cadre du déploiement.

  15. Cliquez sur Create stack.

Le déploiement prendra quelques secondes. Une fois le déploiement terminé, les ressources créées seront répertoriées sous l’onglet Resources .

Étape 2 : Créer l’intégration API et la fonction externe

Maintenant que vous avez créé le service à distance et le service proxy, vous devez créer l’intégration API et la fonction externe, puis revenir à cette page. Afin de créer l’intégration API et la fonction externe, vous avez besoin de l’URL d’API Gateway, que vous pouvez obtenir en suivant les étapes ci-dessous.

Une fois le déploiement terminé, vous devriez vous trouver dans l’onglet Events de la pile nouvellement créée.

  1. Cliquez sur l’onglet Outputs .

  2. Copiez la valeur de resourceInvocationUrl dans le champ « URL de l’appel de ressource » de la feuille de calcul.

  3. Copiez la valeur de awsRoleArn dans le champ « ARN du nouveau rôle IAM » dans la feuille de calcul.

  4. Lorsque vous créez l’intégration API , utilisez l”« URL d’appel de ressource » comme valeur pour api_allowed_prefixes.

  5. Lorsque vous créez la fonction externe, utilisez l”« URL d’appel de ressource » pour invocation_URL.

En utilisant les informations ci-dessus, exécutez les étapes des liens ci-dessous :

  1. Créer l’intégration API

  2. Configurer la relation de confiance entre Snowflake et le nouveau rôle IAM

  3. Créer la fonction externe

Retournez ensuite à cette page.

Étape 3 : Appelez la fonction

Testez la fonction en suivant ces instructions :

Appelez la fonction externe

Dépannage

La création de la pile CloudFormation a échoué

Cause possible

Vous n’avez pas les autorisations requises pour créer les ressources spécifiées dans le modèle CloudFormation . Vérifiez l’onglet Events de la pile pour voir les détails de l’erreur.

Consultez également la page AWS de dépannage des fonctions externes pour des conseils supplémentaires de dépannage.