Zelfstudie: Een product maken en publiceren
VAN TOEPASSING OP: Alle API Management-lagen
In Azure API Management bevat een product een of meer API's, een gebruiksquotum en de gebruiksvoorwaarden. Nadat een product is gepubliceerd, kunnen ontwikkelaars zich abonneren op het product en de API's van het product gaan gebruiken.
In deze zelfstudie leert u het volgende:
- Een product maken en publiceren
- Een API toevoegen aan het product
- Toegang tot product-API's
Vereisten
- Leer de terminologie van Azure API Management.
- Lees de volgende snelstartgids: Een Azure API Management-exemplaar maken.
- Voltooi tevens de volgende zelfstudie: Uw eerste API importeren en publiceren.
Een product maken en publiceren
Meld u aan bij Azure Portal en ga naar uw API Management-exemplaar.
Selecteer Producten>+ Toevoegen in het linkernavigatiedeelvenster.
Voer in het venster Add product (Product toevoegen) de waarden in die in de volgende tabel worden beschreven om uw product te maken.
Name Beschrijving Display name De naam zoals u wilt dat deze wordt weergegeven in de ontwikkelaarsportal. Beschrijving Geef informatie op over het product, zoals het doel, de API's waartoe het toegang geeft, en andere details. Provincie Selecteer Gepubliceerd als u het product wilt publiceren naar de ontwikkelaarsportal. Voordat de API's in een product kunnen worden gedetecteerd door ontwikkelaars, moet het product worden gepubliceerd. Nieuwe producten worden standaard niet gepubliceerd. Abonnement is vereist Selecteer of een gebruiker zich moet abonneren om het product te gebruiken (het product is beveiligd) en een abonnementssleutel moet worden gebruikt om toegang te krijgen tot de API's van het product. Als een abonnement niet is vereist (het product is geopend), is een abonnementssleutel niet vereist voor toegang tot de API's van het product. Zie Toegang tot product-API's verderop in dit artikel. Goedkeuring vereist Selecteer dit als u wilt dat een beheerder abonnementspogingen voor dit product beoordeelt en accepteert of weigert. Als dit niet geselecteerd is, worden abonnementspogingen automatisch goedgekeurd. Limiet voor het aantal abonnementen U kunt desgewenst het aantal gelijktijdige abonnementen beperken. Juridische voorwaarden U kunt ook de gebruiksvoorwaarden voor het product opnemen, die abonnees moeten accepteren om het product te kunnen gebruiken. API's Selecteer een of meer API's. U kunt ook API's toevoegen na het maken van het product. Zie API's toevoegen aan een product verderop in dit artikel voor meer informatie.
Als het product is geopend (hiervoor is geen abonnement vereist), kunt u alleen een API toevoegen die niet is gekoppeld aan een ander geopend product.Selecteer Maken om uw nieuwe product te maken.
Let op
Zorg ervoor dat u een product configureert waarvoor geen abonnement is vereist. Deze configuratie is mogelijk te missief en kan de API's van het product kwetsbaarder maken voor bepaalde API-beveiligingsrisico's.
Meer configuraties toevoegen
Ga door met het configureren van het product nadat u het hebt opgeslagen. Selecteer in uw API Management-exemplaar het product in het venster Products (Producten). Toevoegen of bijwerken:
Item | Beschrijving |
---|---|
Instellingen | Metagegevens en status van product |
API's | API's die zijn gekoppeld aan het product |
Beleidsregels | Op product-API's toegepast beleid |
Toegangsbeheer | Zichtbaarheid van het product voor ontwikkelaars of gasten |
Abonnementen | Productabonnees |
API's toevoegen aan een product
Producten zijn koppelingen van een of meer API's. U kunt vele API's opnemen en deze beschikbaar stellen voor ontwikkelaars via de ontwikkelaarsportal. Tijdens het maken van het product kunt u een of meer bestaande API's toevoegen. U kunt ook later API's aan het product toevoegen, via de pagina met instellingen van het product of tijdens het maken van een API.
Een API toevoegen aan een bestaand product
- Selecteer Products (Producten) in de linkernavigatie van uw API Management-exemplaar.
- Selecteer een product en selecteer vervolgens API's.
- Selecteer + API toevoegen.
- Selecteer een of meer API's en selecteer vervolgens.
Toegang tot product-API's
Nadat u een product hebt gepubliceerd, hebben ontwikkelaars toegang tot de API's. Afhankelijk van hoe het product is geconfigureerd, moeten ze zich mogelijk abonneren op het product voor toegang.
Beveiligd product : ontwikkelaars moeten zich eerst abonneren op een beveiligd product om toegang te krijgen tot de API's van het product. Wanneer ze zich abonneren, krijgen ze een abonnementssleutel die toegang heeft tot elke API in dat product. Als u het API Management-exemplaar hebt gemaakt, bent u al een beheerder en bent u standaard geabonneerd op elk product. Zie Abonnementen in Azure API Management voor meer informatie.
Wanneer een client een API-aanvraag doet met een geldige productabonnementscode, verwerkt API Management de aanvraag en staat toegang toe in de context van het product. Beleidsregels en regels voor toegangsbeheer die voor het product zijn geconfigureerd, kunnen worden toegepast.
Tip
U kunt het abonnement van een gebruiker op een product maken of bijwerken met aangepaste abonnementssleutels via een REST API of een PowerShell-opdracht.
Open product : ontwikkelaars hebben toegang tot de API's van een open product zonder abonnementssleutel. U kunt echter andere mechanismen configureren om clienttoegang tot de API's te beveiligen, waaronder OAuth 2.0, clientcertificaten en het beperken van IP-adressen van bellers.
Notitie
Open producten worden niet vermeld in de ontwikkelaarsportal voor ontwikkelaars voor meer informatie over of abonneren op. Ze zijn alleen zichtbaar voor de groep Administrators . U moet een ander mechanisme gebruiken om ontwikkelaars te informeren over API's die toegankelijk zijn zonder abonnementssleutel.
Wanneer een client een API-aanvraag doet zonder een abonnementssleutel:
API Management controleert of de API is gekoppeld aan een open product. Een API kan aan maximaal één open product worden gekoppeld.
Als het geopende product bestaat, verwerkt het de aanvraag in de context van dat geopende product. Beleidsregels en regels voor toegangsbeheer die zijn geconfigureerd voor het open product, kunnen worden toegepast.
Zie Hoe API Management aanvragen verwerkt met of zonder abonnementssleutels voor meer informatie.
Volgende stappen
In deze zelfstudie heeft u het volgende geleerd:
- Een product maken en publiceren
- Een API toevoegen aan het product
- Toegang tot product-API's
Ga door naar de volgende zelfstudie:
Create blank API and mock API responses (Lege API en mock-API-reacties maken)
In dit artikel gebruikt u Terraform om een Azure API Management-exemplaar, een API, een product, een groep en koppelingen tussen het product en de API en het product en de groep te maken.
Terraform maakt de definitie, preview en implementatie van de cloudinfrastructuur mogelijk. Met Behulp van Terraform maakt u configuratiebestanden met behulp van de HCL-syntaxis. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat. Nadat u uw configuratiebestanden hebt gemaakt, maakt u een uitvoeringsplan waarmee u een voorbeeld van uw infrastructuurwijzigingen kunt bekijken voordat ze worden geïmplementeerd. Zodra u de wijzigingen hebt gecontroleerd, past u het uitvoeringsplan toe om de infrastructuur te implementeren.
- Geef de vereiste versie van Terraform en de vereiste providers op.
- Definieer variabelen voor het voorvoegsel voor de naam van de resourcegroep, de locatie van de resourcegroep en de inhoudsindeling en -waarde voor het importeren van de API-definitie.
- Maak een resourcegroep met een willekeurige naam.
- Maak een API Management-service met een willekeurige naam.
- Maak een API met een gerandomiseerde naam.
- Maak een product met een willekeurige naam in de API Management-service.
- Maak een groep met een gerandomiseerde naam.
- Koppel de API aan het product.
- Koppel de groep aan het product.
- Voer de gerandomiseerde waarden uit, zoals de namen van de resourcegroep, API Management-service, API, product en groep.
Vereisten
Maak een Azure-account met een actief abonnement. U kunt gratis een account maken.
Installeer en configureer Terraform.
De Terraform-code implementeren
Notitie
De voorbeeldcode voor dit artikel bevindt zich in de Azure Terraform GitHub-opslagplaats. U kunt het logboekbestand met de testresultaten van de huidige en vorige versies van Terraform bekijken.
Zie meer artikelen en voorbeeldcode over het gebruik van Terraform voor het beheren van Azure-resources.
Maak een map waarin u de Terraform-voorbeeldcode wilt testen en uitvoeren en deze de huidige map wilt maken.
Maak een bestand met de naam
main.tf
en voeg de volgende code in: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 }
Maak een bestand met de naam
outputs.tf
en voeg de volgende code in: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 }
Maak een bestand met de naam
providers.tf
en voeg de volgende code in:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
Maak een bestand met de naam
variables.tf
en voeg de volgende code in: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." }
Terraform initialiseren
Voer terraform init uit om de Terraform-implementatie te initialiseren. Met deze opdracht wordt de Azure-provider gedownload die is vereist voor het beheren van uw Azure-resources.
terraform init -upgrade
Belangrijkste punten:
- Met
-upgrade
de parameter worden de benodigde providerinvoegtoepassingen bijgewerkt naar de nieuwste versie die voldoet aan de versiebeperkingen van de configuratie.
Een Terraform-uitvoeringsplan maken
Voer terraform-plan uit om een uitvoeringsplan te maken.
terraform plan -out main.tfplan
Belangrijkste punten:
- De
terraform plan
opdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-out
parameter kunt u een uitvoerbestand voor het plan opgeven. Door de-out
parameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
Een Terraform-uitvoeringsplan toepassen
Terraform uitvoeren is van toepassing om het uitvoeringsplan toe te passen op uw cloudinfrastructuur.
terraform apply main.tfplan
Belangrijkste punten:
- Bij de voorbeeldopdracht
terraform apply
wordt ervan uitgegaan dat u eerder hebt uitgevoerdterraform plan -out main.tfplan
. - Als u een andere bestandsnaam voor de
-out
parameter hebt opgegeven, gebruikt u diezelfde bestandsnaam in de aanroep naarterraform apply
. - Als u de parameter niet hebt gebruikt, roept
terraform apply
u deze-out
aan zonder parameters.
De resultaten controleren
Uitvoeren az apim show
om azure API Management weer te geven:
az apim show --<apim_service_name> --<resource_group_name>
Resources opschonen
Voer de volgende stappen uit wanneer u de resources die zijn gemaakt via Terraform niet meer nodig hebt:
Voer terraform-plan uit en geef de
destroy
vlag op.terraform plan -destroy -out main.destroy.tfplan
Belangrijkste punten:
- De
terraform plan
opdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-out
parameter kunt u een uitvoerbestand voor het plan opgeven. Door de-out
parameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
- De
Terraform uitvoeren is van toepassing om het uitvoeringsplan toe te passen.
terraform apply main.destroy.tfplan
Problemen met Terraform in Azure oplossen
Veelvoorkomende problemen bij het gebruik van Terraform in Azure oplossen.