Modelle für maschinelles Lernen mit Apigee Edge und AI Platform bereitstellen

In dieser Anleitung wird gezeigt, wie Sie Apigee Edge mit AI Platform Prediction einrichten.

Bei der Bereitstellung von maschinellen Lernmodellen sind Datenvorbereitung und Modelltraining lediglich zwei Faktoren, die berücksichtigt werden müssen. Darüber hinaus ist Folgendes zu beachten:

  • Skalierbarkeit, Leistung und Verfügbarkeit bei der Bereitstellung von Vorhersagen
  • Einschränkung des Zugriffs auf Funktionen je nach Nutzer – z. B. für interne Nutzer in Ihrem Unternehmen oder für Nutzer eines externen Partnerunternehmens
  • Verbindliche Festlegung von Kontingenten und Nutzungsrichtlinien mithilfe von API-Schlüsseln
  • Verwaltung des Lebenszyklus von API-Schlüsseln, insbesondere in Bezug auf Verteilung und Widerruf
  • Gewährung des Zugriffs auf Ihre ML APIs über einen manuellen oder automatisierten Genehmigungsprozess
  • Bereitstellung neuer Modellversionen, da maschinelle Lernmodelle aktualisiert werden

Google Cloud bietet verwaltete Dienste für das Modellhosting und die API-Verwaltung für den Zugriff auf die Vorhersagefeatures der gehosteten Modelle.

AI Platform ist ein verwalteter, skalierbarer Dienst für maschinelles Lernen, der in Google Cloud verfügbar ist. Zusätzlich zum Training mit der verteilten Infrastruktur von Google bietet die AI Platform Modellhosting für umfangreiche Online- und Batchvorhersagen. Die zugrunde liegende Infrastruktur nutzt das globale Load-Balancing von Google, um Nutzern weltweit wertvolle Vorhersagen bereitzustellen.

Für Anwendungsfälle mit niedriger Latenzzeit ermöglicht die AI Platform-Onlinevorhersage Vorhersagen für Ihre gehosteten Modelle. Dazu wird eine REST API bereitgestellt, die Vorhersagen direkt in der Antwort zurückgibt. Die bereitstellende Infrastruktur zum Hosten Ihres Modells wird automatisch nach Bedarf skaliert, ohne dass komplexe Konfigurationen oder Infrastrukturbereitstellungen verwaltet werden müssen. AI Platform vereinfacht außerdem die Aktualisierung von Vorhersagemodellen durch Bereitstellung von Modellversionierungsfunktionen.

Zur Nutzung umfassenderer API-Verwaltungsfunktionen für Ihren Dienst können Sie die AI Platform-Onlinevorhersage zusammen mit Apigee Edge verwenden und Folgendes aktivieren:

  • Detaillierte Sicherheits- und Zugriffskontrollrichtlinien für Ihre API
  • API-Analyse zum Verständnis der Nutzung
  • API-Ratenbegrenzung und andere Kontingente
  • Zugriff von Drittanbietern auf Ihre API über Entwicklerschlüssel
  • Monetarisierung Ihrer AI Platform API, die in der AI Platform-Onlinevorhersage gehostet wird
  • Transparente Modelländerungen durch Weiterleitung von Vorhersageanfragen über eine API-Fassade

Ziele

  • API-Proxys mithilfe von Apigee Edge für Ihre von AI Platform gehosteten Modelle bereitstellen
  • Zugriff auf Ihre gehosteten Modelle mithilfe von API-Schlüsseln absichern
  • Manuelle und automatische Genehmigungsprozesse für die Verteilung von API-Schlüsseln festlegen
  • API-Produkte erstellen, um unterschiedliche Nutzungsrichtlinien verbindlich festzulegen, wie z. B. zeitbasierte Kontingente nach Abonnententyp

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Neben den abrechenbaren Google Cloud-Komponenten wird in dieser Anleitung Apigee Edge verwendet.

Hinweis

Google Cloud-Projekt erstellen

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Cloud Console auf der Seite für die Projektauswahl ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die AI Platform API.

    Aktivieren Sie die API

Wenn das Cloud SDK nicht installiert ist, verwenden Sie zum Bereitstellen der Anwendung Cloud Shell. Cloud Shell bietet eine Shell-Umgebung, in der das Cloud SDK vorinstalliert ist. Im nachstehenden Teil dieser Anleitung wird Cloud Shell verwendet.

Apigee Edge-Konto erstellen

