Megosztás a következőn keresztül:


Oktatóanyag: Termék létrehozása és közzététele

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

Az Azure API Managementben egy termék egy vagy több API-t, használati kvótát és használati feltételeket tartalmaz. A termék közzététele után a fejlesztők feliratkozhatnak a termékre, és elkezdhetik használni a termék API-jait.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Termékek létrehozása és közzététele
  • API hozzáadása a termékhez
  • Termék API-k elérése

API Management-termékek a portálon

Előfeltételek

Termékek létrehozása és közzététele

  1. Jelentkezzen be az Azure Portalra, és keresse meg az API Management-példányt.

  2. A bal oldali navigációs panelen válassza a Termékek>+ Hozzáadás lehetőséget.

    Termék hozzáadása az Azure Portalon

  3. A Termék hozzáadása ablakban adja meg a következő táblázatban leírt értékeket a termék létrehozásához.

    Termék hozzáadása ablak

    Név Leírás
    Megjelenített név A név, ahogyan szeretné, megjelenik a fejlesztői portálon.
    Leírás Adja meg a termékkel kapcsolatos információkat, például a célját, a hozzáférést biztosító API-kat és egyéb részleteket.
    Állapot Válassza a Közzétéve lehetőséget, ha közzé szeretné tenni a terméket a fejlesztői portálon. Mielőtt a fejlesztők felfedezhetik a termék API-jait, közzé kell tenni a terméket. Alapértelmezés szerint az új termékek nem lesznek közzétéve.
    Előfizetés szükséges Válassza ki, hogy egy felhasználónak elő kell-e fizetnie a termék használatához (a termék védett), és egy előfizetési kulcsot kell használnia a termék API-iinak eléréséhez. Ha nincs szükség előfizetésre (a termék nyitva van), a termék API-ihoz való hozzáféréshez nincs szükség előfizetési kulcsra. A cikk későbbi részében tekintse meg a termék API-khoz való hozzáférést.
    Jóváhagyást igényel Válassza ki, ha azt szeretné, hogy egy rendszergazda tekintse át és fogadja el vagy utasítsa el a termékre vonatkozó előfizetési kísérleteket. Ha nincs kiválasztva, az előfizetési kísérletek automatikusan jóvá lesznek hagyva.
    Előfizetések számának korlátozása Igény szerint korlátozhatja több egyidejű előfizetés számát.
    Jogi feltételek Megadhatja a termék használati feltételeit, amelyeket az előfizetőknek el kell fogadniuk, hogy használni tudják a terméket.
    API-k Jelöljön ki egy vagy több API-t. A termék létrehozása után API-kat is hozzáadhat. További információ: API-k hozzáadása egy termékhez a cikk későbbi részében.

    Nyílt (előfizetést nem igénylő) termék esetén csak olyan API-t adhat hozzá, ami nincs egy másik nyílt termékhez társítva.
  4. Válassza a Létrehozás lehetőséget az új termék létrehozásához.

Figyelemfelhívás

Ügyeljen arra, hogy olyan terméket konfiguráljon, amely nem igényel előfizetést. Ez a konfiguráció túlságosan megengedő lehet, és sebezhetőbbé teheti a termék API-jait bizonyos API-biztonsági fenyegetésekkel szemben.

További konfigurációk hozzáadása

A mentés után folytassa a termék konfigurálását. Az API Management-példányban válassza ki a terméket a Termékek ablakban. Hozzáadás vagy frissítés:

Elem Leírás
Beállítások Termék metaadatai és állapota
API-k A termékhez társított API-k
Házirendek Termék API-kra alkalmazott szabályzatok
Hozzáférés-vezérlés Termékláthatóság fejlesztők vagy vendégek számára
Előfizetések Termék-előfizetők

API-k hozzáadása termékekhez

