From 622ae867b8dd228b836811e2426b659f76e45776 Mon Sep 17 00:00:00 2001 From: Sidney Andrews Date: Wed, 6 Nov 2024 09:32:37 -0500 Subject: [PATCH] Update for Ignite 2024 --- .github/workflows/azure-dev.yml | 3 - assets/web.png | Bin 61670 -> 75856 bytes azure.yaml | 4 +- infra/abbreviations.json | 8 - infra/app/database.bicep | 67 ------ infra/app/identity.bicep | 18 -- infra/app/registry.bicep | 35 ---- infra/app/web.bicep | 95 --------- infra/main.bicep | 197 +++++++++++++++--- infra/main.bicepparam | 5 + infra/main.parameters.json | 15 -- src/models/Settings/Configuration.cs | 15 ++ src/services/DemoService.cs | 15 +- ...es.Cosmos.NoSQL.Quickstart.Services.csproj | 5 +- ...Samples.Cosmos.NoSQL.Quickstart.Web.csproj | 6 +- src/web/Program.cs | 12 +- src/web/appsettings.json | 10 +- 17 files changed, 224 insertions(+), 286 deletions(-) delete mode 100644 infra/abbreviations.json delete mode 100644 infra/app/database.bicep delete mode 100644 infra/app/identity.bicep delete mode 100644 infra/app/registry.bicep delete mode 100644 infra/app/web.bicep create mode 100644 infra/main.bicepparam delete mode 100644 infra/main.parameters.json create mode 100644 src/models/Settings/Configuration.cs diff --git a/.github/workflows/azure-dev.yml b/.github/workflows/azure-dev.yml index 2966729..f1399e9 100644 --- a/.github/workflows/azure-dev.yml +++ b/.github/workflows/azure-dev.yml @@ -1,9 +1,6 @@ name: Deploy to Azure on: workflow_dispatch: - push: - branches: - - main permissions: id-token: write contents: read diff --git a/assets/web.png b/assets/web.png index 6f861ccf44d52518e468b37eb8586b71d9262a56..30a4c54530f944254cc7de8dcbaf8997cf4eb8e5 100644 GIT binary patch literal 75856 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 literal 61670 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 Q@I!f88v5#}dk!!D2Y=eOV*mgE diff --git a/azure.yaml b/azure.yaml index 50dce19..6bbb45a 100644 --- a/azure.yaml +++ b/azure.yaml @@ -17,13 +17,13 @@ hooks: postprovision: windows: run: | - dotnet user-secrets set "AZURE_COSMOS_DB_NOSQL_ENDPOINT" "$env:AZURE_COSMOS_DB_NOSQL_ENDPOINT" --project ./src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj + dotnet user-secrets set "CONFIGURATION:AZURECOSMOSDB:ENDPOINT" "$env:CONFIGURATION__AZURECOSMOSDB__ENDPOINT" --project ./src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj shell: pwsh continueOnError: false interactive: true posix: run: | - dotnet user-secrets set "AZURE_COSMOS_DB_NOSQL_ENDPOINT" "$AZURE_COSMOS_DB_NOSQL_ENDPOINT" --project ./src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj + dotnet user-secrets set "CONFIGURATION:AZURECOSMOSDB:ENDPOINT" "$CONFIGURATION__AZURECOSMOSDB__ENDPOINT" --project ./src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj shell: sh continueOnError: false interactive: true diff --git a/infra/abbreviations.json b/infra/abbreviations.json deleted file mode 100644 index 81c842b..0000000 --- a/infra/abbreviations.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "logAnalyticsWorkspace": "log-analytics", - "containerRegistry": "containerreg", - "containerAppsEnv": "container-env", - "containerAppsApp": "container-app", - "cosmosDbAccount": "cosmos-db-nosql", - "userAssignedIdentity": "managed-identity" -} \ No newline at end of file diff --git a/infra/app/database.bicep b/infra/app/database.bicep deleted file mode 100644 index 297349a..0000000 --- a/infra/app/database.bicep +++ /dev/null @@ -1,67 +0,0 @@ -metadata description = 'Create database accounts.' - -param accountName string -param location string = resourceGroup().location -param tags object = {} - -@description('Id of the service principals to assign database and application roles.') -param appPrincipalId string - -@description('Id of the user principals to assign database and application roles.') -param userPrincipalId string = '' - -module cosmosDbAccount 'br/public:avm/res/document-db/database-account:0.6.1' = { - name: 'cosmos-db-account' - params: { - name: accountName - location: location - locations: [ - { - failoverPriority: 0 - locationName: location - isZoneRedundant: false - } - ] - tags: tags - disableKeyBasedMetadataWriteAccess: true - disableLocalAuth: true - capabilitiesToAdd: [ - 'EnableServerless' - ] - sqlRoleDefinitions: [ - { - name: 'nosql-data-plane-contributor' - dataAction: [ - 'Microsoft.DocumentDB/databaseAccounts/readMetadata' - 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*' - 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*' - ] - } - ] - sqlRoleAssignmentsPrincipalIds: union( - [ - appPrincipalId - ], - !empty(userPrincipalId) - ? [ - userPrincipalId - ] - : [] - ) - sqlDatabases: [ - { - name: 'cosmicworks' - containers: [ - { - name: 'products' - paths: [ - '/category' - ] - } - ] - } - ] - } -} - -output endpoint string = cosmosDbAccount.outputs.endpoint diff --git a/infra/app/identity.bicep b/infra/app/identity.bicep deleted file mode 100644 index c4c6b0b..0000000 --- a/infra/app/identity.bicep +++ /dev/null @@ -1,18 +0,0 @@ -metadata description = 'Create identity resources.' - -param identityName string -param location string = resourceGroup().location -param tags object = {} - -module userAssignedIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.4.0' = { - name: 'user-assigned-identity' - params: { - name: identityName - location: location - tags: tags - } -} - -output resourceId string = userAssignedIdentity.outputs.resourceId -output principalId string = userAssignedIdentity.outputs.principalId -output clientId string = userAssignedIdentity.outputs.clientId diff --git a/infra/app/registry.bicep b/infra/app/registry.bicep deleted file mode 100644 index 4013b70..0000000 --- a/infra/app/registry.bicep +++ /dev/null @@ -1,35 +0,0 @@ -metadata description = 'Create container registries.' - -param registryName string -param location string = resourceGroup().location -param tags object = {} - -@description('Id of the user principals to assign database and application roles.') -param userPrincipalId string = '' - -module containerRegistry 'br/public:avm/res/container-registry/registry:0.5.1' = { - name: 'container-registry' - params: { - name: registryName - location: location - tags: tags - acrAdminUserEnabled: false - anonymousPullEnabled: true - publicNetworkAccess: 'Enabled' - acrSku: 'Standard' - } -} - -module registryUserAssignment 'br/public:avm/ptn/authorization/resource-role-assignment:0.1.1' = if (!empty(userPrincipalId)) { - name: 'container-registry-role-assignment-push-user' - params: { - principalId: userPrincipalId - resourceId: containerRegistry.outputs.resourceId - roleDefinitionId: subscriptionResourceId( - 'Microsoft.Authorization/roleDefinitions', - '8311e382-0749-4cb8-b61a-304f252e45ec' // AcrPush built-in role - ) - } -} - -output endpoint string = containerRegistry.outputs.loginServer diff --git a/infra/app/web.bicep b/infra/app/web.bicep deleted file mode 100644 index 7e697c2..0000000 --- a/infra/app/web.bicep +++ /dev/null @@ -1,95 +0,0 @@ -metadata description = 'Create web application resources.' - -param workspaceName string -param envName string -param appName string -param serviceTag string -param location string = resourceGroup().location -param tags object = {} - -@description('Endpoint for Azure Cosmos DB for Table account.') -param databaseAccountEndpoint string - -@description('Client ID of the service principal to assign database and application roles.') -param appClientId string - -@description('Resource ID of the service principal to assign database and application roles.') -param appResourceId string - -module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.7.0' = { - name: 'log-analytics-workspace' - params: { - name: workspaceName - location: location - tags: tags - } -} - -module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.8.0' = { - name: 'container-apps-env' - params: { - name: envName - location: location - tags: tags - logAnalyticsWorkspaceResourceId: logAnalyticsWorkspace.outputs.resourceId - zoneRedundant: false - } -} - -module containerAppsApp 'br/public:avm/res/app/container-app:0.9.0' = { - name: 'container-apps-app' - params: { - name: appName - environmentResourceId: containerAppsEnvironment.outputs.resourceId - location: location - tags: union(tags, { 'azd-service-name': serviceTag }) - ingressTargetPort: 8080 - ingressExternal: true - ingressTransport: 'auto' - stickySessionsAffinity: 'sticky' - corsPolicy: { - allowCredentials: true - allowedOrigins: [ - '*' - ] - } - managedIdentities: { - systemAssigned: false - userAssignedResourceIds: [ - appResourceId - ] - } - secrets: { - secureList: [ - { - name: 'azure-cosmos-db-nosql-endpoint' - value: databaseAccountEndpoint - } - { - name: 'user-assigned-managed-identity-client-id' - value: appClientId - } - ] - } - containers: [ - { - image: 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest' - name: 'web-front-end' - resources: { - cpu: '1' - memory: '2Gi' - } - env: [ - { - name: 'AZURE_COSMOS_DB_NOSQL_ENDPOINT' - secretRef: 'azure-cosmos-db-nosql-endpoint' - } - { - name: 'AZURE_CLIENT_ID' - secretRef: 'user-assigned-managed-identity-client-id' - } - ] - } - ] - } -} diff --git a/infra/main.bicep b/infra/main.bicep index ec3caf2..cd98fed 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -1,3 +1,5 @@ +metadata description = 'Provisions resources for a web application that uses Azure SDK for .NET to connect to Azure Cosmos DB for NoSQL.' + targetScope = 'resourceGroup' @minLength(1) @@ -10,68 +12,201 @@ param environmentName string param location string @description('Id of the principal to assign database and application roles.') -param principalId string = '' - -// Optional parameters -param logWorkspaceName string = '' -param cosmosDbAccountName string = '' -param containerRegistryName string = '' -param containerAppsEnvName string = '' -param containerAppsAppName string = '' +param deploymentUserPrincipalId string = '' // serviceName is used as value for the tag (azd-service-name) azd uses to identify deployment host param serviceName string = 'web' -var abbreviations = loadJsonContent('abbreviations.json') var resourceToken = toLower(uniqueString(resourceGroup().id, environmentName, location)) var tags = { 'azd-env-name': environmentName repo: 'https://github.com/azure-samples/cosmos-db-nosql-dotnet-quickstart' } -module identity 'app/identity.bicep' = { - name: 'identity' +module managedIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.4.0' = { + name: 'user-assigned-identity' + params: { + name: 'managed-identity-${resourceToken}' + location: location + tags: tags + } +} + +var databaseName = 'cosmicworks' +var containerName = 'products' + +module cosmosDbAccount 'br/public:avm/res/document-db/database-account:0.8.1' = { + name: 'cosmos-db-account' params: { - identityName: '${abbreviations.userAssignedIdentity}-${resourceToken}' + name: 'cosmos-db-nosql-${resourceToken}' location: location + locations: [ + { + failoverPriority: 0 + locationName: location + isZoneRedundant: false + } + ] tags: tags + disableKeyBasedMetadataWriteAccess: true + disableLocalAuth: true + networkRestrictions: { + publicNetworkAccess: 'Enabled' + ipRules: [] + virtualNetworkRules: [] + } + capabilitiesToAdd: [ + 'EnableServerless' + ] + sqlRoleDefinitions: [ + { + name: 'nosql-data-plane-contributor' + dataAction: [ + 'Microsoft.DocumentDB/databaseAccounts/readMetadata' + 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*' + 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*' + ] + } + ] + sqlRoleAssignmentsPrincipalIds: union( + [ + managedIdentity.outputs.principalId + ], + !empty(deploymentUserPrincipalId) ? [deploymentUserPrincipalId] : [] + ) + sqlDatabases: [ + { + name: databaseName + containers: [ + { + name: containerName + paths: [ + '/category' + ] + } + ] + } + ] } } -module database 'app/database.bicep' = { - name: 'database' +module containerRegistry 'br/public:avm/res/container-registry/registry:0.5.1' = { + name: 'container-registry' params: { - accountName: !empty(cosmosDbAccountName) ? cosmosDbAccountName : '${abbreviations.cosmosDbAccount}-${resourceToken}' + name: 'containerreg${resourceToken}' location: location tags: tags - appPrincipalId: identity.outputs.principalId - userPrincipalId: !empty(principalId) ? principalId : null + acrAdminUserEnabled: false + anonymousPullEnabled: true + publicNetworkAccess: 'Enabled' + acrSku: 'Standard' + } +} + +var containerRegistryRole = subscriptionResourceId( + 'Microsoft.Authorization/roleDefinitions', + '8311e382-0749-4cb8-b61a-304f252e45ec' +) // AcrPush built-in role + +module registryUserAssignment 'br/public:avm/ptn/authorization/resource-role-assignment:0.1.1' = if (!empty(deploymentUserPrincipalId)) { + name: 'container-registry-role-assignment-push-user' + params: { + principalId: deploymentUserPrincipalId + resourceId: containerRegistry.outputs.resourceId + roleDefinitionId: containerRegistryRole } } -module registry 'app/registry.bicep' = { - name: 'registry' +module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.7.0' = { + name: 'log-analytics-workspace' params: { - registryName: !empty(containerRegistryName) ? containerRegistryName : '${abbreviations.containerRegistry}${resourceToken}' + name: 'log-analytics-${resourceToken}' location: location tags: tags } } -module web 'app/web.bicep' = { - name: serviceName +module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.8.0' = { + name: 'container-apps-env' params: { - workspaceName: !empty(logWorkspaceName) ? logWorkspaceName : '${abbreviations.logAnalyticsWorkspace}-${resourceToken}' - envName: !empty(containerAppsEnvName) ? containerAppsEnvName : '${abbreviations.containerAppsEnv}-${resourceToken}' - appName: !empty(containerAppsAppName) ? containerAppsAppName : '${abbreviations.containerAppsApp}-${resourceToken}' + name: 'container-env-${resourceToken}' location: location tags: tags - serviceTag: serviceName - appResourceId: identity.outputs.resourceId - appClientId: identity.outputs.clientId - databaseAccountEndpoint: database.outputs.endpoint + logAnalyticsWorkspaceResourceId: logAnalyticsWorkspace.outputs.resourceId + zoneRedundant: false + } +} + +module containerAppsApp 'br/public:avm/res/app/container-app:0.9.0' = { + name: 'container-apps-app' + params: { + name: 'container-app-${resourceToken}' + environmentResourceId: containerAppsEnvironment.outputs.resourceId + location: location + tags: union(tags, { 'azd-service-name': serviceName }) + ingressTargetPort: 8080 + ingressExternal: true + ingressTransport: 'auto' + stickySessionsAffinity: 'sticky' + corsPolicy: { + allowCredentials: true + allowedOrigins: [ + '*' + ] + } + managedIdentities: { + systemAssigned: false + userAssignedResourceIds: [ + managedIdentity.outputs.resourceId + ] + } + secrets: { + secureList: [ + { + name: 'azure-cosmos-db-nosql-endpoint' + value: cosmosDbAccount.outputs.endpoint + } + { + name: 'user-assigned-managed-identity-client-id' + value: managedIdentity.outputs.clientId + } + ] + } + containers: [ + { + image: 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest' + name: 'web-front-end' + resources: { + cpu: '0.25' + memory: '.5Gi' + } + env: [ + { + name: 'CONFIGURATION__AZURECOSMOSDB__ENDPOINT' + secretRef: 'azure-cosmos-db-nosql-endpoint' + } + { + name: 'CONFIGURATION__AZURECOSMOSDB__DATABASENAME' + value: databaseName + } + { + name: 'CONFIGURATION__AZURECOSMOSDB__CONTAINERNAME' + value: containerName + } + { + name: 'AZURE_CLIENT_ID' + secretRef: 'user-assigned-managed-identity-client-id' + } + ] + } + ] } } -output AZURE_COSMOS_DB_NOSQL_ENDPOINT string = database.outputs.endpoint -output AZURE_CONTAINER_REGISTRY_ENDPOINT string = registry.outputs.endpoint +// Azure Cosmos DB for Table outputs +output CONFIGURATION__AZURECOSMOSDB__ENDPOINT string = cosmosDbAccount.outputs.endpoint +output CONFIGURATION__AZURECOSMOSDB__DATABASENAME string = databaseName +output CONFIGURATION__AZURECOSMOSDB__CONTAINERNAME string = containerName + +// Azure Container Registry outputs +output AZURE_CONTAINER_REGISTRY_ENDPOINT string = containerRegistry.outputs.loginServer diff --git a/infra/main.bicepparam b/infra/main.bicepparam new file mode 100644 index 0000000..c0af6f2 --- /dev/null +++ b/infra/main.bicepparam @@ -0,0 +1,5 @@ +using './main.bicep' + +param environmentName = readEnvironmentVariable('AZURE_ENV_NAME', 'development') +param location = readEnvironmentVariable('AZURE_LOCATION', 'westus') +param deploymentUserPrincipalId = readEnvironmentVariable('AZURE_PRINCIPAL_ID', '') diff --git a/infra/main.parameters.json b/infra/main.parameters.json deleted file mode 100644 index 67ad852..0000000 --- a/infra/main.parameters.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "environmentName": { - "value": "${AZURE_ENV_NAME}" - }, - "location": { - "value": "${AZURE_LOCATION}" - }, - "principalId": { - "value": "${AZURE_PRINCIPAL_ID}" - } - } -} \ No newline at end of file diff --git a/src/models/Settings/Configuration.cs b/src/models/Settings/Configuration.cs new file mode 100644 index 0000000..57d09aa --- /dev/null +++ b/src/models/Settings/Configuration.cs @@ -0,0 +1,15 @@ +namespace Microsoft.Samples.Cosmos.NoSQL.Quickstart.Models.Settings; + +public record Configuration +{ + public required AzureCosmosDB AzureCosmosDB { get; init; } +} + +public record AzureCosmosDB +{ + public required string Endpoint { get; init; } + + public required string DatabaseName { get; init; } + + public required string ContainerName { get; init; } +} \ No newline at end of file diff --git a/src/services/DemoService.cs b/src/services/DemoService.cs index 28a60bc..b0e39c4 100644 --- a/src/services/DemoService.cs +++ b/src/services/DemoService.cs @@ -1,21 +1,30 @@ +using System.Configuration; using Microsoft.Azure.Cosmos; +using Microsoft.Extensions.Options; using Microsoft.Samples.Cosmos.NoSQL.Quickstart.Models; using Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services.Interfaces; +using Settings = Microsoft.Samples.Cosmos.NoSQL.Quickstart.Models.Settings; + namespace Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services; -public sealed class DemoService(CosmosClient client) : IDemoService +public sealed class DemoService( + CosmosClient client, + IOptions configurationOptions +) : IDemoService { + private readonly Settings.Configuration configuration = configurationOptions.Value; + public string GetEndpoint() => $"{client.Endpoint}"; public async Task RunAsync(Func writeOutputAync) { - Database database = client.GetDatabase("cosmicworks"); + Database database = client.GetDatabase(configuration.AzureCosmosDB.DatabaseName); database = await database.ReadAsync(); await writeOutputAync($"Get database:\t{database.Id}"); - Container container = database.GetContainer("products"); + Container container = database.GetContainer(configuration.AzureCosmosDB.ContainerName); container = await container.ReadContainerAsync(); await writeOutputAync($"Get container:\t{container.Id}"); diff --git a/src/services/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services.csproj b/src/services/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services.csproj index 3a8972d..3f1a720 100644 --- a/src/services/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services.csproj +++ b/src/services/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services.csproj @@ -5,8 +5,9 @@ enable - - + + + diff --git a/src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj b/src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj index 952768b..814ed0a 100644 --- a/src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj +++ b/src/web/Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.csproj @@ -6,9 +6,9 @@ f6167579-5a7c-405e-bdae-cf20a79d6b9d - - - + + + diff --git a/src/web/Program.cs b/src/web/Program.cs index 6cf4d54..37340ad 100644 --- a/src/web/Program.cs +++ b/src/web/Program.cs @@ -1,18 +1,26 @@ using Azure.Identity; using Microsoft.Azure.Cosmos; +using Microsoft.Extensions.Options; using Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services; using Microsoft.Samples.Cosmos.NoSQL.Quickstart.Services.Interfaces; using Microsoft.Samples.Cosmos.NoSQL.Quickstart.Web.Components; +using Settings = Microsoft.Samples.Cosmos.NoSQL.Quickstart.Models.Settings; + var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorComponents().AddInteractiveServerComponents(); -builder.Services.AddSingleton((_) => +builder.Services.AddOptions().Bind(builder.Configuration.GetSection(nameof(Settings.Configuration))); + +builder.Services.AddSingleton((serviceProvider) => { + IOptions configurationOptions = serviceProvider.GetRequiredService>(); + Settings.Configuration configuration = configurationOptions.Value; + // CosmosClient client = new( - accountEndpoint: builder.Configuration["AZURE_COSMOS_DB_NOSQL_ENDPOINT"]!, + accountEndpoint: configuration.AzureCosmosDB.Endpoint, tokenCredential: new DefaultAzureCredential() ); // diff --git a/src/web/appsettings.json b/src/web/appsettings.json index c5f5d9e..945b1bb 100644 --- a/src/web/appsettings.json +++ b/src/web/appsettings.json @@ -6,5 +6,11 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" -} + "AllowedHosts": "*", + "Configuration": { + "AzureCosmosDB": { + "DatabaseName": "cosmicworks", + "ContainerName": "products" + } + } +} \ No newline at end of file