Führen Sie die Schritte unter Apigee Edge-Konto erstellen aus. Apigee stellt kostenlos ein Evaluierungskonto zur Verfügung, um die Lösung zu testen, mit der Sie die Schritte in dieser Anleitung durchführen können.

Lösungsarchitektur

In dieser Anleitung stellen Sie TensorFlow-Modelle in AI Platform bereit und verwenden Onlinevorhersagen, um sie für die Bereitstellung verfügbar zu machen. Für jedes gehostete Modell stellen Sie einen API-Proxy für Apigee Edge bereit, das ein Dienstkonto verwendet, um Anfragen von Clientanwendungen zu authentifizieren. Apigee Edge leitet dann die Anfragen an AI Platform-Onlinevorhersagen weiter. Apigee Edge erzwingt API-Richtlinien wie Verwendungskontingente, Ratenbegrenzung und API-Schlüsselüberprüfung und kann Richtlinienvariationen, z. B. Kontingentvariationen durch API-Schlüssel, mithilfe von API-Produkten, die Sie konfiguriert haben, weiter erzwingen. Diese Architektur wird im folgenden Diagramm veranschaulicht.

TensorFlow-Modelle in der AI Platform bereitstellen und die Modelle mit Onlinevorhersagen für die Bereitstellung verfügbar machen

In der folgenden Tabelle werden die Diagrammkonzepte im Detail erläutert:

Konzept Beschreibung
Anwendung Eine Anwendung ruft Vorhersagen in Ihrem maschinellen Lernmodell über eine in Apigee Edge gehostete API auf. Die HTTP-Anfrage wird an einen Endpunkt gesendet, der von einem API-Proxy verwaltet wird. Der API-Proxy in Apigee Edge führt die API-Schlüsselüberprüfung für die Authentifizierung durch und wendet bestimmte Zugriffsebenen und Funktionen an, die durch das mit dem API-Schlüssel verknüpfte API-Produkt definiert sind.
API-Proxy Ein API-Proxy leitet Anfragen von einem Proxyendpunkt (der für Clientanwendungen erreichbar ist) an einen Zielendpunkt weiter. Der Zielendpunkt ist der Endpunkt Ihres gehosteten Modells für Anfragen von AI Platform-Onlinevorhersagen.
API-Produkt Ein API-Produkt gruppiert Apigee-Ressourcen (z. B. API-Proxys), um Entwicklern von Clientanwendungen ein bestimmtes Maß an Zugriff und Funktionalität zu bieten. Das API-Produkt kann z. B. Zugriffsbeschränkungen, API-Schlüsselfreigabemethoden und andere Konfigurationen für die API-Proxys erzwingen, die für den Zugriff auf Onlinevorhersagen auf gehosteten Modellen verwendet werden.
Gehostetes Modell Ein gehostetes Modell ist ein trainiertes ML-Modell, das in AI Platform bereitgestellt wird. Für Anfragen zu Vorhersagen von Ihren gehosteten Modellen verwenden Sie Onlinevorhersagen und Batchvorhersagen der AI Platform.

Anstatt Nutzern das gehostete Modell in der AI Platform direkt zugänglich zu machen, verwendet die Architektur dieser Lösung Apigee Edge, damit externe Nutzer gehostete Modelle über einen API-Proxy aufrufen können. Durch Proxyanfragen über Apigee Edge können verschiedene Nutzungsrichtlinien erzwungen werden.
Modell-Assets Damit Sie in dieser Anleitung ein gehostetes TensorFlow-Modell für die AI Platform bereitstellen können, müssen Sie das Modell im TensorFlow-Format "SavedModel" exportieren und die resultierenden Modellelemente in einem Cloud Storage-Bucket speichern. Dann können Online- oder Batchvorhersagen der AI Platform Vorhersagen für das Modell treffen.

Beispielszenario

In dieser Anleitung verwenden Sie Apigee Edge, um zwei beispielhafte API-Produkte für ein einfaches gehostetes Modell (Einkommensvorhersage aus Volkszählungsdaten) zu erstellen, das in der AI Platform bereitgestellt wird.

Das folgende Diagramm erläutert die beiden beispielhaften API-Produkte: ein Income Prediction Trial mit niedrigen Verwendungskontingenten und ein Income Prediction Premium mit erhöhten Kontingenten. Im Beispielszenario registrieren Sie zwei Entwickler und Anwendungen, um die API unter verschiedenen Einschränkungen zu testen, die von den beiden API-Produkten erzwungen werden.

