Tutorial: Erstellen und Veröffentlichen eines Produkts
GILT FÜR: Alle API Management-Ebenen
Produkte in Azure API Management enthalten eine oder mehrere APIs, ein Nutzungskontingent und Nutzungsbedingungen. Nachdem ein Produkt veröffentlicht wurde, können Entwickler*innen das Produkt abonnieren und die APIs des Produkts verwenden.
In diesem Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:
- Erstellen und Veröffentlichen eines Produkts
- Hinzufügen einer API zum Produkt
- Zugreifen auf Produkt-APIs
Voraussetzungen
- Machen Sie sich mit der Azure API Management-Terminologie vertraut.
- Bearbeiten Sie den folgenden Schnellstart: Erstellen einer neuen Azure API Management-Dienstinstanz
- Absolvieren Sie außerdem das folgende Tutorial: Importieren und Veröffentlichen Ihrer ersten API.
Erstellen und Veröffentlichen eines Produkts
Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrer API Management-Instanz.
Wählen Sie im linken Navigationsbereich Produkte>+ Hinzufügen aus.
Geben Sie im Fenster Produkt hinzufügen Werte ein, die in der folgenden Tabelle beschrieben sind, um Ihr Produkt zu erstellen.
Name Beschreibung Anzeigename Der Name, wie er im Entwicklerportal angezeigt werden soll Beschreibung Machen Sie Angaben zum Produkt wie etwa dessen Zweck, die zur Verfügung gestellten APIs und sonstige Details. Staat Wählen Sie Veröffentlicht aus, wenn Sie das Produkt im Entwicklerportal veröffentlichen möchten. Damit die APIs in einem Produkt von Entwicklern gefunden werden können, muss das Produkt veröffentlicht werden. Standardmäßig sind neue Produkte nicht veröffentlicht. Abonnement erforderlich Wählen Sie diese Option aus, wenn Benutzer*innen das Produkt abonnieren müssen (das Produkt ist geschützt) und ein Abonnementschlüssel für den Zugriff auf die APIs des Produkts erforderlich ist. Wenn kein Abonnement erforderlich ist (das Produkt ist offen), wird kein Abonnementschlüssel benötigt, um auf die APIs des Produkts zugreifen zu können. Weitere Informationen finden Sie im Abschnitt Zugreifen auf Produkt-APIs weiter unten in diesem Artikel. Genehmigung erforderlich Aktivieren Sie diese Option, wenn Sie möchten, dass ein Administrator Abonnements für dieses Produkt prüfen und ablehnen oder akzeptieren muss. Andernfalls werden Abonnements automatisch genehmigt. Grenzwert für Abonnementanzahl Beschränken Sie optional die Anzahl mehrerer gleichzeitiger Abonnements. Rechtliche Bedingungen Sie können die Nutzungsbedingungen für das Produkt hinzufügen, denen Abonnenten zustimmen müssen, um das Produkt verwenden zu können. APIs Wählen Sie mindestens eine API aus. Sie können APIs auch nach dem Erstellen des Produkts hinzufügen. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Hinzufügen von APIs zu einem Produkt.
Wenn das Produkt offen ist (und kein Abonnement erfordert), können Sie nur eine API hinzufügen, die nicht mit einem anderen offenen Produkt verknüpft ist.Wählen Sie Erstellen aus, um das neue Produkt zu erstellen.
Achtung
Gehen Sie beim Konfigurieren eines Produkts, das kein Abonnement erfordert, sorgfältig vor. Diese Konfiguration kann übermäßig freizügig sein und die API des Produkts anfälliger für bestimmte API-Sicherheitsbedrohungen machen.
Hinzufügen weiterer Konfigurationen
Setzen Sie die Konfiguration des Produkts fort, nachdem Sie es gespeichert haben. Wählen Sie in der API Management-Instanz das Produkt im Fenster Produkte aus. Sie können Folgendes hinzufügen oder aktualisieren:
Element | Beschreibung |
---|---|
Einstellungen | Produktmetadaten und -status |
APIs | Dem Produkt zugeordnete APIs |
Richtlinien | Auf Produkt-APIs angewendete Richtlinien |
Zugriffssteuerung | Produktsichtbarkeit für Entwickler oder Gäste |
Abonnements | Produktabonnenten |
Hinzufügen von APIs zu einem Produkt
Bei Produkten handelt es sich um API-Zuordnungen. Sie können viele verschiedene APIs einfügen, und sie Entwicklern über das Entwicklerportal zur Verfügung stellen. Während der Erstellung des Produkts können Sie eine oder mehrere vorhandene APIs hinzufügen. Sie können eine API dem Produkt auch später hinzufügen – und zwar entweder über die Seite mit den Einstellungen des Produkts oder beim Erstellen einer API.
Hinzufügen einer API zu einem vorhandenen Produkt
- Wählen Sie im linken Navigationsbereich der API Management-Instanz Produkte aus.
- Wählen Sie ein Produkt und dann APIs aus.
- Wählen Sie + API hinzufügen aus.
- Wählen Sie mindestens eine API und dann Auswählen aus.
Zugreifen auf Produkt-APIs
Nachdem Sie ein Produkt veröffentlicht haben, können Entwickler*innen auf die APIs zugreifen. Je nachdem, wie das Produkt konfiguriert ist, müssen sie das Produkt abonnieren, um darauf zugreifen zu können.
Geschütztes Produkt: Entwickler*innen müssen ein geschütztes Produkt zuerst abonnieren, um Zugriff auf seine APIs zu erhalten. Wenn sie ein Produkt abonnieren, erhalten sie einen Abonnementschlüssel, mit dem sie auf jede API in diesem Produkt zugreifen können. Wenn Sie die API Management-Instanz erstellt haben, sind Sie bereits Administrator und haben dadurch standardmäßig alle Produkte abonniert. Weitere Informationen finden Sie unter Abonnements in Azure API Management.
Wenn ein Client eine API mit einem gültigen Produktabonnementschlüssel anfordert, verarbeitet API Management die Anforderung und lässt den Zugriff im Kontext des Produkts zu. Dabei können für das Produkt konfigurierte Richtlinien und Zugriffssteuerungsregeln angewendet werden.
Tipp
Sie können ein Benutzerabonnement für ein Produkt unter Verwendung benutzerdefinierter Abonnementschlüssel über die REST-API oder einen PowerShell-Befehl erstellen oder aktualisieren.
Offenes Produkt: Entwickler*innen können ohne Abonnementschlüssel auf APIs von offenen Produkten zugreifen. Sie können jedoch andere Mechanismen konfigurieren, um den Clientzugriff auf die APIs zu sichern, darunter OAuth 2.0, Clientzertifikate und das Einschränken der IP-Adressen von Anrufern.
Hinweis
Offene Produkte werden im Entwicklerportal nicht aufgeführt, sodass Entwickler dort keine Informationen dazu finden und sie auch nicht abonnieren können. Sie sind nur für die Gruppe Administratoren sichtbar. Sie müssen einen anderen Mechanismus verwenden, um Entwickler über APIs zu informieren, auf die ohne Abonnementschlüssel zugegriffen werden kann.
Folgendes geschieht, wenn ein Client eine API ohne Abonnementschlüssel anfordert:
API Management überprüft, ob die API zu einem offenen Produkt gehört. Eine API kann höchstens einem offenen Produkt zugeordnet werden.
Wenn das offene Produkt vorhanden ist, wird die Anforderung im Kontext dieses offenen Produkts verarbeitet. Dabei können für das offene Produkt konfigurierte Richtlinien und Zugriffssteuerungsregeln angewendet werden.
Weitere Informationen finden Sie unter Verarbeitung von Anforderungen mit oder ohne Abonnementschlüssel durch API Management.
Nächste Schritte
In diesem Tutorial haben Sie gelernt, wie die folgenden Aufgaben ausgeführt werden:
- Erstellen und Veröffentlichen eines Produkts
- Hinzufügen einer API zum Produkt
- Zugreifen auf Produkt-APIs
Fahren Sie mit dem nächsten Tutorial fort:
In diesem Artikel verwenden Sie Terraform, um eine Azure API Management-Instanz, eine API, ein Produkt, eine Gruppe und Zuordnungen zwischen Produkt und API sowie Produkt und Gruppe zu erstellen.
Mit Terraform können Sie eine Cloudinfrastruktur definieren, eine Vorschau der Cloudinfrastruktur anzeigen und die Cloudinfrastruktur bereitstellen. Terraform ermöglicht das Erstellen von Konfigurationsdateien mit HCL-Syntax. Mit der HCL-Syntax können Sie den Cloudanbieter (beispielsweise Azure) und die Elemente angeben, aus denen sich Ihre Cloudinfrastruktur zusammensetzt. Nach der Erstellung Ihrer Konfigurationsdateien erstellen Sie einen Ausführungsplan, mit dem Sie eine Vorschau Ihrer Infrastrukturänderungen anzeigen können, bevor diese bereitgestellt werden. Nach der Überprüfung der Änderungen wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.
- Geben Sie die erforderliche Version von Terraform und die erforderlichen Anbieter an.
- Definieren Sie Variablen für das Präfix des Ressourcengruppennamens, den Speicherort der Ressourcengruppe sowie das Inhaltsformat und den Wert für den API-Definitionsimport.
- Erstellen Sie eine Ressourcengruppe mit einem zufälligen Namen.
- Erstellen Sie einen API Management-Dienst mit einem zufälligen Namen.
- Erstellen Sie eine API mit einem zufälligen Namen.
- Erstellen Sie ein Produkt mit einem zufälligen Namen im API Management-Dienst.
- Erstellen Sie eine Gruppe mit einem zufälligen Namen.
- Ordnen Sie die API dem Produkt zu.
- Ordnen Sie die Gruppe dem Produkt zu.
- Geben Sie die zufälligen Werte aus, z. B. die Namen der Ressourcengruppe, des API Management-Diensts, der API, des Produkts und der Gruppe.
Voraussetzungen
Erstellen Sie ein Azure-Konto mit einem aktiven Abonnement. Sie können ein Konto kostenlos erstellen.
Installieren und konfigurieren Sie Terraform.
Implementieren des Terraform-Codes
Hinweis
Der Beispielcode für diesen Artikel befindet sich im Azure Terraform-GitHub-Repository. Sie können die Protokolldatei anzeigen, die die Testergebnisse von aktuellen und früheren Terraform-Versionen enthält.
Lesen Sie weitere Artikel und Beispielcodes zur Verwendung von Terraform zum Verwalten von Azure-Ressourcen.
Erstellen Sie ein Verzeichnis, in dem der Terraform-Beispielcode getestet und ausgeführt werden soll, und legen Sie es als aktuelles Verzeichnis fest.
Erstellen Sie eine Datei namens
main.tf
, und fügen Sie den folgenden Code ein: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 }
Erstellen Sie eine Datei namens
outputs.tf
, und fügen Sie den folgenden Code ein: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 }
Erstellen Sie eine Datei namens
providers.tf
, und fügen Sie den folgenden Code ein:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
Erstellen Sie eine Datei namens
variables.tf
, und fügen Sie den folgenden Code ein: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." }
Initialisieren von Terraform
Führen Sie zum Initialisieren der Terraform-Bereitstellung terraform init aus. Mit diesem Befehl wird der Azure-Anbieter heruntergeladen, der zum Verwalten Ihrer Azure-Ressourcen erforderlich ist.
terraform init -upgrade
Die wichtigsten Punkte:
- Der Parameter
-upgrade
aktualisiert die erforderlichen Anbieter-Plug-Ins auf die neueste Version, die den Versionseinschränkungen der Konfiguration entspricht.
Erstellen eines Terraform-Ausführungsplans
Führen Sie terraform plan aus, um einen Ausführungsplan zu erstellen.
terraform plan -out main.tfplan
Die wichtigsten Punkte:
- Durch den Befehl
terraform plan
wird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen. - Der optionale Parameter
-out
ermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters-out
wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
Anwenden eines Terraform-Ausführungsplans
Führen Sie terraform apply aus, um den Ausführungsplan auf Ihre Cloudinfrastruktur anzuwenden.
terraform apply main.tfplan
Die wichtigsten Punkte:
- Der Beispielbefehl
terraform apply
setzt voraus, dass Sie zuvorterraform plan -out main.tfplan
ausgeführt haben. - Wenn Sie einen anderen Dateinamen für den Parameter
-out
angegeben haben, verwenden Sie denselben Dateinamen im Aufruf vonterraform apply
. - Wenn Sie den Parameter
-out
nicht verwendet haben, rufen Sieterraform apply
ohne Parameter auf.
Überprüfen der Ergebnisse
Führen Sie az apim show
aus, um Azure API Management anzuzeigen:
az apim show --<apim_service_name> --<resource_group_name>
Bereinigen von Ressourcen
Wenn Sie die über Terraform erstellten Ressourcen nicht mehr benötigen, führen Sie die folgenden Schritte aus:
Führen Sie terraform plan aus, und geben Sie das Flag
destroy
an.terraform plan -destroy -out main.destroy.tfplan
Die wichtigsten Punkte:
- Durch den Befehl
terraform plan
wird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen. - Der optionale Parameter
-out
ermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters-out
wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
- Durch den Befehl
Führen Sie zum Anwenden des Ausführungsplans den Befehl terraform apply aus.
terraform apply main.destroy.tfplan
Problembehandlung für Terraform in Azure
Behandeln Sie allgemeine Probleme bei der Verwendung von Terraform in Azure.