Étape 2 : CrĂ©er le service proxy (Amazon API Gateway) dans la console de gestion AWS¶

Snowflake n’envoie pas de donnĂ©es (requĂȘtes HTTP POST) directement Ă  un service distant. Au lieu de cela, Snowflake envoie les donnĂ©es Ă  un service proxy qui relaie les donnĂ©es au service distant (par ex., une fonction AWS Lambda) et vice-versa.

Cette rubrique fournit des instructions pour créer et configurer une passerelle Amazon API Gateway à utiliser comme service proxy pour votre fonction externe.

Configurer Amazon API Gateway en tant que service proxy nĂ©cessite plusieurs Ă©tapes, notamment :

  • CrĂ©ation d’un nouveau rĂŽle IAM (gestion des identitĂ©s et des accĂšs) dans votre compte AWS.

  • CrĂ©ation et configuration d’un point de terminaison Amazon API Gateway.

  • SĂ©curisation de votre point de terminaison Amazon API Gateway.

  • CrĂ©ation d’un objet d’intĂ©gration API dans Snowflake.

  • Configuration d’une relation de confiance entre Snowflake et le nouveau rĂŽle IAM.

Les Ă©tapes pour les crĂ©er sont entrelacĂ©es car :

  • L’intĂ©gration API a besoin d’informations provenant de la passerelle API Gateway, comme l’ARN du rĂŽle (Amazon Resource Name).

  • La passerelle API Gateway a besoin d’informations provenant de l’intĂ©gration API, comme les API_AWS_EXTERNAL_ID et API_AWS_IAM_USER_ARN.

Dans ce chapitre :

Étape prĂ©cĂ©dente¶

Étape 1 : CrĂ©er le service distant (fonctionAWS Lambda) dans la console de gestion

Créer un rÎle IAM dans votre compte AWS¶

Pour que Snowflake s’authentifie auprĂšs de votre compte AWS, un utilisateur IAM appartenant Ă  Snowflake (gestion des identitĂ©s et des accĂšs) doit ĂȘtre autorisĂ© Ă  assumer un rĂŽle IAM dans votre compte AWS.

Les Ă©tapes pour crĂ©er un rĂŽle IAM figurent ci-dessous :

  1. CrĂ©ez un nouveau rĂŽle IAM : dans la console AWS, recherchez IAM, cliquez sur Roles, puis sur Create Role.

  2. Lorsque vous devez sĂ©lectionner le type d’entitĂ© de confiance, choisissez Another AWS account.

  3. Lorsqu’on vous demande de Specify accounts that can use this role, collez la valeur du champ de la feuille de calcul intitulĂ© Your AWS Account ID.

    (Utilisez votre ID de compte AWS, pas celui de Snowflake. L’ARN de Snowflake sera associĂ© Ă  ce rĂŽle IAM plus tard).

  4. Cliquez sur Next: Permissions.

  5. Si vous le souhaitez, définissez des autorisations (Attach permissions policies).

  6. Cliquez sur Next: Tags.

  7. Si vous le souhaitez, vous pouvez ajouter des balises.

  8. Cliquez sur Next: Review.

  9. Entrez un nom de rĂŽle.

    • Enregistrez le nom du rĂŽle dans le champ New IAM Role Name de la feuille de calcul.

  10. Cliquez sur le bouton Create role. AprĂšs avoir créé le rĂŽle :

    • Enregistrez le Role ARN dans le champ New IAM Role ARN de la feuille de calcul.

Créer le point de terminaison API Gateway¶

Avant de crĂ©er et de configurer votre API Gateway, choisissez si vous voulez utiliser un point de terminaison rĂ©gional ou privĂ©. Pour plus d’informations, voir Choix de votre type de point de terminaison : point de terminaison rĂ©gional vs point de terminaison privĂ©.

Si vous prĂ©voyez d’utiliser un point de terminaison privĂ©, vous avez besoin de l’ID du VPC (Virtual Private Cloud) que vous avez enregistrĂ© dans la feuille de calcul suivi.