Zwei beispielhafte API-Produkte für ein einfaches gehostetes Modell, das für die AI Platform bereitgestellt wird

Google Cloud-Dienstkonto erstellen

Apigee Edge benötigt ein Google Cloud-Dienstkonto, um seine Anfragen in AI Platform-Onlinevorhersagen zu authentifizieren.

GCLOUD

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

    Sofern nicht anders angegeben, verwenden Sie in dieser Anleitung Cloud Shell.

  2. Richten Sie eine Umgebungsvariable für den Namen Ihres Dienstkontos ein:

    SERVICE_ACCOUNT=income-prediction-api@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
    
  3. Erstellen Sie ein Dienstkonto:

    gcloud iam service-accounts create \
        income-prediction-api \
        --display-name "Apigee service account"
    
  4. Erstellen Sie einen privaten Schlüssel für das Dienstkonto:

    gcloud iam service-accounts keys create \
        --iam-account ${SERVICE_ACCOUNT} \
        ~/key.json
    

    Mit diesem Befehl wird eine private Schlüsseldatei unter ${HOME}/key.json gespeichert. Bewahren Sie diese Datei sicher auf. Sie benötigen sie später.

Console

  1. Rufen Sie in der Cloud Console die Seite IAM & Verwaltung > Dienstkonten für Ihr Projekt auf:

    ZUR SEITE "DIENSTKONTEN"

  2. Klicken Sie auf Dienstkonto erstellen und geben Sie die Details für das Dienstkonto ein:

    1. Geben Sie einen Dienstkontonamen an, z. B. Income Prediction API.
    2. Geben Sie eine Dienstkonto-ID an, z. B. income-prediction-api.
    3. Klicken Sie auf Erstellen.
  3. Lassen Sie auf der Seite Diesem Dienstkonto Zugriff auf das Projekt erteilen (optional) die Drop-down-Liste Rolle leer und klicken Sie auf Weiter.

  4. Scrollen Sie auf der Seite Nutzern Zugriff auf dieses Dienstkonto erteilen (optional) nach unten und klicken Sie auf Schlüssel erstellen:

    1. Wählen Sie als Schlüsseltyp JSON aus. Dies ist die Standardeinstellung.
    2. Klicken Sie auf Erstellen. Ihr Browser initiiert den Download Ihrer privaten Schlüsseldatei. Bewahren Sie diese Datei sicher auf. Sie benötigen sie später.
    3. Klicken Sie auf Fertig.

Einkommensvorhersagemodell in AI Platform bereitstellen

In dieser Anleitung wird ein vorhandenes Codebeispiel zum Trainieren eines Einkommensvorhersagemodells mit Zählungsdaten verwendet. Der Einfachheit halber ist ein trainiertes Modell im Code-Repository dieser Anleitung auf GitHub enthalten.

Führen Sie die folgenden Schritte aus, um das vortrainierte Einkommensvorhersagemodell in AI Platform bereitzustellen:

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. Definieren Sie in Cloud Shell die Umgebungsvariablen, die Sie dann in späteren Befehlen verwenden:

    GCS_MODEL_BUCKET=${GOOGLE_CLOUD_PROJECT}-ml-models
    MODEL_NAME=census
    MODEL_VERSION=v1
    MODEL_REGION=us-central1
    
  3. Klonen Sie die Anleitungsdateien von GitHub:

    cd ${HOME}
    
    git clone https://github.com/GoogleCloudPlatform/cloudml-apigee-serving.git
    
  4. Erstellen Sie einen regionalen Cloud Storage-Bucket zum Speichern des Vorhersagemodells:

    gsutil mb -c regional -l ${MODEL_REGION} \
        -p ${GOOGLE_CLOUD_PROJECT} gs://${GCS_MODEL_BUCKET}
    
  5. Extrahieren und kopieren Sie das Modell in Cloud Storage:

    cd ${HOME}/cloudml-apigee-serving/model
    
    tar zxvf census.tar.gz
    
    gsutil -m cp -rv census gs://${GCS_MODEL_BUCKET}
    
  6. Erstellen Sie das Vorhersagemodell in AI Platform:

    gcloud ml-engine models create ${MODEL_NAME} \
         --regions ${MODEL_REGION}
    
  7. Erstellen Sie eine neue Version des Vorhersagemodells:

    gcloud ml-engine versions create ${MODEL_VERSION} \
        --model ${MODEL_NAME} \
        --origin gs://${GCS_MODEL_BUCKET}/census \
        --runtime-version 1.6
    
  8. Rufen Sie Informationen über Ihre neue Version ab:

    gcloud ml-engine versions describe ${MODEL_VERSION} \
        --model ${MODEL_NAME}
    

    Die Ausgabe sieht dann ungefähr so aus:

    deploymentUri: your_bucket_path
    framework: TENSORFLOW
    isDefault: true
    lastUseTime: '2018-05-07T04:41:22Z'
    name: projects/your_project/models/census/versions/v1
    pythonVersion: '2.7'
    runtimeVersion: '1.6'
    state: READY
    
  9. Prüfen Sie, bevor Sie fortfahren, ob Sie Vorhersagen erfolgreich ausführen können:

    gcloud ml-engine predict \
        --model ${MODEL_NAME} \
        --version ${MODEL_VERSION} \
        --json-instances ${HOME}/cmle-op-apigee-tutorial/model/test.json
    

    Die Ausgabe sieht ungefähr so aus: Diese Ausgabe überprüft, ob das gehostete Modell korrekt in der AI Platform bereitgestellt wurde und über AI Platform-Onlinevorhersagen aufgerufen werden kann.

    CLASS_IDS  CLASSES  LOGISTIC               LOGITS                PROBABILITIES
    [0]        [u'0']   [0.23072466254234314]  [-1.204223871231079]  [0.7692753076553345, 0.23072466254234314]
    

