Tutoriel : Créer et publier un produit
S’APPLIQUE À : Tous les niveaux de Gestion des API
Dans Gestion des API Azure, un produit contient une ou plusieurs API, un quota et des conditions d’utilisation. Une fois le produit publié, les développeurs peuvent s’y abonner et commencer à utiliser ses API.
Dans ce tutoriel, vous allez apprendre à :
- Créer et publier un produit
- Ajouter une API au produit
- Accéder aux API du produit
Prérequis
- Apprenez la terminologie relative à Gestion des API Azure.
- Suivez le guide de démarrage rapide suivant : Créer une instance du service Gestion des API Azure.
- Effectuez également toutes les étapes du tutoriel suivant : Importer et publier votre première API.
Créer et publier un produit
Connectez-vous au portail Azure et accédez à votre instance de Gestion des API.
Dans le volet de navigation gauche, sélectionnez Produits>+ Ajouter.
Dans la fenêtre Ajouter un produit, entrez les valeurs décrites dans le tableau suivant pour créer votre produit.
Nom Description Nom complet Le nom qui doit apparaître dans le portail des développeurs. Description Spécifiez des informations sur le produit, comme son objectif, les API auxquelles il donne accès ainsi que d’autres informations détaillées. État Sélectionnez Publié si vous voulez publier le produit sur le portail des développeurs. Avant que les développeurs puissent découvrir les API d’un produit, ce produit doit être publié. Par défaut, les nouveaux produits ne sont pas publiés. Nécessite un abonnement Sélectionnez si un utilisateur doit s’abonner pour utiliser le produit (le produit est protégé) et si une clé d’abonnement doit être utilisée pour accéder aux API du produit. Si un abonnement n’est pas obligatoire (le produit est ouvert), une clé d’abonnement n’est pas nécessaire pour accéder aux API du produit. Voir Accès aux API du produit plus loin dans cet article. Nécessite une approbation Sélectionnez cette option si vous voulez qu’un administrateur révise et accepte ou refuse les tentatives d’abonnement à ce produit. Si cette option n’est pas sélectionnée, les tentatives d’abonnement sont automatiquement approuvées. Limite du nombre d’abonnements Si vous le souhaitez, limitez le nombre d’abonnements simultanés. Conditions légales Vous pouvez inclure les conditions d’utilisation que les abonnés doivent accepter pour pouvoir utiliser le produit. API Sélectionnez une ou plusieurs API. Vous pouvez aussi ajouter des API après avoir créé le produit. Pour plus d’informations, consultez Ajouter des API à un produit plus loin dans cet article.
Si le produit est ouvert (ne nécessite pas d’abonnement), vous pouvez uniquement ajouter une API qui n’est pas associée à un autre produit ouvert.Sélectionnez Créer pour créer votre produit.
Attention
Faites attention lors de la configuration d’un produit qui ne nécessite pas d’abonnement. Cette configuration peut être trop permissive et rendre les API du produit plus vulnérables à certaines menaces de sécurité des API.
Ajouter des configurations
Poursuivez la configuration du produit après l’avoir enregistré. Dans votre instance Gestion des API, sélectionnez le produit dans la fenêtre Produits. Ajouter ou mettre à jour :
Élément | Description |
---|---|
Paramètres | Métadonnées et état du produit |
API | API associées au produit |
Stratégies | Stratégies appliquées aux API du produit |
Contrôle d’accès | Visibilité du produit pour les développeurs ou les invités |
Abonnements | Abonnés au produit |
Ajout d’API à un produit
Les produits sont des associations d’une ou de plusieurs API. Vous pouvez inclure de nombreuses API et les proposer aux développeurs dans le portail des développeurs. Lors de la création du produit, vous pouvez ajouter une ou plusieurs API existantes. Vous pouvez aussi ajouter des API au produit ultérieurement, à partir de la page Paramètres des produits ou lors de la création d’une API.
Ajouter une API à un produit existant
- Dans le volet de navigation gauche de votre instance du service Gestion des API, sélectionnez Produits.
- Sélectionnez un produit, puis sélectionnez API.
- Sélectionnez + Ajouter API.
- Sélectionnez une ou plusieurs API, puis Sélectionner.
Accès aux API du produit
Une fois que vous avez publié un produit, les développeurs peuvent accéder aux API. Selon la configuration du produit, ils devront peut-être s’abonner au produit pour y accéder.
Produit protégé : Les développeurs doivent d’abord s’abonner à un produit protégé pour avoir accès aux API de ce produit. Quand ils s’abonnent, ils obtiennent une clé d’abonnement qui leur permet d’accéder à toutes les API de ce produit. Si vous avez créé l’instance Gestion des API, vous êtes abonné à chaque produit par défaut, car vous êtes déjà administrateur. Pour plus d’informations, consultez Abonnements dans Gestion des API Azure.
Lorsqu’un client effectue une demande d’API avec une clé d’abonnement de produit valide, Gestion des API traite la demande et autorise l’accès dans le contexte du produit. Les stratégies et les règles de contrôle d’accès configurées pour le produit peuvent être appliquées.
Conseil
Vous pouvez créer ou mettre à jour l’abonnement de l’utilisateur à un produit avec des clés d’abonnement personnalisées via une API REST ou une commande PowerShell.
Produit ouvert : Les développeurs peuvent accéder aux API d’un produit ouvert sans clé d’abonnement. Toutefois, vous pouvez configurer d’autres mécanismes pour sécuriser l’accès client aux API, notamment OAuth 2.0, des certificats clients et la restriction des adresses IP des appelants.
Notes
Les produits ouverts ne sont pas listés dans le portail des développeurs. Les développeurs ne peuvent donc pas s’informer sur ces produits, ni s’y abonner. Ils ne sont visibles que par le groupe Administrateurs. Vous devez utiliser un autre mécanisme pour informer les développeurs sur les API accessibles sans clé d’abonnement.
Lorsqu’un client effectue une demande d’API sans clé d’abonnement :
Gestion des API vérifie si l’API est associée à un produit ouvert. Une API peut être associée au maximum à un produit ouvert.
Si le produit ouvert existe, il traite ensuite la demande dans le contexte de ce produit ouvert. Les stratégies et les règles de contrôle d’accès configurées pour le produit ouvert peuvent être appliquées.
Pour plus d’informations, consultez Traitement des requêtes par Gestion des API avec ou sans clé d’abonnement.
Étapes suivantes
Dans ce didacticiel, vous avez appris à :
- Créer et publier un produit
- Ajouter une API au produit
- Accéder aux API du produit
Passez au tutoriel suivant :
Dans cet article, vous utilisez Terraform pour créer une instance Gestion des API Azure, une API, un produit, un groupe et des associations entre le produit et l’API, ainsi que le produit et le groupe.
Terraform permet la définition, l’aperçu et le déploiement d’une infrastructure cloud. Terraform vous permet de créer des fichiers de configuration à l’aide de la syntaxe HCL. La syntaxe HCL vous permet de spécifier un fournisseur de services cloud, tel qu’Azure, et les éléments qui composent votre infrastructure cloud. Après avoir créé vos fichiers de configuration, vous créez un plan d’exécution qui vous permet d’afficher un aperçu de vos modifications d’infrastructure avant leur déploiement. Une fois que vous avez vérifié les modifications, vous appliquez le plan d’exécution pour déployer l’infrastructure.
- Spécifiez la version requise de Terraform et les fournisseurs requis.
- Définissez des variables pour le préfixe du nom du groupe de ressources, l’emplacement du groupe de ressources, ainsi que le format et la valeur du contenu pour l'importation de la définition de l'API.
- Créez un groupe de ressources avec un nom aléatoire.
- Créez un service Gestion des API avec un nom aléatoire.
- Créez une API avec un nom aléatoire.
- Créez un produit avec un nom aléatoire dans le service Gestion des API.
- Créez un groupe avec un nom aléatoire.
- Associez l’API au produit.
- Associez le groupe au produit.
- Affichez les valeurs aléatoires telles que les noms du groupe de ressources, du service Gestion des API, de l’API, du produit et du groupe.
Prérequis
Créer un compte Azure avec un abonnement actif. Vous pouvez créer un compte gratuitement.
Installez et configurez Terraform.
Implémenter le code Terraform
Notes
L’exemple de code de cet article se trouve dans le dépôt GitHub Azure Terraform. Vous pouvez afficher le fichier journal contenant les résultats des tests des versions actuelles et précédentes de Terraform.
Consultez d’autres articles et exemples de code montrant comment utiliser Terraform pour gérer des ressources Azure.
Créez un répertoire dans lequel tester et exécuter l’exemple de code Terraform et définissez-le en tant que répertoire actif.
Créez un fichier nommé
main.tf
et insérez le code suivant :resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_string" "apim_service_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_api_management" "apim_service" { name = "${random_string.apim_service_name.result}-apim-service" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name publisher_name = "Example Publisher" publisher_email = "publisher@example.com" sku_name = "Developer_1" tags = { Environment = "Example" } policy { xml_content = <<XML <policies> <inbound /> <backend /> <outbound /> <on-error /> </policies> XML } } resource "random_string" "api_name" { length = 8 lower = true numeric = false special = false upper = false } resource "random_string" "content_value" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_api_management_api" "api" { name = "${random_string.api_name.result}-api" resource_group_name = azurerm_resource_group.rg.name api_management_name = azurerm_api_management.apim_service.name revision = "1" display_name = "${random_string.api_name.result}-api" path = "example" protocols = ["https", "http"] description = "An example API" import { content_format = var.open_api_spec_content_format content_value = var.open_api_spec_content_value } } resource "random_string" "product_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_api_management_product" "product" { product_id = "${random_string.product_name.result}-product" resource_group_name = azurerm_resource_group.rg.name api_management_name = azurerm_api_management.apim_service.name display_name = "${random_string.product_name.result}-product" subscription_required = true approval_required = false published = true description = "An example Product" } resource "random_string" "group_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_api_management_group" "group" { name = "${random_string.group_name.result}-group" resource_group_name = azurerm_resource_group.rg.name api_management_name = azurerm_api_management.apim_service.name display_name = "${random_string.group_name.result}-group" description = "An example group" } resource "azurerm_api_management_product_api" "product_api" { resource_group_name = azurerm_resource_group.rg.name api_management_name = azurerm_api_management.apim_service.name product_id = azurerm_api_management_product.product.product_id api_name = azurerm_api_management_api.api.name } resource "azurerm_api_management_product_group" "product_group" { resource_group_name = azurerm_resource_group.rg.name api_management_name = azurerm_api_management.apim_service.name product_id = azurerm_api_management_product.product.product_id group_name = azurerm_api_management_group.group.name }
Créez un fichier nommé
outputs.tf
et insérez le code suivant :output "resource_group_name" { value = azurerm_resource_group.rg.name } output "apim_service_name" { value = azurerm_api_management.apim_service.name } output "api_name" { value = azurerm_api_management_api.api.name } output "product_name" { value = azurerm_api_management_product.product.product_id } output "group_name" { value = azurerm_api_management_group.group.name } output "service_id" { description = "The ID of the API Management Service created" value = azurerm_api_management.apim_service.id } output "gateway_url" { description = "The URL of the Gateway for the API Management Service" value = azurerm_api_management.apim_service.gateway_url } output "service_public_ip_addresses" { description = "The Public IP addresses of the API Management Service" value = azurerm_api_management.apim_service.public_ip_addresses } output "api_outputs" { description = "The IDs, state, and version outputs of the APIs created" value = { id = azurerm_api_management_api.api.id is_current = azurerm_api_management_api.api.is_current is_online = azurerm_api_management_api.api.is_online version = azurerm_api_management_api.api.version version_set_id = azurerm_api_management_api.api.version_set_id } } output "product_id" { description = "The ID of the Product created" value = azurerm_api_management_product.product.id } output "product_api_id" { description = "The ID of the Product/API association created" value = azurerm_api_management_product_api.product_api.id } output "product_group_id" { description = "The ID of the Product/Group association created" value = azurerm_api_management_product_group.product_group.id }
Créez un fichier nommé
providers.tf
et insérez le code suivant :terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
Créez un fichier nommé
variables.tf
et insérez le code suivant :variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "open_api_spec_content_format" { type = string default = "swagger-link-json" description = "The format of the content from which the API Definition should be imported. Possible values are: openapi, openapi+json, openapi+json-link, openapi-link, swagger-json, swagger-link-json, wadl-link-json, wadl-xml, wsdl and wsdl-link." validation { condition = contains(["openapi", "openapi+json", "openapi+json-link", "openapi-link", "swagger-json", "swagger-link-json", "wadl-link-json", "wadl-xml", "wsdl", "wsdl-link"], var.open_api_spec_content_format) error_message = "open_api_spec_content_format must be one of the following: openapi, openapi+json, openapi+json-link, openapi-link, swagger-json, swagger-link-json, wadl-link-json, wadl-xml, wsdl and wsdl-link." } } variable "open_api_spec_content_value" { type = string default = "https://petstore3.swagger.io/api/v3/openapi.json" description = "The Content from which the API Definition should be imported. When a content_format of *-link-* is specified this must be a URL, otherwise this must be defined inline." }
Initialiser Terraform
Exécutez terraform init pour initialiser le déploiement Terraform. Cette commande télécharge le fournisseur Azure à utiliser pour la gestion de vos ressources Azure.
terraform init -upgrade
Points essentiels :
- Le paramètre
-upgrade
met à niveau les plug-ins de fournisseur nécessaires vers la version la plus récente qui est conforme aux contraintes de version de la configuration.
Créer un plan d’exécution Terraform
Exécutez terraform plan pour créer un plan d’exécution.
terraform plan -out main.tfplan
Points essentiels :
- La commande
terraform plan
crée un plan d’exécution, mais ne l’exécute pas. Au lieu de cela, elle détermine les actions nécessaires pour créer la configuration spécifiée dans vos fichiers de configuration. Ce modèle vous permet de vérifier si le plan d’exécution répond à vos attentes avant d’apporter des modifications aux ressources réelles. - Le paramètre facultatif
-out
vous permet de spécifier un fichier de sortie pour le plan. L’utilisation du paramètre-out
garantit que le plan que vous avez examiné correspond exactement à ce qui est appliqué.
Appliquer un plan d’exécution Terraform
Exécutez terraform apply pour appliquer le plan d’exécution à votre infrastructure cloud.
terraform apply main.tfplan
Points essentiels :
- La commande exemple
terraform apply
part du principe que vous avez préalablement exécutéterraform plan -out main.tfplan
. - Si vous avez spécifié un autre nom de fichier pour le paramètre
-out
, utilisez ce même nom dans l’appel àterraform apply
. - Si vous n’avez pas utilisé le paramètre
-out
, appelezterraform apply
sans aucun paramètre.
Vérifier les résultats
Exécutez az apim show
pour afficher la Gestion des API Azure :
az apim show --<apim_service_name> --<resource_group_name>
Nettoyer les ressources
Quand vous n’avez plus besoin des ressources créées par le biais de Terraform, effectuez les étapes suivantes :
Exécutez le plan Terraform et spécifiez l’indicateur
destroy
.terraform plan -destroy -out main.destroy.tfplan
Points essentiels :
- La commande
terraform plan
crée un plan d’exécution, mais ne l’exécute pas. Au lieu de cela, elle détermine les actions nécessaires pour créer la configuration spécifiée dans vos fichiers de configuration. Ce modèle vous permet de vérifier si le plan d’exécution répond à vos attentes avant d’apporter des modifications aux ressources réelles. - Le paramètre facultatif
-out
vous permet de spécifier un fichier de sortie pour le plan. L’utilisation du paramètre-out
garantit que le plan que vous avez examiné correspond exactement à ce qui est appliqué.
- La commande
Exécutez terraform apply pour appliquer le plan d’exécution.
terraform apply main.destroy.tfplan
Résoudre les problèmes liés à Terraform sur Azure
Résoudre les problèmes courants liés à l’utilisation de Terraform sur Azure.