Les Ă©tapes pour crĂ©er un point de terminaison API Gateway sont les suivantes :

  1. Dans la console de gestion AWS, sélectionnez API Gateway.

  2. Sélectionnez Create API.

  3. Sélectionnez le type de point de terminaison (régional ou privé).

    • Si vous voulez un point de terminaison rĂ©gional , alors :

      • Trouvez REST API et cliquez sur son bouton Build .

    • Si vous voulez un point de terminaison privĂ©, alors :

      • Trouvez REST API private et cliquez sur son bouton Build .

    Important

    Veillez à choisir REST API ou REST API private . Ne sélectionnez pas HTTP API ou une autre option.

  4. SĂ©lectionnez l’option New API .

  5. Saisissez un nom pour la nouvelle API.

    Enregistrez ce nom dans le champ New API Name de la feuille de calcul.

  6. Si on vous demande de sélectionner un Endpoint Type, sélectionnez Regional ou Private.

  7. Laissez le champ VPC Endpoint IDs vide.

  8. Cliquez sur le bouton Create API.

  9. Pour créer une ressource, cliquez sur Actions, puis sur Create Resource.

    Enregistrez le nom de la ressource dans le champ API Gateway Resource Name de la feuille de calcul.

    Cliquez sur le bouton Create Resource. L’écran affiche No methods defined for the resource.

  10. Pour créer une nouvelle méthode, cliquez sur Actions et sélectionnez Create Method.

    Dans le petit menu déroulant situé sous le nom de la ressource, sélectionnez POST puis cliquez sur la coche grise située à cÎté.

  11. Integration type devrait ĂȘtre Lambda Function. Si ce n’est pas dĂ©jĂ  sĂ©lectionnĂ©, sĂ©lectionnez-le.

  12. Cochez la case Use Lambda Proxy integration.

    Il est important de sĂ©lectionner une intĂ©gration de proxy Lambda, car le JSON sans intĂ©gration du proxy Lambda serait diffĂ©rent du JSON avec intĂ©gration du proxy Lambda. Pour plus d’informations sur l’intĂ©gration du proxy Lambda, voir la documentation AWS pour :

  13. Dans le champ Lambda Function , collez le Lambda Function Name que vous avez enregistré dans la feuille de calcul.

  14. Cliquez sur le bouton Save.

  15. Cliquez sur le bouton Actions et sĂ©lectionnez l’action Deploy API.

  16. Sélectionnez ou créez une zone de préparation. Cliquez sur Deploy.

  17. Sous le nom de la ressource, vous devriez voir POST.

    Si ce n’est pas le cas, vous devrez peut-ĂȘtre dĂ©velopper l’arbre des ressources en cliquant sur le triangle qui se trouve Ă  gauche du nom de la ressource.

  18. Cliquez sur POST, puis enregistrez l” Invoke URL de la requĂȘte POST dans le champ Resource Invocation URL de la feuille de calcul.

    Assurez-vous que l’URL d’appel inclut le nom de la ressource que vous avez créée ; si ce n’est pas le cas, vous avez peut-ĂȘtre cliquĂ© sur l’URL d’appel pour la zone de prĂ©paration plutĂŽt que pour la ressource.

  19. Cliquez sur Save Changes.

Testez la passerelle API Gateway¶

Vérifiez que la passerelle API Gateway peut appeler votre fonction Lambda.

  1. Suivez les instructions d’AWSpour tester .

  2. A l’étape appropriĂ©e des instructions AWS, collez le texte suivant dans le Request Body :

    {
        "data":
            [
                [0, 43, "page"],
                [1, 42, "life, the universe, and everything"]
            ]
    }
    
    Copy

AprĂšs avoir exĂ©cutĂ© le test, vous devriez voir apparaĂźtre Request, Status, Latency, and Response Body sur la droite (vous devrez peut-ĂȘtre faire dĂ©filer la page pour le voir).

Si le statut retourné est 200, votre passerelle API Gateway a appelé la bonne fonction Lambda.

(Cette Ă©tape de vĂ©rification saute l’authentification et ne permet donc pas de dĂ©couvrir les problĂšmes de permissions).

Protéger votre point de terminaison Amazon API Gateway¶

Pour un aperçu de la sécurisation des points de terminaison du service proxy, comme les point de terminaison Amazon API Gateway, voir Sécuriser le service proxy.