API-Proxy in Apigee Edge erstellen

Mit einem API-Proxy können Clients das gehostete Modell über eine externe API aufrufen. Dazu leitet der API-Proxy Clientanfragen von einer externen API-Schnittstelle, die von Apigee Edge gehostet wird, an die API predict der AI Platform für das gehostete Modell weiter. Die Schnittstelle nutzt ein API-Fassadenmuster und schützt Nutzer vor Zielendpunktänderungen, wenn neue Modelle und Modellversionen bereitgestellt werden. Weitere Informationen finden Sie unter API-Proxys.

In einer API-Proxykonfiguration verwenden Sie Abläufe, um die Verarbeitungsschritte zu konfigurieren, die in Ihrer API-Anfrage und -Antwort ausgeführt werden. Verarbeitungsschritte können Aktivitäten wie das Generieren und Signieren von JSON-Webtokens (JWT), das Hinzufügen von Anfrage- und Antwort-Headern oder die Verwendung bestimmter Apigee Edge-Funktionen umfassen. Apigee Edge bietet verschiedene integrierte API-Richtlinien für die Durchführung dieser Aktivitäten. Sie können diese Richtlinien Ihren API-Abläufen hinzufügen.

Apigee Edge bietet eine Reihe von Möglichkeiten zur Bereitstellung von API-Proxys. Dazu gehören eine Webverwaltungsoberfläche (Anmeldung erforderlich), Management APIs und Befehlszeilentools.

