Övning – Distribuera tilläggsresurser och använda befintliga resurser
Nu när du har skapat databasen som ditt R&D-team ska använda måste du se till att åtkomsten till databasen loggas. Du har en befintlig Log Analytics-arbetsyta som du vill att loggarna ska skickas till. Du måste också skicka loggarna från R&D-teamets lagringskonto till samma Log Analytics-arbetsyta. I den här övningen uppdaterar du Bicep-filen för att uppfylla dessa krav.
Under processen gör du följande:
- Skapa en Log Analytics-arbetsyta.
- Uppdatera Bicep-filen för att lägga till diagnostikinställningar i ditt Cosmos DB-konto.
- Skapa ett lagringskonto.
- Uppdatera diagnostikinställningarna för lagringskontot i Bicep-filen.
- Distribuera mallen och verifiera resultatet.
Skapa en Log Analytics-arbetsyta
Skapa en Log Analytics-arbetsyta för att simulera att en redan har skapats i din organisation. Använd Azure CLI i stället för Bicep.
Kör följande Azure CLI-kommando i terminalen:
az monitor log-analytics workspace create \
--workspace-name ToyLogs \
--location eastus
Skapa en Log Analytics-arbetsyta för att simulera att en redan har skapats i din organisation. Använd Azure PowerShell i stället för Bicep.
Kör följande Azure PowerShell-kommando i terminalen:
New-AzOperationalInsightsWorkspace `
-Name ToyLogs `
-Location eastus
Kommentar
I det här exemplet distribuerar du Log Analytics-arbetsytan till samma prenumeration och resursgrupp som dina andra resurser. I många situationer lagrar du Log Analytics-arbetsytor i resursgrupper som inte är samma som dina programresurser. Bicep kan fortfarande referera till dem.
Lägga till diagnostikinställningar för Azure Cosmos DB
Ditt R&D-team måste logga alla begäranden till Azure Cosmos DB-kontot. Du bestämmer dig för att använda Azure Monitor-integreringen för Azure Cosmos DB för att samla in DataPlaneRequests-loggen, som innehåller information om begäranden till Azure Cosmos DB.
Nu när du har skapat din simulerade befintliga Log Analytics-arbetsyta kan du referera till den från din Bicep-mall som en befintlig resurs. Du kan använda den som mål för Azure Cosmos DB-loggarna.
Använd följande steg för att lägga till diagnostikinställningar:
I Visual Studio Code öppnar du filen main.bicep i redigeraren och lägger sedan till följande kod under de befintliga variabeldefinitionerna:
var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
Lägg till följande kod längst ned i filen under resursdefinitionerna:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName }
Observera att den här resursdefinitionen använder nyckelordet
existing
och att du avsiktligt utelämnar andra egenskaper som du normalt skulle ange om du distribuerade Log Analytics-arbetsytan via den här Bicep-mallen.Lägg till följande kod under den kod som du nyss lade till:
resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } }
Observera att den här koden distribuerar en tilläggsresurs. Det använder nyckelordet
scope
för att tala om för Bicep att resursen ska kopplas till Azure Cosmos DB-kontot. Koden använderid
också egenskapen för den befintliga resursenlogAnalyticsWorkspace
så att Azure förstår var azure Cosmos DB-loggarna ska skickas.
Skapa ett lagringskonto för dokument för leksaksdesign
Skapa ett Azure Storage-konto för att simulera att ditt R&D-team redan har skapat ett i din organisation. Använd Azure CLI i stället för Bicep.
Kör följande Azure CLI-kommando i terminalen. Ersätt {storageaccountname}
med ett namn som sannolikt är unikt. Namnet måste vara gemener, innehålla 24 eller färre tecken och har inga blanksteg eller specialtecken. Anteckna namnet för senare användning.
az storage account create \
--name {storageaccountname} \
--location eastus
Skapa ett Azure Storage-konto för att simulera att ditt R&D-team redan har skapat ett i din organisation. Använd Azure PowerShell i stället för Bicep.
Kör följande Azure PowerShell-kommando i terminalen. Ersätt {storageaccountname}
med ett namn som sannolikt är unikt. Namnet måste vara gemener, innehålla 24 eller färre tecken och har inga blanksteg eller specialtecken.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
Lägga till diagnostikinställningar för lagringskonto
Ditt R&D-team vill att du loggar alla lyckade begäranden till det lagringskonto som de skapade. Du bestämmer dig för att använda Azure Storage-integreringen med Azure Monitor-loggar för att uppnå det här målet. Du bestämmer dig för att logga alla läs-, skriv- och borttagningsaktiviteter i Blob Storage på R&D-teamets lagringskonto.
Du måste uppdatera Bicep-mallen för att referera till lagringskontot som du skapade i föregående steg.
Lägg till följande parameterdefinitioner längst upp i filen main.bicep under parameterdefinitionerna:
param storageAccountName string
Under variabeldefinitionerna lägger du till följande variabeldefinition:
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
Lägg till följande definition under resursdefinitionerna längst ned i filen:
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } }
Observera att båda dessa resurser använder nyckelordet
existing
.Lägg till följande kod längst ned i filen under definitionen av lagringskontot som du lade till i föregående steg:
resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: storageAccount::blobService name: storageAccountBlobDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'StorageRead' enabled: true } { category: 'StorageWrite' enabled: true } { category: 'StorageDelete' enabled: true } ] } }
Observera att den här tilläggsresursen har angetts
scope
till den kapslade befintliga resursen. Bicep förstår att den ska koppla tilläggsresursen till den underordnade resursenblobServices
.När du är klar bör din fullständiga Bicep-mall se ut så här:
param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}' param cosmosDBDatabaseThroughput int = 400 param location string = resourceGroup().location param storageAccountName string var cosmosDBDatabaseName = 'FlightTests' var cosmosDBContainerName = 'FlightTests' var cosmosDBContainerPartitionKey = '/droneId' var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics' var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics' resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = { name: cosmosDBAccountName location: location properties: { databaseAccountOfferType: 'Standard' locations: [ { locationName: location } ] } } resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2024-05-15' = { parent: cosmosDBAccount name: cosmosDBDatabaseName properties: { resource: { id: cosmosDBDatabaseName } options: { throughput: cosmosDBDatabaseThroughput } } resource container 'containers' = { name: cosmosDBContainerName properties: { resource: { id: cosmosDBContainerName partitionKey: { kind: 'Hash' paths: [ cosmosDBContainerPartitionKey ] } } options: {} } } } resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName } resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } } resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } } resource storageAccountBlobDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: storageAccount::blobService name: storageAccountBlobDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'StorageRead' enabled: true } { category: 'StorageWrite' enabled: true } { category: 'StorageDelete' enabled: true } ] } }
Spara ändringarna i filen.
Distribuera mallen till Azure
Kör följande Azure CLI-kommando i terminalen. Ersätt {storageaccountname}
med namnet på lagringskontot som du skapade tidigare i den här övningen.
az deployment group create \
--template-file main.bicep \
--parameters storageAccountName={storageaccountname}
Kör följande Azure PowerShell-kommando i terminalen. Ersätt {storageaccountname}
med namnet på lagringskontot som du skapade tidigare i den här övningen.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Kontrollera distributionen
Gå tillbaka till Azure-portalen i webbläsaren. Gå till resursgruppen. Du ser fortfarande en lyckad distribution eftersom distributionen använde samma namn som den första distributionen.
Välj länken 1 Lyckades .
Välj den distribution som kallas main och välj sedan Distributionsinformation för att expandera listan över distribuerade resurser.
Observera att det finns två resurser i listan med en typ av
Microsoft.Insights/diagnosticSettings
. Dessa resurser är de tilläggsresurser som du har distribuerat. En av resurserna kopplades till lagringskontot och den andra kopplades till Azure Cosmos DB-kontot. Nu kan du kontrollera att diagnostikinställningarna för Azure Cosmos DB är korrekt konfigurerade.Välj Azure Cosmos DB-kontoresursen. Portalen öppnas för Azure Cosmos DB-kontot.
I rutan Sök längst upp till vänster anger du Diagnostikinställningar och väljer menyalternativet Diagnostikinställningar .
Azure-portalen kan uppmana dig att aktivera fulltextfrågestöd för loggning. Du behöver det inte för den här övningen, så välj Inte nu.
Observera att det finns en diagnostikinställning med namnet route-logs-to-log-analytics, som är konfigurerad för att dirigera loggarna till ToyLogs-arbetsytan .
Om du vill kan du också kontrollera att lagringskontot har en liknande diagnostikinställning aktiverad för bloblagring.