Pour sĂ©curiser un point de terminaison Amazon API Gateway :

  1. À ce stade, vous devriez ĂȘtre sur l’écran qui affiche vos informations sur API Gateway, et vous devriez voir votre ressource et la mĂ©thode POST.

    Si vous n’y ĂȘtes pas dĂ©jĂ , faites ce qui suit :

    1. Dans la console de gestion AWS, allez Ă  la page API Gateway.

    2. Sélectionnez votre passerelle API Gateway.

    3. Dans le volet de gauche, cliquez sur Resources.

    4. Cliquez sur la mĂ©thode POST . (Si vous ne voyez pas cela, dĂ©veloppez l’arbre des ressources en cliquant sur le triangle Ă  gauche de la ressource dans le panneau Resources , qui est gĂ©nĂ©ralement le deuxiĂšme panneau Ă  partir de la gauche).

  2. Copiez l” Method Request ARN de la case Method Request vers le champ Method Request ARN de la feuille de calcul.

  3. Cliquez sur le titre Method Request.

  4. Cliquez sur le symbole d’édition en regard de Authorization et sĂ©lectionnez AWS_IAM pour prĂ©ciser que la demande de mĂ©thode nĂ©cessite une autorisation AWS_IAM.

    Cliquez sur la petite coche à cÎté du menu pour confirmer votre choix.

  5. Pour dĂ©finir la politique de ressource pour la passerelle API Gateway afin de spĂ©cifier qui est autorisĂ© Ă  appeler le point de terminaison de la passerelle, cliquez sur Resource Policy dans la colonne de gauche de l’API.

    • Point de terminaison rĂ©gional :

      Collez le modĂšle de politique de ressources ci-dessous dans l’éditeur de politique de ressources au format JSON, puis remplacez les caractĂšres de remplissage par les valeurs appropriĂ©es de la feuille de calcul, comme dĂ©crit ci-dessous.

      {
          "Version": "2012-10-17",
          "Statement":
          [
              {
              "Effect": "Allow",
              "Principal":
                  {
                  "AWS": "arn:aws:sts::<12-digit-number>:assumed-role/<external_function_role>/snowflake"
                  },
              "Action": "execute-api:Invoke",
              "Resource": "<method_request_ARN>"
              }
          ]
      }
      
      Copy

      Remplacez les parties suivantes de la politique de ressource :

      • Remplacez le <numĂ©ro Ă  12 chiffres> par la valeur dans le champ Your AWS Account ID, que vous avez enregistrĂ© dans la feuille de calcul.

      • Remplacez <external_function_role> par le nom de rĂŽle du champ New IAM Role Name de la feuille de calcul.

        Par exemple, si votre nom de rĂŽle AWS est :

        arn:aws:iam::987654321098:role/MyNewIAMRole
        
        Copy

        alors le rĂ©sultat devrait ĂȘtre :

        "AWS": "arn:aws:sts::987654321098:assumed-role/MyNewIAMRole/snowflake"
        
        Copy
      • Remplacez <method_request_ARN> par la valeur du champ Method Request ARN de la feuille de calcul. Il s’agit de l’ARN de la mĂ©thode POST de la ressource.

        Note

        La dĂ©finition de la ressource sur l’ARN de la demande de mĂ©thode spĂ©cifie que l’API Gateway doit autoriser les appels uniquement vers la ressource spĂ©cifiĂ©e. Il est possible de spĂ©cifier un sous-ensemble de l’ARN de la demande de mĂ©thode comme prĂ©fixe, ce qui permet d’appeler plusieurs ressources Ă  partir de la mĂȘme API Gateway.

        Par exemple, si l’ARN de la demande de mĂ©thode est :

        arn:aws:execute-api:us-west-1:123456789012:a1b2c3d4e5/*/POST/MyResource
        
        Copy

        alors vous pouvez spĂ©cifier simplement le prĂ©fixe suivant :

        arn:aws:execute-api:us-west-1:123456789012:a1b2c3d4e5/*
        
        Copy
      • Utilisateurs du GovCloud du gouvernement amĂ©ricain uniquement :

        • Mettez Ă  jour l’ARN de la demande de mĂ©thode pour utiliser aws-us-gov, par exemple :

          arn:aws-us-gov:execute-api:us-gov-west-1:123456789012:a1b2c3d4e5/*
          
          Copy
        • Assurez-vous que vous utilisez une rĂ©gion GovCloud, par exemple us-gov-west-1.

    • Point de terminaison privĂ© :

      Collez le modĂšle de politique de ressources ci-dessous dans l’éditeur de politique de ressources, puis remplacez les caractĂšres de remplissage par les valeurs appropriĂ©es de la feuille de calcul, comme dĂ©crit ci-dessous.

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:sts::<12-digit-number>:assumed-role/<external_function_role>/snowflake"
                  },
                  "Action": "execute-api:Invoke",
                  "Resource": "<method_request_ARN>",
                  "Condition": {
                      "StringEquals": {
                          "aws:sourceVpc": "<VPC_ID>"
                      }
                  }
              }
          ]
      }
      
      Copy

      Remplacez les parties suivantes de la politique de ressource :

      • Remplacez les valeurs de <12-digit-number>, <external_function_role> et <method_request_ARN> comme dĂ©crit ci-dessus pour un point de terminaison rĂ©gional.

      • Remplacez la valeur de <VPC_ID> par l’ID du VPC Snowflake de votre rĂ©gion, qui doit ĂȘtre enregistrĂ© dans le champ Snowflake VPC ID de la feuille de calcul.

      • Utilisateurs du GovCloud du gouvernement amĂ©ricain uniquement :

        • Mettez Ă  jour l’ARN de la demande de mĂ©thode pour utiliser aws-us-gov, par exemple :

          arn:aws-us-gov:execute-api:us-gov-west-1:123456789012:a1b2c3d4e5/*
          
          Copy
        • Assurez-vous que vous utilisez une rĂ©gion GovCloud, par exemple us-gov-west-1.

  6. Cliquez sur Save pour enregistrer la politique de ressources.

  7. DĂ©ployez l’API mise Ă  jour. Pour ce faire, cliquez sur le nom de l’API dans le fil d’Ariane en haut de la page. Cliquez sur Actions puis sur Deploy API. SĂ©lectionnez votre zone de prĂ©paration de dĂ©ploiement et cliquez sur Deploy.

Dans l’étape suivante, vous crĂ©ez un objet d’intĂ©gration API Snowflake. Ne fermez pas la fenĂȘtre de la console de gestion AWS maintenant ; vous devrez y revenir plus tard.

Étape suivante¶

Étape 3 : CrĂ©er l’intĂ©gration API pour AWS dans Snowflake