In dieser Anleitung verwenden Sie apigeetool zum Erstellen der erforderlichen Apigee-Ressourcen und zum Bereitstellen des API-Proxys.

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. Richten Sie in Cloud Shell die Umgebungsvariablen ein, die später benötigt werden. Ersetzen Sie [YOUR_APIGEE_USER_EMAIL], [YOUR_APIGEE_ORGANIZATION], [YOUR_APIGEE_ENVIRONMENT] und [YOUR_APIGEE_USER_PASSWORD] durch Ihre Werte.

    • Ihrem Apigee-Konto wird automatisch die Rolle des Organisationsadministrators zugewiesen. Es hat einen Superuser-Zugriff auf alle Ressourcen in Ihrer Apigee-Organisation. Weitere Informationen finden Sie unter Funktionen verschiedener Apigee-Rollen.
    • Ihr Apigee-Unternehmen wird automatisch erstellt. Den Namen der Organisation finden Sie in der Webverwaltungsoberfläche von Apigee, links oben auf der Seite, auf der Ihr Kontoname angezeigt wird.
    • Es wurden automatisch zwei Apigee-Umgebungen namens test und prod erstellt. Sie können beide Umgebungen in den folgenden Schritten verwenden.

    1. Exportieren Sie die für apigeetool erforderlichen Umgebungsvariablen:

      export APIGEE_USERNAME=[YOUR_APIGEE_USER_EMAIL]
      export APIGEE_ORGANIZATION=[YOUR_APIGEE_ORGANIZATION]
      
    2. Exportieren Sie optional eine Umgebungsvariable für Ihr Apigee-Passwort:

      export APIGEE_PASSWORD=[YOUR_APIGEE_USER_PASSWORD]
      
    3. Richten Sie andere Umgebungsvariablen ein, die für die Arbeit mit Ihrer Apigee-Umgebung benötigt werden:

      APIGEE_ENVIRONMENT=[YOUR_APIGEE_ENVIRONMENT]
      
    4. Übernehmen Sie den standardmäßigen Apigee-Cache-Namen "google":

      APIGEE_CACHE=google
    5. Richten Sie Umgebungsvariablen für den Modellnamen und die Version der AI Platform ein. Diese Variablen müssen mit den Werten übereinstimmen, die Sie bisher für das Deployment der Modellversion verwendet haben:

      MODEL_NAME=census
      MODEL_VERSION=v1
      
    6. Richten Sie eine Umgebungsvariable für das Dienstkonto ein, mit dem Apigee die AI Platform-Onlinevorhersage aufruft:

      SERVICE_ACCOUNT=income-prediction-api@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
      
  3. Installieren Sie apigeetool. Damit können Sie Apigee-Ressourcen erstellen und den API-Proxy bereitstellen:

    npm install -g apigeetool
    
    alias apigeetool=$(npm config get prefix)/bin/apigeetool
    
  4. Extrahieren Sie den privaten Schlüssel Ihres Dienstkontos aus der JSON-Anmeldedatendatei, die Sie zuvor gespeichert haben:

    PRIVATE_KEY=`sed -rne 's/^.*\"private_key\": \"(.*)\",$/\1/p' <  ${HOME}/key.json`
    
  5. Erstellen Sie eine verschlüsselte Schlüsselwertkarte (KVM), um den Dienstkontonamen und den privaten Schlüssel in Apigee Edge sicher zu speichern:

    apigeetool createkvmmap \
        -e ${APIGEE_ENVIRONMENT} \
        --encrypted \
        --mapName "secrets"
    
  6. Fügen Sie den Dienstkontonamen zur verschlüsselten KVM hinzu:

    apigeetool addEntryToKVM \
        -e ${APIGEE_ENVIRONMENT} \
        --mapName "secrets" \
        --entryName "service-account" \
        --entryValue "${SERVICE_ACCOUNT}"
    
  7. Fügen Sie den privaten Schlüssel zur verschlüsselten KVM hinzu:

    apigeetool addEntryToKVM \
        -e ${APIGEE_ENVIRONMENT} \
        --mapName "secrets" \
        --entryName "private-key" \
        --entryValue "`echo -e ${PRIVATE_KEY}`"
    
  8. Aktualisieren Sie den API-Proxyendpunkt in Ihrem in AI Platform bereitgestellten Modell. Der API-Proxy leitet Anfragen an die Methode projects.predict für Ihr gehostetes Modell in der Onlinevorhersage der AI Platform weiter.

    sed -i \
        -e "s/\[project\]/${GOOGLE_CLOUD_PROJECT}/" \
        -e "s/\[model-name\]/${MODEL_NAME}/" \
        -e "s/\[model-version\]/${MODEL_VERSION}/" \
        ${HOME}/cmle-op-apigee-tutorial/apiproxy/targets/default.xml
    
  9. Erstellen Sie einen Apigee-Cache zum temporären Speichern von OAuth2-Zugriffstoken, die vom Google Authorization Server zurückgegeben werden:

    apigeetool createcache \
        -e ${APIGEE_ENVIRONMENT} \
        -z ${APIGEE_CACHE}
    
  10. Gewähren Sie IAM-Berechtigungen (Identitäts- und Zugriffsverwaltung), damit Ihr Dienstkonto Vorhersagen für Ihr Modell anfordern kann. Sie erteilen diese Berechtigungen, indem Sie die IAM-Richtlinienbindung für das Modell census so hinzufügen:

    gcloud ml-engine models add-iam-policy-binding \
        ${MODEL_NAME} \
        --member=serviceAccount:${SERVICE_ACCOUNT} \
        --role=roles/ml.modelUser
    
  11. Erstellen Sie den API-Proxy:

    apigeetool deployproxy  \
        -e ${APIGEE_ENVIRONMENT} \
        -n income_prediction -d ${HOME}/cmle-op-apigee-tutorial
    

API-Produkte zum Verteilen Ihrer APIs bereitstellen

Sie können ein API-Produkt von Apigee verwenden, um bestimmte Zugriffsebenen und Funktionen zu konfigurieren, die Entwicklern zur Verfügung stehen. Sie können beispielsweise zwei API-Produkte erstellen, die den Dienststufen "Test" und "Premium" für Ihre gehosteten Modelle in AI Platform entsprechen, wobei sich die Stufen durch die jeweils zulässigen Kontingente, aufrufbaren Funktionen und andere Funktionen unterscheiden.