A termékek egy vagy több API társításai. Több API-t is megadhat, és a fejlesztői portálon elérhetővé teheti azokat a fejlesztők számára. A termék létrehozása során hozzáadhat egy vagy több meglévő API-t. Később api-kat is hozzáadhat a termékhez, akár a Termékek beállításai lapon, akár egy API létrehozásakor.

API hozzáadása meglévő termékhez

  1. Az API Management-példány bal oldali navigációs sávjában válassza a Termékek lehetőséget.
  2. Válasszon ki egy terméket, majd válassza az API-kat.
  3. Válassza az + API hozzáadása lehetőséget.
  4. Jelöljön ki egy vagy több API-t, majd válassza ki.

API hozzáadása meglévő termékhez

Hozzáférés a termék API-khoz

A termék közzététele után a fejlesztők hozzáférhetnek az API-khoz. A termék konfigurálásának módjától függően előfordulhat, hogy elő kell fizetniük a termékre a hozzáféréshez.

  • Védett termék – A fejlesztőknek először elő kell fizetnie egy védett termékre, hogy hozzáférjenek a termék API-iihoz. Amikor előfizetnek, egy előfizetési kulcsot kapnak, amely a termék bármely API-ját elérheti. Ha létrehozta az API Management-példányt, ön már rendszergazda, ezért alapértelmezés szerint minden termékre előfizetett. További információ: Előfizetések az Azure API Managementben.

    Amikor egy ügyfél érvényes termék-előfizetési kulccsal küld API-kérést, az API Management feldolgozza a kérést, és engedélyezi a hozzáférést a termék kontextusában. A termékhez konfigurált szabályzatok és hozzáférés-vezérlési szabályok alkalmazhatók.

  • Termék megnyitása – A fejlesztők előfizetési kulcs nélkül férhetnek hozzá egy megnyitott termék API-jához. Konfigurálhat azonban más mechanizmusokat is az API-khoz való ügyfélhozzáférés biztosításához, beleértve az OAuth 2.0-t, az ügyféltanúsítványokat és a hívó IP-címeinek korlátozását.

    Feljegyzés

    A nyílt termékek nem jelennek meg a fejlesztői portálon, hogy a fejlesztők megismerhessenek vagy feliratkozzanak rá. Ezek csak a Rendszergazdák csoport számára láthatók. Egy másik mechanizmussal tájékoztatnia kell a fejlesztőket azokról az API-król, amelyek előfizetési kulcs nélkül is elérhetők.

    Ha egy ügyfél előfizetési kulcs nélkül küld API-kérést:

    • Az API Management ellenőrzi, hogy az API egy nyitott termékhez van-e társítva. Egy API legfeljebb egy nyitott termékhez társítható.

    • Ha a nyitott termék létezik, akkor a kérelem feldolgozása a nyitott termék kontextusában történik. A nyitott termékhez konfigurált szabályzatok és hozzáférés-vezérlési szabályok alkalmazhatók.

További információ: Hogyan kezeli az API Management a kéréseket előfizetési kulcsokkal vagy anélkül.

Következő lépések

Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:

  • Termékek létrehozása és közzététele
  • API hozzáadása a termékhez
  • Termék API-k elérése

Folytassa a következő oktatóanyaggal:

Ebben a cikkben a Terraform használatával hoz létre egy Azure API Management-példányt, egy API-t, egy terméket, egy csoportot és társításokat a termék és az API, valamint a termék és a csoport között.

