Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion playground/AspireEventHub/EventHubs.AppHost/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// required for the event processor client which will use the connectionName to get the connectionString.
var blob = builder.AddAzureStorage("ehstorage")
.RunAsEmulator()
.AddBlobs("checkpoints");
.AddBlobService("checkpoints");

var eventHub = builder.AddAzureEventHubs("eventhubns")
.RunAsEmulator()
Expand Down
2 changes: 1 addition & 1 deletion playground/AspireEventHub/EventHubsConsumer/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
else
{
// required for checkpointing our position in the event stream
builder.AddAzureBlobClient("checkpoints");
builder.AddAzureBlobServiceClient("checkpoints");

builder.AddAzureEventProcessorClient("eventhubOne");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
builder.AddServiceDefaults();

builder.AddCosmosDbContext<TestCosmosContext>("account", "db");
builder.AddAzureBlobClient("blobs");
builder.AddAzureBlobServiceClient("blobs");

var app = builder.Build();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
storage.AllowBlobPublicAccess = false;
})
.RunAsEmulator(c => c.WithLifetime(ContainerLifetime.Persistent));
var blobs = storage.AddBlobs("blobs");
var blobs = storage.AddBlobService("blobs");

// Testing projects
builder.AddProject<Projects.AzureAppService_ApiService>("api")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
builder.AddServiceDefaults();

builder.AddCosmosDbContext<TestCosmosContext>("account", "db");
builder.AddAzureBlobClient("blobs");
builder.AddAzureBlobServiceClient("blobs");
builder.AddRedisClient("cache");

var app = builder.Build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
// Testing a connection string
var storage = builder.AddAzureStorage("storage")
.RunAsEmulator(c => c.WithLifetime(ContainerLifetime.Persistent));
var blobs = storage.AddBlobs("blobs");
var blobs = storage.AddBlobService("blobs");

// Testing docker files

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

// Add service defaults & Aspire client integrations.
builder.AddServiceDefaults();
builder.AddAzureQueueClient("queue");
builder.AddAzureBlobClient("blob");
builder.AddAzureQueueServiceClient("queue");
builder.AddAzureBlobServiceClient("blob");
builder.AddAzureEventHubProducerClient("myhub");
#if !SKIP_UNSTABLE_EMULATORS
builder.AddAzureServiceBusClient("messaging");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
builder.AddAzureContainerAppEnvironment("env");

var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var queue = storage.AddQueues("queue");
var blob = storage.AddBlobs("blob");
var myBlobContainer = blob.AddBlobContainer("myblobcontainer");
var queue = storage.AddQueue("queue");
var blobContainer = storage.AddBlobContainer("myblobcontainer");

var eventHub = builder.AddAzureEventHubs("eventhubs")
.RunAsEmulator()
Expand All @@ -24,13 +23,13 @@
var funcApp = builder.AddAzureFunctionsProject<Projects.AzureFunctionsEndToEnd_Functions>("funcapp")
.WithExternalHttpEndpoints()
.WithReference(eventHub).WaitFor(eventHub)
.WithReference(myBlobContainer).WaitFor(myBlobContainer)
.WithReference(blobContainer).WaitFor(blobContainer)
#if !SKIP_UNSTABLE_EMULATORS
.WithReference(serviceBus).WaitFor(serviceBus)
.WithReference(cosmosDb).WaitFor(cosmosDb)
#endif
.WithReference(blob)
.WithReference(queue);
.WithReference(blobContainer).WaitFor(blobContainer)
.WithReference(queue).WaitFor(queue);

builder.AddProject<Projects.AzureFunctionsEndToEnd_ApiService>("apiservice")
.WithExternalHttpEndpoints()
Expand All @@ -39,8 +38,8 @@
.WithReference(serviceBus).WaitFor(serviceBus)
.WithReference(cosmosDb).WaitFor(cosmosDb)
#endif
.WithReference(queue)
.WithReference(blob)
.WithReference(queue).WaitFor(queue)
.WithReference(blobContainer).WaitFor(blobContainer)
.WithReference(funcApp);

builder.Build().Run();
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@

namespace AzureFunctionsEndToEnd.Functions;