In diesem Abschnitt erstellen Sie zwei API-Produkte: Income Prediction Trial und Income Prediction Premium. Beide API-Produkte werden für die Verwendung des API-Proxys konfiguriert, den Sie im vorherigen Schritt erstellt haben. Allerdings werden unterschiedliche Nutzungsrichtlinien verbindlich festgelegt, wie im Folgenden erläutert:

  • Das API-Produkt Income Prediction Trial erzwingt ein kleineres tägliches Nutzungskontingent. Entwickler können damit aber API-Schlüssel durch einen automatisierten Prozess abrufen. Diese Richtlinie ermöglicht eine Zugriffsstufe wie für eine kostenlose Testversion, mit der Sie einen einfachen Zugriff auf Ihre API und relativ niedrige Nutzungsbeschränkungen zur Verfügung stellen.

  • Das API-Produkt Income Prediction Premium bietet ein höheres tägliches Nutzungskontingent, erfordert jedoch einen manuellen Genehmigungsprozess für Entwickler. Diese Richtlinie ermöglicht eine Zugriffsstufe wie für den bezahlten Erwerb für die API. Die Stufe bietet Zugriffs- und erhöhte Nutzungsbeschränkungen.

So erstellen Sie die API-Produkte:

  1. Erstellen Sie das API-Produkt Income Prediction Trial:

    apigeetool createProduct \
        --approvalType "auto" \
        --environments ${APIGEE_ENVIRONMENT} \
        --proxies income_prediction \
        --productName "income_prediction_trial" \
        --productDesc "Free trial API for income prediction." \
        --quota 10 \
        --quotaInterval 1 \
        --quotaTimeUnit "day"
    
  2. Erstellen Sie das API-Produkt Income Prediction Premium:

    apigeetool createProduct \
        --approvalType "manual" \
        --environments ${APIGEE_ENVIRONMENT} \
        --proxies income_prediction \
        --productName "income_prediction_premium" \
        --productDesc "Premium API for income prediction." \
        --quota 10000 \
        --quotaInterval 1 \
        --quotaTimeUnit "day"
    

Entwicklerprofile erstellen

Entwicklerprofile können entweder von einem Apigee Edge-Administrator oder von Nutzern erstellt werden, die einen Self-Service-Anmeldeablauf verwenden.

  1. Erstellen Sie ein Entwicklerprofil für John:

    apigeetool createDeveloper \
        --email john@example.com \
        --firstName John \
        --lastName Citizen \
        --userName john@example.com
    
  2. Erstellen Sie ein zweites Entwicklerprofil für Sally:

    apigeetool createDeveloper \
        --email sally@example.com \
        --firstName Sally \
        --lastName Resident \
        --userName sally@example.com
    

Entwickleranwendungen registrieren

In diesem Abschnitt registrieren Sie manuell Entwickleranwendungen für die beiden Entwicklerprofile.

Nach erfolgreicher Ausführung der folgenden Befehle wird eine JSON-Antwort auf dem Terminal angezeigt. Notieren Sie sich für jeden Befehl den Wert des Attributs consumerKey. Dies ist der für die Entwickleranwendung generierte API-Schlüssel.

  1. Registrieren Sie die Entwickleranwendung FooApp und verknüpfen Sie sie mit John, um sie mit dem API-Produkt Income Prediction Trial zu verwenden. Dieser Befehl verwendet jq, um den Wert des Attributs consumerKey aus der Antwort zu extrahieren. Notieren Sie diesen Wert.

    FOOAPP_API_KEY="$(apigeetool createApp \
        --apiProducts "income_prediction_trial" \
        --name "FooApp" \
        --email john@example.com \
        | jq -r '.credentials[0].consumerKey')"
    
  2. Registrieren Sie die Entwickleranwendung BarApp und verknüpfen Sie sie mit Sally, um sie mit dem API-Produkt Income Prediction Premium zu verwenden. Notieren Sie den Wert consumerKey aus der Ausgabe.

    BARAPP_API_KEY="$(apigeetool createApp \
        --apiProducts "income_prediction_premium" \
        --name "BarApp" \
        --email sally@example.com \
        | jq -r '.credentials[0].consumerKey')"
    

API-Proxy testen