A Terraform lehetővé teszi a felhőinfrastruktúra definícióját, előzetes verzióját és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre HCL-szintaxissal. A HCL szintaxissal megadhatja a felhőszolgáltatót – például az Azure-t – és a felhőinfrastruktúra elemeit. A konfigurációs fájlok létrehozása után létrehoz egy végrehajtási tervet , amely lehetővé teszi az infrastruktúra változásainak előzetes megtekintését az üzembe helyezés előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezésére.

  • Adja meg a Terraform szükséges verzióját és a szükséges szolgáltatókat.
  • Definiálja az erőforráscsoport névelőtagjának, az erőforráscsoport helyének, valamint az API-definíció importálásának tartalomformátumát és értékét.
  • Hozzon létre egy véletlenszerű névvel rendelkező erőforráscsoportot.
  • Hozzon létre egy véletlenszerű névvel rendelkező API Management-szolgáltatást.
  • Hozzon létre egy véletlenszerű névvel rendelkező API-t.
  • Véletlenszerű névvel rendelkező termék létrehozása az API Management szolgáltatásban.
  • Hozzon létre egy véletlenszerű névvel rendelkező csoportot.
  • Társítsa az API-t a termékkel.
  • A csoport társítása a termékkel.
  • Adja ki a véletlenszerű értékeket, például az erőforráscsoport, az API Management szolgáltatás, az API, a termék és a csoport nevét.

Előfeltételek

A Terraform-kód implementálása

Feljegyzés

A cikk mintakódja az Azure Terraform GitHub-adattárban található. Megtekintheti a Terraform aktuális és korábbi verzióinak teszteredményeit tartalmazó naplófájlt.

További cikkek és mintakód bemutatja, hogyan használható a Terraform az Azure-erőforrások kezelésére.

  1. Hozzon létre egy könyvtárat, amelyben tesztelheti és futtathatja a Terraform-mintakódot, és az aktuális könyvtárá teheti.

  2. Hozzon létre egy nevű main.tffájlt, és szúrja be a következő kódot:

    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. Hozzon létre egy nevű outputs.tffájlt, és szúrja be a következő kódot:

    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. Hozzon létre egy nevű providers.tffájlt, és szúrja be a következő kódot:

    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. Hozzon létre egy nevű variables.tffájlt, és szúrja be a következő kódot:

    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     = "http://conferenceapi.azurewebsites.net/?format=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."
    }
    

A Terraform inicializálása

Futtassa a Terraform init parancsot a Terraform üzembe helyezésének inicializálásához. Ez a parancs letölti az Azure-erőforrások kezeléséhez szükséges Azure-szolgáltatót.

terraform init -upgrade

Főbb pontok:

  • A -upgrade paraméter frissíti a szükséges szolgáltatói beépülő modulokat a legújabb verzióra, amely megfelel a konfiguráció verziókorlátozásainak.

Terraform végrehajtási terv létrehozása

Végrehajtási terv létrehozásához futtassa a Terraform-tervet .

terraform plan -out main.tfplan

Főbb pontok:

  • A terraform plan parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat.
  • Az opcionális -out paraméter lehetővé teszi a terv kimeneti fájljának megadását. -out A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.

Terraform végrehajtási terv alkalmazása

A terraform futtatásával alkalmazza a végrehajtási tervet a felhőinfrastruktúrára.

terraform apply main.tfplan

Főbb pontok:

  • A példaparancs terraform apply feltételezi, hogy korábban futtatott terraform plan -out main.tfplan.
  • Ha másik fájlnevet adott meg a -out paraméterhez, használja ugyanazt a fájlnevet a hívásban terraform apply.
  • Ha nem használta a paramétert -out , hívjon terraform apply paraméterek nélkül.

Az eredmények ellenőrzése

Futtassa az apim show az Azure API Managementet:


az apim show --<apim_service_name> --<resource_group_name>

Az erőforrások eltávolítása

Ha már nincs szüksége a Terraformon keresztül létrehozott erőforrásokra, hajtsa végre az alábbi lépéseket:

  1. Futtassa a Terraform-tervet , és adja meg a jelölőt destroy .

    terraform plan -destroy -out main.destroy.tfplan
    

    Főbb pontok:

    • A terraform plan parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat.
    • Az opcionális -out paraméter lehetővé teszi a terv kimeneti fájljának megadását. -out A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.
  2. A végrehajtási terv alkalmazásához futtassa a terraformát .

    terraform apply main.destroy.tfplan
    

A Terraform hibaelhárítása az Azure-ban

A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása.

Következő lépések