Binden einer Azure Database for PostgreSQL-Instanz an Ihre Anwendung in Azure Spring Apps
Hinweis
Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.
Dieser Artikel gilt für: ✔️ Java ✔️ C#
Dieser Artikel gilt für: ✔️ Basic/Standard ✔️ Enterprise
Mit Azure Spring Apps können Sie ausgewählte Azure-Dienste automatisch an Ihre Anwendungen binden, anstatt Ihre Spring Boot-Anwendung manuell zu konfigurieren. In diesem Artikel erfahren Sie, wie Sie Ihre Anwendung an Ihre Azure Database for PostgreSQL-Instanz binden.
In diesem Artikel enthalten wir zwei Authentifizierungsmethoden: Microsoft Entra-Authentifizierung und PostgreSQL-Authentifizierung. Die Registerkarte Kennwortlos zeigt die Microsoft Entra-Authentifizierung und die Registerkarte Kennwort die PostgreSQL-Authentifizierung.
Die Microsoft Entra-Authentifizierung ist ein Mechanismus zum Herstellen einer Verbindung mit Azure Database for PostgreSQL unter Verwendung von Identitäten, die in Microsoft Entra ID definiert sind. Mit der Microsoft Entra-Authentifizierung können Sie Datenbankbenutzeridentitäten und andere Microsoft-Dienste an einem zentralen Ort verwalten, wodurch die Berechtigungsverwaltung vereinfacht wird.
Die PostgreSQL-Authentifizierung verwendet Konten, die in PostgreSQL gespeichert sind. Wenn Sie kennwörter als Anmeldeinformationen für die Konten verwenden, werden diese Anmeldeinformationen in der Benutzertabelle gespeichert. Da diese Kennwörter in PostgreSQL gespeichert sind, müssen Sie die Drehung der Kennwörter selbst verwalten.
Voraussetzungen
- Eine in Azure Spring Apps bereitgestellte Anwendung. Weitere Informationen finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.
- Eine Instanz von Azure Database for PostgreSQL – Flexibler Server.
- Azure CLI (ab Version 2.45.0)
Vorbereiten Ihres Projekts
Bereiten Sie Ihr Projekt mit den folgenden Schritten vor:
Fügen Sie der Datei pom.xml Ihres Projekts die folgende Abhängigkeit hinzu:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Entfernen Sie in der Datei application.properties alle
spring.datasource.*
-Eigenschaften.Aktualisieren Sie die aktuelle App durch Ausführen von
az spring app deploy
, oder erstellen Sie eine neue Bereitstellung für diese Änderung, indem Sieaz spring app deployment create
ausführen.
Binden der App an Ihre Azure Database for PostgreSQL-Instanz
Hinweis
Stellen Sie sicher, dass Sie nur eine der folgenden Ansätze auswählen, um eine Verbindung zu erstellen. Wenn Sie bereits Tabellen mit einer Verbindung erstellt haben, können andere Benutzer nicht auf die Tabellen zugreifen oder diese ändern. Wenn Sie den anderen Ansatz ausprobieren, löst die Anwendung Fehler wie "Berechtigung verweigert" aus. Um dieses Problem zu beheben, stellen Sie eine Verbindung mit einer neuen Datenbank her, oder löschen Sie sie, und erstellen Sie eine vorhandene neu.
Hinweis
Standardmäßig werden Dienst-Verbinden oren auf Anwendungsebene erstellt. Um die Verbindungen außer Kraft zu setzen, können Sie in den Bereitstellungen wieder andere Verbindungen erstellen.
Installieren Sie die kennwortlose Dienstconnector-Erweiterung für die Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Konfigurieren Sie Azure Spring Apps so, dass anhand des Befehls
az spring connection create
mit einer systemseitig zugewiesenen verwalteten Identität eine Verbindung mit der PostgreSQL-Datenbank hergestellt wird.az spring connection create postgres-flexible \ --resource-group $AZ_SPRING_APPS_RESOURCE_GROUP \ --service $AZ_SPRING_APPS_SERVICE_INSTANCE_NAME \ --app $APP_NAME \ --deployment $DEPLOYMENT_NAME \ --target-resource-group $POSTGRES_RESOURCE_GROUP \ --server $POSTGRES_SERVER_NAME \ --database $DATABASE_NAME \ --system-identity
Voraussetzungen
- Eine in Azure Spring Apps bereitgestellte Anwendung. Weitere Informationen finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.
- Eine Azure-Datenbank für die Single Server-Instanz von PostgreSQL.
- Azure CLI (ab Version 2.45.0)
Vorbereiten Ihres Projekts
Bereiten Sie Ihr Projekt mit den folgenden Schritten vor:
Fügen Sie der Datei pom.xml Ihres Projekts die folgende Abhängigkeit hinzu:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId> </dependency>
Entfernen Sie in der Datei application.properties alle
spring.datasource.*
-Eigenschaften.Aktualisieren Sie die aktuelle App durch Ausführen von
az spring app deploy
, oder erstellen Sie eine neue Bereitstellung für diese Änderung, indem Sieaz spring app deployment create
ausführen.
Binden der App an Ihre Azure Database for PostgreSQL-Instanz
Hinweis
Dienst-Verbinden or werden auf Bereitstellungsebene erstellt. Wenn also eine andere Bereitstellung erstellt wird, müssen Sie die Verbindungen erneut erstellen.
Installieren Sie die kennwortlose Dienstconnector-Erweiterung für die Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Konfigurieren Sie Azure Spring Apps so, dass anhand des Befehls
az spring connection create
mit einer systemseitig zugewiesenen verwalteten Identität eine Verbindung mit der PostgreSQL-Datenbank hergestellt wird.az spring connection create postgres \ --resource-group $AZ_SPRING_APPS_RESOURCE_GROUP \ --service $AZ_SPRING_APPS_SERVICE_INSTANCE_NAME \ --app $APP_NAME \ --deployment $DEPLOYMENT_NAME \ --target-resource-group $POSTGRES_RESOURCE_GROUP \ --server $POSTGRES_SERVER_NAME \ --database $DATABASE_NAME \ --system-identity
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie eine Anwendung in Azure Spring Apps an eine Azure Database for PostgreSQL-Instanz binden können. Weitere Informationen zum Binden von Diensten an eine Anwendung finden Sie unter Binden einer Azure Cosmos DB-Datenbank an eine Anwendung in Azure Spring Apps.