Sie lesen gerade die Apigee Edge -Dokumentation.
Zur
Apigee X -Dokumentation. info
Version 1.4.1
Führen Sie Einfüge-, Abfrage- und Aktualisierungsvorgänge in einer Cloud Spanner-Datenbank aus.
Dieser Inhalt enthält eine Referenz zum Konfigurieren und Verwenden dieser Erweiterung. Bevor Sie die Erweiterung über einen API-Proxy mit der ExtensionCallout-Richtlinie verwenden, müssen Sie Folgendes tun:
Erstellen Sie eine Cloud Spanner-Instanz, wie unter Instanzen erstellen und verwalten beschrieben, und erstellen Sie eine Datenbank.
Nachdem Sie die Instanz und eine Datenbank erstellt haben, gewähren Sie die Berechtigung für den Zugriff auf Ihre Datenbank für das GCP-Dienstkonto, das Ihre Erweiterung darstellt. Weitere Informationen zur zu verwendenden Rolle finden Sie unter Cloud Spanner-Rollen. Weitere Informationen zur Cloud Spanner-Zugriffssteuerung finden Sie unter IAM-Rollen anwenden und Zugriffssteuerung für Cloud Spanner.
Wenn Sie ein Dienstkonto mit der gewünschten Zugriffsberechtigung auf Ihre Datenbank haben, generieren Sie in der GCP Console einen Schlüssel für das Dienstkonto. Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie diese Erweiterung konfigurieren.
Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie die Erweiterung mithilfe der Konfigurationsreferenz hinzufügen und konfigurieren.
Cloud Spanner
Cloud Spanner ist ein relationaler Datenbankdienst, der für relationale, strukturierte und halbstrukturierte Daten nützlich ist, die Hochverfügbarkeit, starke Konsistenz sowie Transaktionslese- und ‑schreibvorgänge erfordern.
Wenn Sie Cloud Spanner gerade erst kennenlernen, ist der Schnellstart in der Cloud Spanner-Dokumentation ein guter Ausgangspunkt.
Beispiele
Die folgenden Beispiele veranschaulichen, wie Sie die Unterstützung für Cloud Spanner-Erweiterungsaktionen mit der ExtensionCallout-Richtlinie konfigurieren.
Daten hinzufügen
Im folgenden Beispiel fügt die Aktion insert der Erweiterung einen neuen Nutzer zur Tabelle „user“ hinzu.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Insert-New-User">
<DisplayName>Insert New User</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
</ConnectorCallout>
Daten abrufen
In diesem Beispiel werden mit einer Abfrage die Werte für „username“ und „email“ aus der Tabelle user abgerufen.
Zuerst weist eine AssignMessage-Richtlinie eine postal.code.value Variable zur Verwendung in einer WHERE-Klausel einer Abfrage zu. Dies ist ein Beispiel. In Ihrer Richtlinie wird der Wert wahrscheinlich basierend auf Clientanfrageparametern festgelegt.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Postal-Code">
<AssignTo createNew="true" transport="http" type="request"/>
<AssignVariable>
<Name>postal.code</Name>
<Value>86519</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
Die folgende ExtensionCallout-Richtlinie führt eine Abfrage für die Datenbank aus und verwendet den Inhalt der postal.code.value Variablen in der WHERE-Klausel.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-User-Data">
<DisplayName>Get User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
<Output>spanner.userdata.retrieved</Output>
</ConnectorCallout>
Die folgende AssignMessage-Richtlinie verwendet dann die Antwort der Erweiterung,
die in der Variablen spanner.userdata.retrieved gespeichert ist, als Antwort für den Client.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Query-Response-Data">
<DisplayName>Get Query Response Data</DisplayName>
<AssignTo type="response" createNew="false"/>
<Set>
<Payload contentType="application/json">{spanner.userdata.retrieved}</Payload>
</Set>
</AssignMessage>
In diesem Beispiel werden die Antwortdaten als JSON zurückgegeben, z. B. so:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Daten aktualisieren
In diesem Beispiel enthält das Element <Input> den username (den Primärschlüssel der Tabelle) und einen neuen Wert für die Spalte email.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Update-User-Data">
<DisplayName>Update User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
</ConnectorCallout>
Aktionen
insert
Fügt die angegebenen Zeilen in die Datenbank ein.
Syntax
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "table-to-insert-into",
"rows" : "rows-to-insert"
}]]></Input>
Beispiel
Im folgenden Beispiel fügt die Aktion insert der Erweiterung einen neuen Nutzer zur Tabelle „user“ hinzu. Eine Zeile wird hinzugefügt.
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
Anfrageparameter
| Parameter | Beschreibung | Typ | Standard | Erforderlich |
|---|---|---|---|---|
| tableName | Die Tabelle in der Datenbank, in die die Zeilen eingefügt werden sollen. | String | Keine. | Ja. |
| rows | Die einzufügenden Zeilen, ausgedrückt als Array in einem JSON-Objekt rows. |
Array | Keine. | Ja. |
Antwort
Keine.
querySQL
Fragt die Datenbank mit der SQL-Anweisung mit den angegebenen Parametern ab. Parameter werden in der SQL-Anweisung mit vorangestellten @-Namen angegeben. Parameterwerte werden im Parameter params dieser Aktion angegeben.
Weitere Informationen zur Cloud Spanner-Abfragesyntax finden Sie unter Abfragesyntax.
Syntax
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
Beispiel
In diesem Beispiel werden mit einer Abfrage die Spaltenwerte username und email aus der Tabelle user abgerufen. Die SQL-Anweisung gibt einen Parameter postalCode an, der aus der Ablaufvariablen postal.code.value festgelegt wird.
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
Anfrageparameter
| Parameter | Beschreibung | Typ | Standard | Erforderlich |
|---|---|---|---|---|
| sql | Die auszuführende SQL-Abfrage. Sie können Parameter mit vorangestellten @-Parameternamen angeben. Diese Parameternamen müssen den Schlüsseln im Parameter params dieser Aktion entsprechen. |
String | Keine. | Ja. |
| params | Ein Objekt, dessen Schlüssel und Werte die Parameternamen und ‑werte sind, die in der SQL-Abfrage verwendet werden. Sie können hier mehrere Parameter auflisten. | Objekt | Keine. | Nein. |
Antwort
Ein rows-Objekt mit einem Array von Spaltenname/Wert-Paaren, die von der Abfrage zurückgegeben werden. Beispiel:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
update
Aktualisiert Zeilen in der Datenbank mit den angegebenen Daten.
Syntax
<Input><![CDATA[{
"tableName" : "table-with-rows-to-update",
"rows" : "rows-to-update"
}]]></Input>
Beispiel
In diesem Beispiel wird die E-Mail-Adresse für den Nutzer mit dem username „Liz456“ mit einem neuen Wert aktualisiert. Eine Zeile wird aktualisiert.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
Anfrageparameter
| Parameter | Beschreibung | Typ | Standard | Erforderlich |
|---|---|---|---|---|
| tableName | Die Tabelle in der Datenbank, in der Zeilen aktualisiert werden sollen. | String | Keine. | Ja. |
| rows | Ein Array mit Zeilendaten, die aktualisiert werden sollen. Jede Entität im Array muss den Wert der eindeutigen ID (z. B. Primärschlüssel) für die zu aktualisierende Zeile enthalten. | Array | Keine. | Ja. |
Antwort
Keine.
Konfigurationsreferenz
Verwenden Sie die folgenden Informationen, wenn Sie diese Erweiterung für die Verwendung in API-Proxys konfigurieren und bereitstellen. Eine Anleitung zum Konfigurieren einer Erweiterung mit der Apigee-Konsole finden Sie unter Erweiterung hinzufügen und konfigurieren.
Allgemeine Erweiterungseigenschaften
Für jede Erweiterung sind die folgenden Eigenschaften vorhanden.
| Attribut | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
name |
Der Name, den Sie dieser Konfiguration der Erweiterung zuweisen. | – | Ja |
packageName |
Name des Erweiterungspakets, wie von Apigee Edge angegeben. | – | Ja |
version |
Versionsnummer für das Erweiterungspaket, von dem Sie eine Erweiterung konfigurieren. | – | Ja |
configuration |
Konfigurationswert speziell für die Erweiterung, die Sie hinzufügen. Weitere Informationen finden Sie unter Eigenschaften für dieses Erweiterungspaket. | – | Ja |
Eigenschaften für dieses Erweiterungspaket
Geben Sie Werte für die folgenden Konfigurationseigenschaften an, die speziell für diese Erweiterung gelten.
| Attribut | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
| projectId | ID des GCP-Projekts, das die Datenbank enthält. | Keine. | Ja. |
| instanceId | ID der Cloud Spanner-Instanz in Ihrem GCP-Projekt. | Keine. | Ja. |
| databaseId | ID der Cloud Spanner-Datenbank. | Keine. | Ja. |
| Anmeldedaten | Wenn in der Apigee Edge-Konsole eingegeben, ist dies der Inhalt Ihrer Dienstkonto-Schlüsseldatei. Wenn über die Management API gesendet, ist es ein base64-codierter Wert, der aus der Dienstkonto-Schlüsseldatei generiert wurde. | Keine. | Ja. |