Ă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 :
Créez un nouveau rÎle IAM : dans la console AWS, recherchez IAM, cliquez sur Roles, puis sur Create Role.
Lorsque vous devez sĂ©lectionner le type dâentitĂ© de confiance, choisissez Another AWS account.
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).
Cliquez sur Next: Permissions.
Si vous le souhaitez, définissez des autorisations (Attach permissions policies).
Cliquez sur Next: Tags.
Si vous le souhaitez, vous pouvez ajouter des balises.
Cliquez sur Next: Review.
Entrez un nom de rĂŽle.
Enregistrez le nom du rĂŽle dans le champ
New IAM Role Name
de la feuille de calcul.
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 :
Dans la console de gestion AWS, sélectionnez API Gateway.
Sélectionnez Create API.
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.
SĂ©lectionnez lâoption New API .
Saisissez un nom pour la nouvelle API.
Enregistrez ce nom dans le champ
New API Name
de la feuille de calcul.Si on vous demande de sélectionner un Endpoint Type, sélectionnez Regional ou Private.
Laissez le champ
VPC Endpoint IDs
vide.Cliquez sur le bouton Create API.
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.
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é.
Integration type devrait ĂȘtre Lambda Function. Si ce nâest pas dĂ©jĂ sĂ©lectionnĂ©, sĂ©lectionnez-le.
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 :
Dans le champ Lambda Function , collez le
Lambda Function Name
que vous avez enregistré dans la feuille de calcul.Cliquez sur le bouton Save.
Cliquez sur le bouton Actions et sĂ©lectionnez lâaction Deploy API.
Sélectionnez ou créez une zone de préparation. Cliquez sur Deploy.
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.
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.
Cliquez sur Save Changes.
Testez la passerelle API Gateway¶
Vérifiez que la passerelle API Gateway peut appeler votre fonction Lambda.
Suivez les instructions dâAWSpour tester .
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"] ] }
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 :
Ă 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 :
Dans la console de gestion AWS, allez Ă la page API Gateway.
Sélectionnez votre passerelle API Gateway.
Dans le volet de gauche, cliquez sur Resources.
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).
Copiez lâ Method Request ARN de la case Method Request vers le champ
Method Request ARN
de la feuille de calcul.Cliquez sur le titre Method Request.
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.
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>" } ] }
Remplacez les parties suivantes de la politique de ressource :
Remplacez le
<numéro à 12 chiffres>
par la valeur dans le champYour AWS Account ID
, que vous avez enregistré dans la feuille de calcul.Remplacez
<external_function_role>
par le nom de rĂŽle du champNew IAM Role Name
de la feuille de calcul.Par exemple, si votre nom de rĂŽle AWS est :
arn:aws:iam::987654321098:role/MyNewIAMRole
alors le rĂ©sultat devrait ĂȘtre :
"AWS": "arn:aws:sts::987654321098:assumed-role/MyNewIAMRole/snowflake"
Remplacez
<method_request_ARN>
par la valeur du champMethod 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
alors vous pouvez spécifier simplement le préfixe suivant :
arn:aws:execute-api:us-west-1:123456789012:a1b2c3d4e5/*
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/*
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>" } } } ] }
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/*
Assurez-vous que vous utilisez une région GovCloud, par exemple
us-gov-west-1
.
Cliquez sur Save pour enregistrer la politique de ressources.
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