Wenn Sie den API-Proxy testen möchten, können Sie jetzt mit dem API-Schlüssel die Income Prediction-API aufrufen.

  1. Testen Sie den API-Schlüssel, also den Wert des Attributs consumerKey, für die Anwendung FooApp, die für den Entwickler John registriert ist.

    curl -s -X POST \
        -H "Content-Type: application/json" \
        -H "X-APIKEY: ${FOOAPP_API_KEY}" \
        -d '{
            "instances": [{
                "age": 25,
                "workclass": "Private",
                "education": "Some-college",
                "education_num": 1,
                "marital_status": "Never-married",
                "occupation": "Other-service",
                "relationship": "Other-relative",
                "race": "Other",
                "gender": "Female",
                "capital_gain": 0,
                "capital_loss": 0,
                "hours_per_week": 40,
                "native_country": "United-States"}]
        }' \
        https://${APIGEE_ORGANIZATION}-${APIGEE_ENVIRONMENT}.apigee.net/ml/census/v1/predict
    

    Wenn der Test erfolgreich ist, sieht die Antwort so aus:

    {
        "predictions":[
            {
                "probabilities":[
                    0.7692753076553345,
                    0.23072466254234314
                ],
                "class_ids":[
                    0
                ],
                "classes":[
                    "0"
                ],
                "logits":[
                    -1.204223871231079
                ],
                "logistic":[
                    0.23072466254234314
                ]
            }
        ]
    }
    

    Wiederholen Sie die Anfrage zehn weitere Male, um das Kontingent auszuschöpfen:

    for i in `seq 10`; do !! | jq '.' ; done
    

    Wenn das Kontingent überschritten wird, gibt Apigee Edge einen Fehler zurück:

    {
        "fault":{
            "detail":{
                "errorcode": "policies.ratelimit.QuotaViolation"
            },
            "faultstring": "Rate limit quota violation. Quota limit exceeded. Identifier : \_default"
        }
    }
    

    Die Anfrage wird zurückgewiesen, wenn der API-Schlüssel aus dem Anfrage-Header entfernt wird:

    {
        "fault":{
            "faultstring": "Failed to resolve API Key variable request.header.X-APIKEY",
            "detail":{
               "errorcode": "steps.oauth.v2.FailedToResolveAPIKey"
            }
        }
    }
    
  2. Testen Sie den API-Schlüssel, also den Wert des Attributs consumerKey, für die Anwendung BarApp, die für die Entwicklerin Sally registriert ist.

    curl -s -X POST \
        -H "Content-Type: application/json" \
        -H "X-APIKEY: ${BARAPP_API_KEY}" \
        -d '{
            "instances": [{
                "age": 25,
                "workclass": "Private",
                "education": "Some-college",
                "education_num": 1,
                "marital_status": "Never-married",
                "occupation": "Other-service",
                "relationship": "Other-relative",
                "race": "Other",
                "gender": "Female",
                "capital_gain": 0,
                "capital_loss": 0,
                "hours_per_week": 40,
                "native_country": "United-States"}]
        }' \
        https://${APIGEE_ORGANIZATION}-${APIGEE_ENVIRONMENT}.apigee.net/ml/census/v1/predict | jq '.'
    

    Die Ausgabe sieht so aus, da das API-Produkt für den API-Schlüssel noch nicht genehmigt wurde:

    {
        "fault": {
            "faultstring": "Invalid ApiKey for given resource",
            "detail": {
                "errorcode": "oauth.v2.InvalidApiKeyForGivenResource"
            }
        }
    }
    

API-Produkte genehmigen und widerrufen

Im vorherigen Schritt hat der API-Proxy einen Fehler zurückgegeben, als der API-Schlüssel für die BarApp-Anwendung verwendet wurde, da das API-Produkt nicht für die Verwendung mit dem API-Schlüssel genehmigt wurde.

Wenn Sie das API-Produkt für die Verwendung mit dem BarApp-API-Schlüssel genehmigen möchten, können Sie die Apigee Edge Management API nutzen. Alternativ können Sie zum Genehmigen des API-Produkts die Apigee Edge-Weboberfläche verwenden. Erfahren Sie mehr zum manuellen Genehmigen oder Widerrufen von API-Schlüsseln mithilfe der Weboberfläche.

