Freigeben über


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

API Management-Produkte im Portal

Voraussetzungen

Erstellen und Veröffentlichen eines Produkts

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrer API Management-Instanz.

  2. Wählen Sie im linken Navigationsbereich Produkte>+ Hinzufügen aus.

    Hinzufügen eines Produkts im Azure-Portal

  3. Geben Sie im Fenster Produkt hinzufügen Werte ein, die in der folgenden Tabelle beschrieben sind, um Ihr Produkt zu erstellen.

    Hinzufügen eines Produktfensters

    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.
  4. 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

  1. Wählen Sie im linken Navigationsbereich der API Management-Instanz Produkte aus.
  2. Wählen Sie ein Produkt und dann APIs aus.
  3. Wählen Sie + API hinzufügen aus.
  4. Wählen Sie mindestens eine API und dann Auswählen aus.

Hinzufügen einer API zu einem vorhandenen Produkt

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

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.

  1. Erstellen Sie ein Verzeichnis, in dem der Terraform-Beispielcode getestet und ausgeführt werden soll, und legen Sie es als aktuelles Verzeichnis fest.

  2. 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
    }
    
  3. 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
    }
    
  4. 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 {}
    }
    
  5. 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 zuvor terraform 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 von terraform apply.
  • Wenn Sie den Parameter -out nicht verwendet haben, rufen Sie terraform 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:

  1. 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.
  2. 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.

Nächste Schritte