Aspire.Hosting.Azure.PostgreSQL
9.0.0
Prefix Reserved
dotnet add package Aspire.Hosting.Azure.PostgreSQL --version 9.0.0
NuGet\Install-Package Aspire.Hosting.Azure.PostgreSQL -Version 9.0.0
<PackageReference Include="Aspire.Hosting.Azure.PostgreSQL" Version="9.0.0" />
paket add Aspire.Hosting.Azure.PostgreSQL --version 9.0.0
#r "nuget: Aspire.Hosting.Azure.PostgreSQL, 9.0.0"
// Install Aspire.Hosting.Azure.PostgreSQL as a Cake Addin #addin nuget:?package=Aspire.Hosting.Azure.PostgreSQL&version=9.0.0 // Install Aspire.Hosting.Azure.PostgreSQL as a Cake Tool #tool nuget:?package=Aspire.Hosting.Azure.PostgreSQL&version=9.0.0
Aspire.Hosting.Azure.PostgreSQL library
Provides extension methods and resource definitions for a .NET Aspire AppHost to configure Azure Database for PostgreSQL.
Getting started
Prerequisites
- Azure subscription - create one for free
Install the package
In your AppHost project, install the .NET Aspire Azure PostgreSQL Hosting library with NuGet:
dotnet add package Aspire.Hosting.Azure.PostgreSQL
Configure Azure Provisioning for local development
Adding Azure resources to the .NET Aspire application model will automatically enable development-time provisioning for Azure resources so that you don't need to configure them manually. Provisioning requires a number of settings to be available via .NET configuration. Set these values in user secrets in order to allow resources to be configured automatically.
{
"Azure": {
"SubscriptionId": "<your subscription id>",
"ResourceGroupPrefix": "<prefix for the resource group>",
"Location": "<azure location>"
}
}
NOTE: Developers must have Owner access to the target subscription so that role assignments can be configured for the provisioned resources.
Usage example
Then, in the Program.cs file of AppHost
, register a Postgres database and consume the connection using the following methods:
var postgresdb = builder.AddAzurePostgresFlexibleServer("pg")
.AddDatabase("postgresdb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(postgresdb);
The WithReference
method configures a connection in the MyService
project named postgresdb
. By default, AddAzurePostgresFlexibleServer
configures Microsoft Entra ID authentication. This requires changes to applications that need to connect to these resources. In the Program.cs file of MyService
, the database connection can be consumed using the client library Aspire.Npgsql and Azure.Identity:
builder.AddNpgsqlDataSource("postgresdb", configureDataSourceBuilder: dataSourceBuilder =>
{
if (string.IsNullOrEmpty(dataSourceBuilder.ConnectionStringBuilder.Password))
{
dataSourceBuilder.UsePeriodicPasswordProvider(async (_, ct) =>
{
var credentials = new DefaultAzureCredential();
var token = await credentials.GetTokenAsync(new TokenRequestContext(["https://ossrdbms-aad.database.windows.net/.default"]), ct);
return token.Token;
}, TimeSpan.FromHours(24), TimeSpan.FromSeconds(10));
}
});
Additional documentation
- https://www.npgsql.org/doc/basic-usage.html
- https://github.com/dotnet/aspire/tree/main/src/Components/README.md
Feedback & contributing
https://github.com/dotnet/aspire
*Postgres, PostgreSQL and the Slonik Logo are trademarks or registered trademarks of the PostgreSQL Community Association of Canada, and used with their permission.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Aspire.Hosting.Azure (>= 9.0.0)
- Aspire.Hosting.PostgreSQL (>= 9.0.0)
- AspNetCore.HealthChecks.NpgSql (>= 8.0.2)
- AspNetCore.HealthChecks.Uris (>= 8.0.1)
- Azure.Core (>= 1.44.1)
- Azure.Identity (>= 1.13.1)
- Azure.Provisioning (>= 1.0.0)
- Azure.Provisioning.KeyVault (>= 1.0.0)
- Azure.Provisioning.PostgreSql (>= 1.0.0)
- Azure.ResourceManager.Authorization (>= 1.1.3)
- Azure.ResourceManager.KeyVault (>= 1.3.0)
- Azure.ResourceManager.Resources (>= 1.9.0)
- Azure.Security.KeyVault.Secrets (>= 4.7.0)
- Google.Protobuf (>= 3.28.2)
- Grpc.AspNetCore (>= 2.66.0)
- Grpc.Net.ClientFactory (>= 2.66.0)
- Grpc.Tools (>= 2.67.0)
- Humanizer.Core (>= 2.14.1)
- JsonPatch.Net (>= 3.1.1)
- KubernetesClient (>= 15.0.1)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 8.0.11)
- Microsoft.Extensions.Hosting (>= 8.0.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options (>= 8.0.2)
- Microsoft.Extensions.Primitives (>= 8.0.0)
- Polly.Core (>= 8.4.2)
- System.IO.Hashing (>= 8.0.0)
- System.Text.Json (>= 8.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Aspire.Hosting.Azure.PostgreSQL:
Repository | Stars |
---|---|
FritzAndFriends/TagzApp
An application that discovers content on social media for hashtags
|
Version | Downloads | Last updated |
---|---|---|
9.0.0 | 4,416 | 11/12/2024 |
9.0.0-rc.1.24511.1 | 811 | 10/15/2024 |
8.2.2 | 1,359 | 10/24/2024 |
8.2.1 | 1,900 | 9/26/2024 |
8.2.0 | 2,523 | 8/29/2024 |
8.1.0 | 1,242 | 7/23/2024 |
8.0.2 | 636 | 6/28/2024 |
8.0.1 | 1,600 | 5/21/2024 |
8.0.0 | 186 | 5/21/2024 |
8.0.0-preview.7.24251.11 | 139 | 5/7/2024 |
8.0.0-preview.6.24214.1 | 270 | 4/23/2024 |
8.0.0-preview.5.24201.12 | 229 | 4/9/2024 |