CREATE API INTEGRATION¶
CrĂ©e un nouvel objet dâintĂ©gration API dans le compte ou remplace une intĂ©gration API existante.
Un objet dâintĂ©gration API stocke des informations sur un service accessible via HTTPS API, y compris des informations sur ce qui suit :
Fournisseur de plateforme cloud (tel quâAmazon AWS).
Type de service (dans le cas oĂč le fournisseur de plateforme Cloud propose plusieurs types de service proxy).
Identifiants et informations dâidentification dâaccĂšs du service externe disposant de privilĂšges suffisants pour utiliser le service. Par exemple, sur AWS, lâARN (Amazon Resource Name) du rĂŽle sert dâidentificateur et dâidentifiants dâaccĂšs.
Lorsque cet utilisateur dispose des privilĂšges appropriĂ©s, Snowflake peut lâutiliser pour accĂ©der aux ressources. Par exemple, il peut sâagir dâune instance du service proxy HTTPS natif de la plateforme cloud, par exemple une instance dâAmazon API Gateway.
Un objet dâintĂ©gration API spĂ©cifie Ă©galement les points de terminaison et les ressources autorisĂ©s (et Ă©ventuellement bloquĂ©s) sur ces services.
- Voir aussi :
ALTER API INTEGRATION , DROP INTEGRATION , SHOW INTEGRATIONS , Ăcriture de fonctions externes , CREATE EXTERNAL FUNCTION
Syntaxe¶
La syntaxe est différente pour chaque API externe.
Pour Amazon API Gateway¶
CREATE [ OR REPLACE ] API INTEGRATION [ IF NOT EXISTS ] <integration_name>
API_PROVIDER = { aws_api_gateway | aws_private_api_gateway | aws_gov_api_gateway | aws_gov_private_api_gateway }
API_AWS_ROLE_ARN = '<iam_role>'
[ API_KEY = '<api_key>' ]
API_ALLOWED_PREFIXES = ('<...>')
ENABLED = { TRUE | FALSE }
[ COMMENT = '<string_literal>' ]
;
Notez que ni aws_api_gateway
ni aws_private_api_gateway
ni aws_gov_api_gateway
ni aws_gov_private_api_gateway
ne doivent ĂȘtre entre guillemets.
Pour Azure API Management¶
CREATE [ OR REPLACE ] API INTEGRATION [ IF NOT EXISTS ] <integration_name>
API_PROVIDER = azure_api_management
AZURE_TENANT_ID = '<tenant_id>'
AZURE_AD_APPLICATION_ID = '<azure_application_id>'
[ API_KEY = '<api_key>' ]
API_ALLOWED_PREFIXES = ( '<...>' )
[ API_BLOCKED_PREFIXES = ( '<...>' ) ]
ENABLED = { TRUE | FALSE }
[ COMMENT = '<string_literal>' ]
;
Notez que azure_api_management
ne doit pas ĂȘtre entre guillemets.
Pour Google Cloud API Gateway¶
CREATE [ OR REPLACE ] API INTEGRATION [ IF NOT EXISTS ] <integration_name>
API_PROVIDER = google_api_gateway
GOOGLE_AUDIENCE = '<google_audience_claim>'
API_ALLOWED_PREFIXES = ( '<...>' )
[ API_BLOCKED_PREFIXES = ( '<...>' ) ]
ENABLED = { TRUE | FALSE }
[ COMMENT = '<string_literal>' ]
;
Notez que google_api_gateway
ne doit pas ĂȘtre entre guillemets.
Pour référentiel Git¶
CREATE [ OR REPLACE ] API INTEGRATION [ IF NOT EXISTS ] <integration_name>
API_PROVIDER = git_https_api
API_ALLOWED_PREFIXES = ('<...>')
[ API_BLOCKED_PREFIXES = ('<...>') ]
[ ALLOWED_AUTHENTICATION_SECRETS = ( { <secret_name> [, <secret_name>, ... ] | all | none } ) ]
ENABLED = { TRUE | FALSE }
[ COMMENT = '<string_literal>' ]
;
Notez que git_https_api
ne doit pas ĂȘtre entre guillemets.
ParamÚtres requis¶
Pour Amazon API Gateway¶
integration_name
SpĂ©cifie le nom de lâintĂ©gration API. Ce nom suit les rĂšgles de Identificateurs dâobjet. Le nom doit ĂȘtre unique parmi les intĂ©grations API de votre compte.
API_PROVIDER = { aws_api_gateway | aws_private_api_gateway | aws_gov_api_gateway | aws_gov_private_api_gateway }
Spécifie le type de service proxy HTTPS. Les valeurs valides sont :
aws_api_gateway
: pour Amazon API Gateway utilisant des points de terminaison régionaux.aws_private_api_gateway
: pour Amazon API Gateway utilisant des points de terminaison privés.aws_gov_api_gateway
: pour Amazon API Gateway utilisant des points de terminaison GovCloud du gouvernement américain.aws_gov_private_api_gateway
: pour Amazon API Gateway utilisant des points de terminaison GovCloud du gouvernement américain qui sont également des points de terminaison privés.
API_AWS_ROLE_ARN = iam_role
Pour Amazon AWS, il sâagit de lâARN (Amazon Resource Name) dâun rĂŽle de plate-forme Cloud.
API_ALLOWED_PREFIXES = (...)
Limite explicitement les fonctions externes qui utilisent lâintĂ©gration pour rĂ©fĂ©rencer un ou plusieurs points de terminaison de service proxy HTTPS (par exemple, Amazon API Gateway) et les ressources au sein de ces proxy. Prend en charge une liste dâURLs sĂ©parĂ©e par des virgules, qui sont traitĂ©es comme des prĂ©fixes (pour plus de dĂ©tails, voir ci-dessous).
Chaque URL dans
API_ALLOWED_PREFIXES = (...)
est traitée comme un préfixe. Par exemple, si vous spécifiez :https://xyz.amazonaws.com/production/
cela signifie que toutes les ressources sous
https://xyz.amazonaws.com/production/
sont autorisés. Par exemple, ce qui suit est autorisé :
https://xyz.amazonaws.com/production/ml1
Pour maximiser la sécurité, vous devez restreindre les emplacements autorisés aussi étroitement que possible.
ENABLED = { TRUE | FALSE }
SpĂ©cifie si cette intĂ©gration API est activĂ©e ou dĂ©sactivĂ©e. Si lâintĂ©gration API est dĂ©sactivĂ©e, toute fonction externe qui en dĂ©pend ne fonctionnera pas.
La valeur est insensible Ă la casse.
La valeur par défaut est
TRUE
.
Pour Azure API Management Service¶
integration_name
SpĂ©cifie le nom de lâintĂ©gration API. Ce nom suit les rĂšgles de Identificateurs dâobjet. Le nom doit ĂȘtre unique parmi les intĂ©grations API de votre compte.
API_PROVIDER = azure_api_management
SpĂ©cifie que cette intĂ©gration est utilisĂ©e avec les services Azure API Management. Nâutilisez pas de guillemets autour de
azure_api_management
.AZURE_TENANT_ID = tenant_id
SpĂ©cifie lâ ID de votre client Office 365 auquel appartiennent toutes les instances Azure API Management. Une intĂ©gration API peut sâauthentifier auprĂšs dâun seul client. Les emplacements de stockage autorisĂ©s et bloquĂ©s doivent donc faire rĂ©fĂ©rence aux instances API Management qui appartiennent toutes Ă ce client.
Pour trouver votre ID de client, connectez-vous au portail Azure et sĂ©lectionnez Azure Active Directory » Properties. Lâ ID de client sâaffiche dans le champ Tenant ID.
AZURE_AD_APPLICATION_ID = azure_application_id
« ID (client) de lâapplication » de lâapplication Azure AD (Active Directory) pour votre service Ă distance. Si vous avez suivi les instructions de CrĂ©ation de fonctions externes sur Microsoft Azure, alors il sâagit du
Azure Function App AD Application ID
que vous avez enregistré dans la feuille de calcul dans ces instructions.API_ALLOWED_PREFIXES = (...)
Limite explicitement les fonctions externes qui utilisent lâintĂ©gration pour rĂ©fĂ©rencer un ou plusieurs points de terminaison de service proxy HTTPS (par exemple, services Azure API Management) et les ressources au sein de ces proxy. Prend en charge une liste dâURLs sĂ©parĂ©e par des virgules, qui sont traitĂ©es comme des prĂ©fixes (pour plus de dĂ©tails, voir ci-dessous).
Chaque URL dans
API_ALLOWED_PREFIXES = (...)
est traitée comme un préfixe. Par exemple, si vous spécifiez :https://my-external-function-demo.azure-api.net/my-function-app-name
cela signifie que toutes les ressources sous
https://my-external-function-demo.azure-api.net/my-function-app-name
sont autorisés. Par exemple, ce qui suit est autorisé :
https://my-external-function-demo.azure-api.net/my-function-app-name/my-http-trigger-function
Pour maximiser la sécurité, vous devez restreindre les emplacements autorisés aussi étroitement que possible.
ENABLED = { TRUE | FALSE }
SpĂ©cifie si cette intĂ©gration API est activĂ©e ou dĂ©sactivĂ©e. Si lâintĂ©gration API est dĂ©sactivĂ©e, toute fonction externe qui en dĂ©pend ne fonctionnera pas.
La valeur est insensible Ă la casse.
La valeur par défaut est
TRUE
.
Pour Google Cloud API Gateway¶
integration_name
SpĂ©cifie le nom de lâintĂ©gration API. Ce nom suit les rĂšgles de Identificateurs dâobjet. Le nom doit ĂȘtre unique parmi les intĂ©grations API de votre compte.
API_PROVIDER = google_api_gateway
Spécifie que cette intégration est utilisée avec Google Cloud. La seule valeur valide à cet effet est
google_api_gateway
. La valeur ne doit pas ĂȘtre entre guillemets.GOOGLE_AUDIENCE = google_audience
Ceci est utilisĂ© comme revendication dâaudience lors de la gĂ©nĂ©ration du JWT (jeton Web JSON) pour sâauthentifier auprĂšs de la Google API Gateway. Pour plus dâinformations sur lâauthentification avec Google, veuillez consulter la documentation sur lâauthentification du compte de service Google.
API_ALLOWED_PREFIXES = (...)
Limite explicitement les fonctions externes qui utilisent lâintĂ©gration pour rĂ©fĂ©rencer un ou plusieurs points de terminaison de service proxy HTTPS (par exemple, Google Cloud API Gateways) et les ressources au sein de ces proxy. Prend en charge une liste dâURLs sĂ©parĂ©e par des virgules, qui sont traitĂ©es comme des prĂ©fixes (pour plus de dĂ©tails, voir ci-dessous).
Chaque URL dans
API_ALLOWED_PREFIXES = (...)
est traitée comme un préfixe. Par exemple, si vous spécifiez :https://my-external-function-demo.uc.gateway.dev/x
cela signifie que toutes les ressources sous
https://my-external-function-demo.uc.gateway.dev/x
sont autorisés. Par exemple, ce qui suit est autorisé :
https://my-external-function-demo.uc.gateway.dev/x/y
Pour maximiser la sécurité, vous devez restreindre les emplacements autorisés aussi étroitement que possible.
ENABLED = { TRUE | FALSE }
SpĂ©cifie si cette intĂ©gration API est activĂ©e ou dĂ©sactivĂ©e. Si lâintĂ©gration API est dĂ©sactivĂ©e, toute fonction externe qui en dĂ©pend ne fonctionnera pas.
La valeur est insensible Ă la casse.
La valeur par défaut est
TRUE
.
Pour référentiel Git¶
Pour un exemple, voir CrĂ©er une API dâintĂ©gration pour interagir avec lâAPI du rĂ©fĂ©rentiel.
integration_name
SpĂ©cifie le nom de lâintĂ©gration API. Ce nom suit les rĂšgles de Identificateurs dâobjet. Le nom doit ĂȘtre unique parmi les intĂ©grations API de votre compte.
API_PROVIDER = git_https_api
Spécifie que cette intégration est utilisée avec CREATE GIT REPOSITORY pour créer une intégration avec un référentiel Git distant. La seule valeur valide à cet effet est
git_https_api
. La valeur ne doit pas ĂȘtre entre guillemets.API_ALLOWED_PREFIXES = (...)
Limite explicitement les requĂȘtes qui utilisent lâintĂ©gration pour rĂ©fĂ©rencer un ou plusieurs points de terminaison HTTPS et les ressources situĂ©es sous ces points de terminaison. Prend en charge une liste dâURLs sĂ©parĂ©e par des virgules, qui sont traitĂ©es comme des prĂ©fixes.
Snowflake prend en charge le HTTPS de toute URL de rĂ©fĂ©rentiel Git. Par exemple, vous pouvez spĂ©cifier une URL personnalisĂ©e vers un serveur Git dâentreprise au sein de votre propre domaine.
https://example.com/my-repo
Chaque URL dans
API_ALLOWED_PREFIXES = (...)
est traitée comme un préfixe. Par exemple, vous pouvez spécifier ce qui suit :https://github.com/my-account
Avec ce préfixe, toutes les ressources sous cete URL sont autorisées. Par exemple, ce qui suit est autorisé :
https://github.com/my-account/myproject
Pour maximiser la sécurité, vous devez restreindre les emplacements autorisés aussi étroitement que possible.
ENABLED = { TRUE | FALSE }
SpĂ©cifie si cette intĂ©gration API est activĂ©e ou dĂ©sactivĂ©e. Si lâintĂ©gration API est dĂ©sactivĂ©e, le rĂ©fĂ©rentiel Git ne sera pas accessible.
La valeur est insensible Ă la casse.
La valeur par défaut est
TRUE
.
ParamÚtres facultatifs¶
Pour toutes les intégrations¶
API_KEY = api_key
La clĂ© API (Ă©galement appelĂ©e « clĂ© dâabonnement »).
API_BLOCKED_PREFIXES = (...)
RĂ©pertorie les points de terminaison et les ressources du service proxy HTTPS pour lesquels lâappel Ă partir de Snowflake nâest pas autorisĂ©.
Les valeurs possibles pour les emplacements suivent les mĂȘmes rĂšgles que pour API_ALLOWED_PREFIXES ci-dessus.
API_BLOCKED_PREFIXES a prioritĂ© sur API_ALLOWED_PREFIXES. Si un prĂ©fixe correspond aux deux, il est bloquĂ©. En dâautres termes, Snowflake autorise toutes les valeurs qui correspondent Ă API_ALLOWED_PREFIXES sauf les valeurs qui correspondent Ă©galement Ă API_BLOCKED_PREFIXES.
Si une valeur est en dehors des API_ALLOWED_PREFIXES, vous nâavez pas besoin de la bloquer explicitement.
COMMENT = 'string_literal'
Description de lâintĂ©gration.
Pour référentiel Git¶
Outre les paramĂštres pour toutes les intĂ©grations, utilisez les paramĂštres suivants lorsque vous utilisez lâintĂ©gration pour vous connecter Ă un rĂ©fĂ©rentiel Git distant en dĂ©finissant le paramĂštre API_PROVIDER de lâintĂ©gration sur git_https_api
.
ALLOWED_AUTHENTICATION_SECRETS = ( secret_name [, secret_name ... ] | all | none )
SpĂ©cifie les secrets que lâUDF ou le code du gestionnaire de procĂ©dure peut utiliser lors de lâaccĂšs au rĂ©fĂ©rentiel Git Ă la valeur API_ALLOWED_PREFIXES. Vous spĂ©cifiez un secret de cette liste lors de la spĂ©cification des identifiants Git avec le paramĂštre GIT_CREDENTIALS.
La valeur de ce paramĂštre doit ĂȘtre lâune des suivantes :
Un ou plusieurs noms entiĂšrement qualifiĂ©s de secret Snowflake pour autoriser nâimporte lequel des secrets de la liste.
(Par défaut)
all
pour autoriser tout secret.none
pour nâautoriser aucun secret.
Le paramĂštre ALLOWED_API_AUTHENTICATION_INTEGRATIONS peut Ă©galement spĂ©cifier des secrets autorisĂ©s. Pour plus dâinformations, voir Notes sur lâutilisation.
Pour des informations de référence sur les secrets, voir CREATE SECRET.
Exigences en matiĂšre de contrĂŽle dâaccĂšs¶
Un rÎle utilisé pour exécuter cette opération doit au minimum disposer des privilÚges suivants :
PrivilĂšge |
Objet |
Remarques |
---|---|---|
CREATE INTEGRATION |
Compte |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
Pour obtenir des instructions sur la crĂ©ation dâun rĂŽle personnalisĂ© avec un ensemble spĂ©cifique de privilĂšges, voir CrĂ©ation de rĂŽles personnalisĂ©s.
Pour des informations gĂ©nĂ©rales sur les rĂŽles et les privilĂšges accordĂ©s pour effectuer des actions SQL sur des objets sĂ©curisables, voir Aperçu du contrĂŽle dâaccĂšs.
Notes sur lâutilisation¶
Seuls les rĂŽles Snowflake avec des privilĂšges OWNERSHIP ou USAGE sur lâintĂ©gration API peuvent utiliser directement lâintĂ©gration API, par exemple en crĂ©ant une fonction externe qui spĂ©cifie cette intĂ©gration API.
Un objet dâintĂ©gration API est liĂ© Ă un compte de plate-forme Cloud spĂ©cifique et Ă un rĂŽle au sein de ce compte, mais pas Ă une URL de proxy HTTPS spĂ©cifique. Vous pouvez crĂ©er plusieurs instances dâun service proxy HTTPS dans un compte de fournisseur de Cloud et vous pouvez utiliser la mĂȘme intĂ©gration API pour vous authentifier auprĂšs de plusieurs services proxy dans ce compte.
Votre compte Snowflake peut avoir plusieurs objets dâintĂ©gration API, par exemple, pour diffĂ©rents comptes de plate-forme Cloud.
Plusieurs fonctions externes peuvent utiliser le mĂȘme objet dâintĂ©gration API, et donc le mĂȘme service proxy HTTPS.
Concernant les métadonnées :
Attention
Les clients doivent sâassurer quâaucune donnĂ©e personnelle (autre que pour un objet utilisateur), donnĂ©e sensible, donnĂ©e Ă exportation contrĂŽlĂ©e ou autre donnĂ©e rĂ©glementĂ©e nâest saisie comme mĂ©tadonnĂ©e lors de lâutilisation du service Snowflake. Pour plus dâinformations, voir Champs de mĂ©tadonnĂ©es dans Snowflake.
Les clauses
OR REPLACE
etIF NOT EXISTS
sâexcluent mutuellement. Elles ne peuvent pas ĂȘtre utilisĂ©es dans la mĂȘme instruction.Les instructions CREATE OR REPLACE <objet> sont atomiques. En dâautres termes, lorsquâun objet est remplacĂ©, lâancien objet est supprimĂ© et le nouvel objet est créé dans une seule transaction.
Exemples¶
Amazon API Gateway¶
Lâexemple suivant montre la crĂ©ation dâune intĂ©gration API et lâutilisation de cette intĂ©gration API dans une instruction CREATE EXTERNAL FUNCTION suivante :
CREATE OR REPLACE API INTEGRATION demonstration_external_api_integration_01
API_PROVIDER = aws_api_gateway
API_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/my_cloud_account_role'
API_ALLOWED_PREFIXES = ('https://xyz.execute-api.us-west-2.amazonaws.com/production')
ENABLED = TRUE;
CREATE OR REPLACE EXTERNAL FUNCTION local_echo(string_col VARCHAR)
RETURNS VARIANT
API_INTEGRATION = demonstration_external_api_integration_01
AS 'https://xyz.execute-api.us-west-2.amazonaws.com/production/remote_echo';
Référentiel Git¶
Pour un exemple dâintĂ©gration API utilisĂ©e pour intĂ©grer un rĂ©fĂ©rentiel Git, voir CrĂ©er une API dâintĂ©gration pour interagir avec lâAPI du rĂ©fĂ©rentiel.