public class MyAzureBlobTrigger(ILogger<MyAzureBlobTrigger> logger, BlobContainerClient containerClient)
public class MyAzureBlobTrigger(BlobContainerClient containerClient, ILogger<MyAzureBlobTrigger> logger)
{
[Function(nameof(MyAzureBlobTrigger))]
[BlobOutput("test-files/{name}.txt", Connection = "blob")]
public async Task<string> RunAsync([BlobTrigger("blobs/{name}", Connection = "blob")] string triggerString, FunctionContext context)
[BlobOutput("test-files/{name}.txt", Connection = "blob-blobs")]
public async Task<string> RunAsync([BlobTrigger("myblobcontainer/{name}", Connection = "blob-blobs")] string triggerString, FunctionContext context)
{
var blobName = (string)context.BindingContext.BindingData["name"]!;
await containerClient.UploadBlobAsync(blobName, new BinaryData(triggerString));
_ = await containerClient.GetAccountInfoAsync();

logger.LogInformation("C# blob trigger function invoked for 'blobs/{source}' with {message}...", blobName, triggerString);
logger.LogInformation("C# blob trigger function invoked for 'myblobcontainer/{source}' with {message}...", blobName, triggerString);
return triggerString.ToUpper();
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace AzureFunctionsEndToEnd.Functions;

public class MyAzureQueueTrigger(ILogger<MyAzureQueueTrigger> logger)
public class MyAzureQueueTrigger(QueueClient queueClient, ILogger<MyAzureQueueTrigger> logger)
{
[Function(nameof(MyAzureQueueTrigger))]
public void Run([QueueTrigger("queue", Connection = "queue")] QueueMessage message)
public void Run([QueueTrigger("queue", Connection = "queue-queues")] QueueMessage message)
{
_ = queueClient.GetProperties();

logger.LogInformation("C# Queue trigger function processed: {Text}", message.MessageText);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public class MyHttpTrigger(
#endif
EventHubProducerClient eventHubProducerClient,
QueueServiceClient queueServiceClient,
QueueClient queueClient,
BlobServiceClient blobServiceClient,
BlobContainerClient blobContainerClient)
{
Expand All @@ -35,6 +36,7 @@ public IResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] Ht
#endif
stringBuilder.AppendLine(CultureInfo.InvariantCulture, $"Aspire-injected EventHubProducerClient namespace: {eventHubProducerClient.FullyQualifiedNamespace}");
stringBuilder.AppendLine(CultureInfo.InvariantCulture, $"Aspire-injected QueueServiceClient URI: {queueServiceClient.Uri}");
stringBuilder.AppendLine(CultureInfo.InvariantCulture, $"Aspire-injected QueueClient URI: {queueClient.Uri}");
stringBuilder.AppendLine(CultureInfo.InvariantCulture, $"Aspire-injected BlobServiceClient URI: {blobServiceClient.Uri}");
stringBuilder.AppendLine(CultureInfo.InvariantCulture, $"Aspire-injected BlobContainerClient URI: {blobContainerClient.Uri}");
return Results.Text(stringBuilder.ToString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
var builder = FunctionsApplication.CreateBuilder(args);

builder.AddServiceDefaults();
builder.AddAzureQueueClient("queue");
builder.AddAzureBlobClient("blob");
builder.AddAzureQueue("queue");
builder.AddAzureBlobContainerClient("myblobcontainer");
builder.AddAzureEventHubProducerClient("myhub");
#if !SKIP_UNSTABLE_EMULATORS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@

builder.AddServiceDefaults();

builder.AddAzureBlobClient("blobs");
builder.AddKeyedAzureBlobContainerClient("foocontainer");

builder.AddAzureQueueClient("queues");
builder.AddKeyedAzureQueue("myqueue");

var app = builder.Build();

app.MapDefaultEndpoints();

app.MapGet("/", async (BlobServiceClient bsc, QueueServiceClient qsc, [FromKeyedServices("foocontainer")] BlobContainerClient keyedContainerClient1) =>
app.MapGet("/", async (BlobServiceClient bsc, [FromKeyedServices("myqueue")] QueueClient queue, [FromKeyedServices("foocontainer")] BlobContainerClient keyedContainerClient1) =>
{
var blobNames = new List<string>();
var blobNameAndContent = Guid.NewGuid().ToString();
Expand All @@ -30,8 +29,6 @@
await ReadBlobsAsync(directContainerClient, blobNames);
await ReadBlobsAsync(keyedContainerClient1, blobNames);

var queue = qsc.GetQueueClient("myqueue");
await queue.CreateIfNotExistsAsync();
await queue.SendMessageAsync("Hello, world!");

return blobNames;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,22 @@
container.WithDataBindMount();
});

var blobs = storage.AddBlobs("blobs");
blobs.AddBlobContainer("mycontainer1", blobContainerName: "test-container-1");
blobs.AddBlobContainer("mycontainer2", blobContainerName: "test-container-2");
storage.AddBlobContainer("mycontainer1", blobContainerName: "test-container-1");
storage.AddBlobContainer("mycontainer2", blobContainerName: "test-container-2");

var queues = storage.AddQueues("queues");
var myqueue = storage.AddQueue("myqueue", queueName: "my-queue");

var storage2 = builder.AddAzureStorage("storage2").RunAsEmulator(container =>
{
container.WithDataBindMount();
});
var blobs2 = storage2.AddBlobs("blobs2");
var blobContainer2 = blobs2.AddBlobContainer("foocontainer", blobContainerName: "foo-container");

var blobContainer2 = storage2.AddBlobContainer("foocontainer", blobContainerName: "foo-container");

builder.AddProject<Projects.AzureStorageEndToEnd_ApiService>("api")
.WithExternalHttpEndpoints()
.WithReference(blobs).WaitFor(blobs)
.WithReference(blobContainer2).WaitFor(blobContainer2)
.WithReference(queues).WaitFor(queues);
.WithReference(myqueue).WaitFor(myqueue);

#if !SKIP_DASHBOARD_REFERENCE
// This project is only added in playground projects to support development/debugging
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
"type": "value.v0",
"connectionString": "{storage.outputs.blobEndpoint}"
},
"storage-blobs": {
"type": "value.v0",
"connectionString": "{storage.outputs.blobEndpoint}"
},
"mycontainer1": {
"type": "value.v0",
"connectionString": "Endpoint={storage.outputs.blobEndpoint};ContainerName=test-container-1"
Expand All @@ -29,6 +33,10 @@
"type": "value.v0",
"connectionString": "{storage2.outputs.blobEndpoint}"
},
"storage2-blobs": {
"type": "value.v0",
"connectionString": "{storage2.outputs.blobEndpoint}"
},
"foocontainer": {
"type": "value.v0",
"connectionString": "Endpoint={storage2.outputs.blobEndpoint};ContainerName=foo-container"
Expand All @@ -42,7 +50,6 @@
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{api.bindings.http.targetPort}",
"ConnectionStrings__blobs": "{blobs.connectionString}",
"ConnectionStrings__foocontainer": "{foocontainer.connectionString}",
"ConnectionStrings__queues": "{queues.connectionString}"
},
Expand Down
4 changes: 2 additions & 2 deletions playground/bicep/BicepSample.ApiService/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
builder.AddNpgsqlDbContext<MyPgDbContext>("db2");
builder.AddAzureCosmosClient("cosmos");
builder.AddRedisClient("redis");
builder.AddAzureBlobClient("blob");
builder.AddAzureBlobServiceClient("blob");
builder.AddAzureTableClient("table");
builder.AddAzureQueueClient("queue");
builder.AddAzureQueueServiceClient("queue");
builder.AddAzureServiceBusClient("sb");

var app = builder.Build();
Expand Down
6 changes: 3 additions & 3 deletions playground/bicep/BicepSample.AppHost/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@
var storage = builder.AddAzureStorage("storage");
// .RunAsEmulator();

var blobs = storage.AddBlobs("blob");
var tables = storage.AddTables("table");
var queues = storage.AddQueues("queue");
var blobs = storage.AddBlobService("blob");
var tables = storage.AddTableService("table");
var queues = storage.AddQueueService("queue");

var sqlServer = builder.AddAzureSqlServer("sql").AddDatabase("db");

Expand Down
2 changes: 1 addition & 1 deletion playground/cdk/CdkSample.ApiService/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

builder.AddServiceDefaults();

builder.AddAzureBlobClient("blobs");
builder.AddAzureBlobServiceClient("blobs");
builder.AddSqlServerDbContext<SqlContext>("sqldb");
builder.AddAzureKeyVaultClient("mykv");
builder.AddRedisClient("cache");
Expand Down
2 changes: 1 addition & 1 deletion playground/cdk/CdkSample.AppHost/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
account.Location = locationOverride.AsProvisioningParameter(infrastructure);
});

var blobs = storage.AddBlobs("blobs");
var blobs = storage.AddBlobService("blobs");

var sqldb = builder.AddAzureSqlServer("sql").AddDatabase("sqldb");

Expand Down
4 changes: 2 additions & 2 deletions playground/orleans/Orleans.AppHost/Program.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var clusteringTable = storage.AddTables("clustering");
var grainStorage = storage.AddBlobs("grainstate");
var clusteringTable = storage.AddTableService("clustering");
var grainStorage = storage.AddBlobService("grainstate");

var orleans = builder.AddOrleans("my-app")
.WithClustering(clusteringTable)
Expand Down
4 changes: 2 additions & 2 deletions src/Aspire.Hosting.Azure.Functions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ using Aspire.Hosting.Azure.Functions;
var builder = new DistributedApplicationBuilder();

var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var queue = storage.AddQueues("queue");
var blob = storage.AddBlobs("blob");
var queue = storage.AddQueueService("queue");
var blob = storage.AddBlobService("blob");

builder.AddAzureFunctionsProject<Projects.Company_FunctionApp>("my-functions-project")
.WithReference(queue)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@

<ItemGroup>
<Compile Include="$(RepoRoot)src\Shared\AzureRoleAssignmentUtils.cs" />
<Compile Include="$(RepoRoot)src\Shared\StringComparers.cs" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Aspire.Hosting.Azure\Aspire.Hosting.Azure.csproj" />
<PackageReference Include="AspNetCore.HealthChecks.Azure.Storage.Blobs" />
<PackageReference Include="AspNetCore.HealthChecks.Azure.Storage.Queues" />
<PackageReference Include="Azure.Provisioning" />
<PackageReference Include="Azure.Provisioning.Storage" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ void IResourceWithAzureFunctionsConfig.ApplyAzureFunctionsConfiguration(IDiction
target[$"{connectionName}__queueServiceUri"] = Parent.QueueEndpoint;

// Injected to support Aspire client integration for Azure Storage.
// We don't inject the queue resource here since we on;y want it to
// We don't inject the queue resource here since we only want it to
// be accessible by the Functions host.
target[$"{AzureStorageResource.BlobsConnectionKeyPrefix}__{connectionName}__ServiceUri"] = Parent.BlobEndpoint;
}
Expand Down
Loading
Loading