Führen Sie die folgenden Schritte in Cloud Shell aus, um das API-Produkt mithilfe der Apigee Edge Management API zu genehmigen.

  1. Richten Sie Umgebungsvariablen ein, die Sie in späteren Befehlen benötigen:

    DEVELOPER_EMAIL=sally@example.com
    APP_NAME=BarApp
    API_PRODUCT=income_prediction_premium
    
  2. Rufen Sie die Apigee Edge Management API auf, um das API-Produkt für die Verwendung mit dem API-Schlüssel zu genehmigen:

    curl -s -X POST \
        -u "${APIGEE_USERNAME}" \
        --header "Content-Type: application/octet-stream" \
        "https://api.enterprise.apigee.com/v1/organizations/${APIGEE_ORGANIZATION}/developers/${DEVELOPER_EMAIL}/apps/${APP_NAME}/keys/${BARAPP_API_KEY}/apiproducts/${API_PRODUCT}?action=approve"
    
  3. Wiederholen Sie die API-Anfrage mit dem API-Schlüssel:

    curl -s -X POST \
        -H "Content-Type: application/json" \
        -H "X-APIKEY: ${BARAPP_API_KEY}" \
        -d '{
            "instances": [{
                "age": 25,
                "workclass": "Private",
                "education": "Some-college",
                "education_num": 1,
                "marital_status": "Never-married",
                "occupation": "Other-service",
                "relationship": "Other-relative",
                "race": "Other",
                "gender": "Female",
                "capital_gain": 0,
                "capital_loss": 0,
                "hours_per_week": 40,
                "native_country": "United-States"}]
        }' \
        https://${APIGEE_ORGANIZATION}-${APIGEE_ENVIRONMENT}.apigee.net/ml/census/v1/predict | jq '.'
    

    Die Ausgabe sieht etwa so aus, da das API-Produkt für den API-Schlüssel genehmigt wurde:

    {
        "predictions":[
            {
                "probabilities":[
                    0.7692753076553345,
                    0.23072466254234314
                ],
                "class_ids":[
                    0
                ],
                "classes":[
                    "0"
                ],
                "logits":[
                    -1.204223871231079
                ],
                "logistic":[
                    0.23072466254234314
                ]
            }
        ]
    }
    

Self-Service-Registrierung über das Entwicklerportal aktivieren

In dieser Anleitung haben Sie ein Apigee-Administratorkonto zum Erstellen von Entwicklerprofilen, Anwendungen und API-Schlüsseln verwendet.

Sie können die Self-Service-Registrierung für Ihr API-Produkt mithilfe eines Entwicklerdienstportals aktivieren. Mit diesem Portal können Nutzer Entwicklerprofile und Anwendungen registrieren und API-Schlüssel über einen Self-Service-Ablauf generieren. Wenn Sie ein Self-Service-Portal aktivieren, können einzelne Nutzer über einen automatisierten Ablauf auf Ihre API zugreifen. Abhängig von Ihren Anforderungen kann die API-Schlüsselfreigabe über einen solchen automatisierten Ablauf entweder automatisch erfolgen oder noch eine manuelle Genehmigung erfordern.

Apigee Edge bietet ein grafisches webbasiertes Tool zum Erstellen Ihres Entwicklerportals. Weitere Informationen finden Sie unter Erstellen eines Entwicklerportals für Ihre API-Produkte.

Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud Platform-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:

  • Löschen Sie das Projekt.
  • Schließen Sie Ihr Apigee Edge-Testkonto.
  • Beenden Sie die Bereitstellung von API-Proxyanfragen.

Projekt löschen

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite "Ressourcen verwalten"

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen .
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden, um das Projekt zu löschen.

Apigee Edge-Testkonto schließen

Ihr Apigee Edge-Testkonto wird automatisch geschlossen, wenn der Testzeitraum abgelaufen ist. Sie müssen keine besonderen Maßnahmen ergreifen, um Ihr Testkonto zu löschen.

Bereitstellung von API-Proxyanfragen beenden

Beenden Sie das Bereitstellen des API-Proxys oder löschen Sie ihn, um die Bereitstellung von API-Proxyanfragen zu beenden. Löschen Sie auch alle Entwicklerportale, um neue Registrierungen zu verhindern.

  1. Beenden Sie in Cloud Shell die Bereitstellung des API-Proxys mithilfe von apigeetool:

    apigeetool undeploy \
        -u ${APIGEE_USERNAME} \
        -o ${APIGEE_ORGANIZATION} \
        -n income_prediction
        -e ${APIGEE_ENVIRONMENT} \
        -r 1 \
        -n income_prediction
    

    Die Ausgabe sieht dann ungefähr so aus:

    "income_prediction" Revision 1
      undeployed
      environment = test
      base path = /
    

Weitere Informationen