Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung stellen Sie eine einfache Azure Cosmos DB for Table-Anwendung mithilfe des Azure SDK für Go bereit. Azure Cosmos DB for Table ist ein schemaloser Datenspeicher, der es Anwendungen ermöglicht, strukturierte Tabellendaten in der Cloud zu speichern. Sie erfahren, wie Sie Tabellen, Zeilen und grundlegende Aufgaben in Ihrer Azure Cosmos DB-Ressource mithilfe des Azure SDK für Go erstellen.
Bibliotheksquellcode | Package (Go) | Azure Developer CLI
Voraussetzungen
- Azure Developer CLI
- Docker Desktop
Go
1.21 oder höher
Sollten Sie kein Azure-Konto haben, erstellen Sie zunächst ein kostenloses Konto.
Initialisieren des Projekts
Verwenden Sie die Azure Developer CLI (azd
), um ein Azure Cosmos DB for Table-Konto zu erstellen und eine containerisierte Beispielanwendung bereitzustellen. Die Beispielanwendung verwendet die Clientbibliothek zum Verwalten, Erstellen, Lesen und Abfragen von Beispieldaten.
Öffnen Sie ein Terminal in einem leeren Verzeichnis.
Wenn Sie noch nicht authentifiziert sind, authentifizieren Sie sich mithilfe von
azd auth login
bei der Azure Developer CLI. Führen Sie die vom Tool angegebenen Schritte aus, um sich mit Ihren bevorzugten Azure-Anmeldeinformationen bei der CLI zu authentifizieren.azd auth login
Verwenden Sie
azd init
, um das Projekt zu initialisieren.azd init --template cosmos-db-table-go-quickstart
Konfigurieren Sie während der Initialisierung einen eindeutigen Umgebungsnamen.
Stellen Sie das Azure Cosmos DB-Konto mit
azd up
bereit. Die Bicep-Vorlagen deployen auch eine Beispiel-Web-Anwendung.azd up
Wählen Sie während des Bereitstellungsprozesses Ihr Abonnement, den gewünschten Standort und die Zielressourcengruppe aus. Warten Sie auf den Abschluss des Bereitstellungsvorgangs. Dieser Prozess kann ca. fünf Minuten dauern.
Sobald die Bereitstellung Ihrer Azure-Ressourcen abgeschlossen ist, enthält die Ausgabe eine URL zur ausgeführten Webanwendung.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
Verwenden Sie die URL in der Konsole, um im Browser zu Ihrer Webanwendung zu navigieren. Sehen Sie sich die Ausgabe der ausgeführten App an.
Installieren der Clientbibliothek
Die Clientbibliothek ist über Go als aztables
-Paket verfügbar.
Öffnen Sie ein Terminal, und navigieren Sie zu dem
/src
-Ordner.cd ./src
Installieren Sie das
aztables
-Paket mithilfe vongo install
, falls es noch nicht installiert ist.go install github.com/Azure/azure-sdk-for-go/sdk/data/aztables
Öffnen und überprüfen Sie die Datei src/go.mod, um zu überprüfen, ob der
github.com/Azure/azure-sdk-for-go/sdk/data/aztables
-Eintrag vorhanden ist.
Importieren von Bibliotheken
Importieren Sie die Pakete github.com/Azure/azure-sdk-for-go/sdk/azidentity
und github.com/Azure/azure-sdk-for-go/sdk/data/aztables
in Ihren Anwendungscode.
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/data/aztables"
)
Objektmodell
Name | Beschreibung |
---|---|
ServiceClient |
Dieser Typ ist der primäre Clienttyp und wird verwendet, um kontoweite Metadaten oder Datenbanken zu verwalten. |
Client |
Dieser Typ stellt den Client für eine Tabelle innerhalb des Kontos dar. |
Codebeispiele
- Authentifizieren des Clients
- Einen Tisch bekommen
- Eine Entität erstellen
- Eine Entität abrufen
- Abfragen von Entitäten
Der Beispielcode in der Vorlage verwendet eine Tabelle mit dem Namen cosmicworks-products
. Die Tabelle cosmicworks-products
enthält Details wie Name, Kategorie, Menge, Preis, eindeutiger Bezeichner und ein Verkaufsflag für jedes Produkt. Der Container verwendet einen eindeutigen Bezeichner als Zeilenschlüssel und Kategorie als Partitionsschlüssel.
Authentifizieren des Clients
Dieses Beispiel erstellt eine neue Instanz des ServiceClient
-Typs.
credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
return err
}
client, err := aztables.NewServiceClient("<azure-cosmos-db-table-account-endpoint>", credential)
if err != nil {
log.Fatal(err)
}
Tabelle abrufen
In diesem Beispiel wird eine Instanz des Typs Client
mithilfe der NewClient
-Funktion des Typs ServiceClient
erstellt.
table, err := client.NewClient("<azure-cosmos-db-table-name>")
if err != nil {
log.Fatal(err)
}
Eine Entität erstellen
Die einfachste Möglichkeit zum Erstellen einer neuen Entität in einer Tabelle besteht darin, eine Instanz vom Typ aztables.EDMEntity
zu erstellen. Legen Sie die Eigenschaften RowKey
und PartitionKey
mithilfe des Typs aztables.Entity
fest und legen Sie dann zusätzliche Eigenschaften mithilfe einer Zeichenfolgenzuordnung fest.
entity := aztables.EDMEntity{
Entity: aztables.Entity{
RowKey: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
PartitionKey: "gear-surf-surfboards",
},
Properties: map[string]any{
"Name": "Yamba Surfboard",
"Quantity": 12,
"Price": 850.00,
"Clearance": false,
},
}
Konvertieren Sie die Entität in ein Byte-Array mit json.Marshal
und erstellen Sie dann die Entität in der Tabelle mit UpsertEntity
.
bytes, err := json.Marshal(entity)
if err != nil {
panic(err)
}
_, err = table.UpsertEntity(context.TODO(), bytes, nil)
if err != nil {
panic(err)
}
Eine Entität abrufen
Sie können eine bestimmte Entität aus einer Tabelle mithilfe von GetEntity
abrufen. Anschließend können Sie json.Unmarshal
verwenden, um sie mithilfe des aztables.EDMEntity
-Typs zu analysieren.
rowKey := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
partitionKey := "gear-surf-surfboards"
response, err := table.GetEntity(context.TODO(), partitionKey, rowKey, nil)
if err != nil {
panic(err)
}
var entity aztables.EDMEntity
err = json.Unmarshal(response.Value, &entity)
if err != nil {
panic(err)
}
Entitäten abfragen
Nachdem Sie eine Entität eingefügt haben, können Sie auch eine Abfrage ausführen, um alle Entitäten abzurufen, die einem bestimmten Filter entsprechen, indem Sie NewListEntitiesPager
mit einen Zeichenfolgenfilter verwenden.
category := "gear-surf-surfboards"
// Ensure the value is OData-compliant by escaping single quotes
safeCategory := strings.ReplaceAll(category, "'", "''")
filter := fmt.Sprintf("PartitionKey eq '%s'", safeCategory)
options := &aztables.ListEntitiesOptions{
Filter: &filter,
}
pager := table.NewListEntitiesPager(options)
Analysieren Sie die paginierten Ergebnisse der Abfrage mithilfe der More
-Funktion des Pagers, um zu ermitteln, ob weitere Seiten vorhanden sind, und dann die NextPage
-Funktion, um die nächste Seite mit Ergebnissen abzurufen.
for pager.More() {
response, err := pager.NextPage(context.TODO())
if err != nil {
panic(err)
}
for _, entityBytes := range response.Entities {
var entity aztables.EDMEntity
err := json.Unmarshal(entityBytes, &entity)
if err != nil {
panic(err)
}
writeOutput(fmt.Sprintf("Found entity:\t%s\t%s", entity.Properties["Name"], entity.RowKey))
}
}
Bereinigen von Ressourcen
Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.
azd down