Exercice – déployer des ressources d’extension et utiliser des ressources existantes
Maintenant que vous avez créé la base de données que votre équipe R&D doit utiliser, vous devez vérifier que l’accès à la base de données est journalisé. Vous avez un espace de travail Log Analytics existant auquel vous souhaitez envoyer ces journaux. Vous devez également envoyer les journaux du compte de stockage de l’équipe R&D vers ce même espace de travail Log Analytics. Dans cet exercice, vous mettez à jour votre fichier Bicep pour répondre à ces exigences.
Pendant ce processus, vous allez :
- Créez un espace de travail Log Analytics.
- Mettez à jour votre fichier Bicep pour ajouter des paramètres de diagnostic à votre compte Cosmos DB.
- Créez un compte de stockage.
- Dans votre fichier Bicep, mettez à jour les paramètres de diagnostic du compte de stockage.
- Déployez votre modèle et vérifiez le résultat.
Créer un espace de travail Log Analytics
Créez un espace de travail Log Analytics pour faire comme si un espace de travail avait déjà été créé dans votre organisation. Utilisez l’interface Azure CLI plutôt que Bicep.
Dans le terminal, exécutez la commande Azure CLI suivante :
az monitor log-analytics workspace create \
--workspace-name ToyLogs \
--location eastus
Créez un espace de travail Log Analytics pour faire comme si un espace de travail avait déjà été créé dans votre organisation. Utilisez Azure PowerShell plutôt que Bicep.
Dans le terminal, exécutez la commande Azure PowerShell suivante :
New-AzOperationalInsightsWorkspace `
-Name ToyLogs `
-Location eastus
Notes
Dans cet exemple, vous déployez l’espace de travail Log Analytics dans le même abonnement et le même groupe de ressources que vos autres ressources. Dans de nombreux cas, vous allez stocker des espaces de travail Log Analytics dans des groupes de ressources qui ne sont pas les mêmes que les ressources de votre application. Bicep est toujours en mesure d’y faire référence.
Ajouter des paramètres de diagnostic pour Azure Cosmos DB
Votre équipe R&D doit enregistrer toutes les requêtes dans le compte Azure Cosmos DB. Vous décidez d’utiliser l’intégration Azure Monitor pour Azure Cosmos DB afin de collecter le journal DataPlaneRequests qui contient les informations sur les requêtes d’Azure Cosmos DB.
Maintenant que vous avez créé votre simulation d’espace de travail Log Analytics préexistant, vous pouvez y faire référence à partir de votre modèle Bicep en tant que ressource existante. Vous pouvez l’utiliser comme destination pour les journaux d’Azure Cosmos DB.
Pour ajouter des paramètres de diagnostic, procédez comme suit :
Dans Visual Studio Code, ouvrez le fichier main.bicep dans l’éditeur, puis ajoutez le code suivant sous les définitions de variables existantes :
var logAnalyticsWorkspaceName = 'ToyLogs' var cosmosDBAccountDiagnosticSettingsName = 'route-logs-to-log-analytics'
En bas du fichier, sous les définitions de ressource, ajoutez le code suivant :
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName }
Notez que cette définition de ressource utilise le mot clé
existing
et que vous omettez intentionnellement d’autres propriétés qui seraient normalement spécifiées lors du déploiement de l’espace de travail Log Analytics via ce modèle Bicep.Sous le code que vous venez d’ajouter, ajoutez le code suivant :
resource cosmosDBAccountDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { scope: cosmosDBAccount name: cosmosDBAccountDiagnosticSettingsName properties: { workspaceId: logAnalyticsWorkspace.id logs: [ { category: 'DataPlaneRequests' enabled: true } ] } }
Notez que ce code déploie une ressource d’extension. Le mot clé
scope
est utilisé pour indiquer à Bicep que la ressource doit être jointe au compte Azure Cosmos DB. Le code utilise également la propriétéid
de la ressource existantelogAnalyticsWorkspace
pour qu’Azure comprenne où envoyer les journaux d’Azure Cosmos DB.
Créer un compte de stockage pour les documents de conception de jouet
Créez un compte de stockage Azure pour faire comme si votre équipe R&D en avait déjà créé un dans votre organisation. Utilisez l’interface Azure CLI plutôt que Bicep.
Dans le terminal, exécutez la commande Azure CLI suivante. Remplacez {storageaccountname}
par un nom vraisemblablement unique. Le nom doit être tout en minuscules, contenir 24 caractères maximum et ne pas comporter d’espaces, ni de caractères spéciaux. Notez le nom pour l’utiliser ultérieurement.
az storage account create \
--name {storageaccountname} \
--location eastus
Créez un compte de stockage Azure pour faire comme si votre équipe R&D en avait déjà créé un dans votre organisation. Utilisez Azure PowerShell plutôt que Bicep.
Dans le terminal, exécutez la commande Azure PowerShell suivante. Remplacez {storageaccountname}
par un nom vraisemblablement unique. Le nom doit être tout en minuscules, contenir 24 caractères maximum et ne pas comporter d’espaces, ni de caractères spéciaux.
New-AzStorageAccount `
-Name {storageaccountname} `
-Location eastus `
-SkuName Standard_LRS
Ajouter des paramètres de diagnostic pour le compte de stockage
Votre équipe R&D vous demande de journaliser toutes les demandes réussies dans le compte de stockage qu’elle a créé. Vous décidez d’utiliser l’intégration du stockage Azure aux journaux Azure Monitor pour cet objectif. Vous décidez d’enregistrer toutes les activités de lecture, d’écriture et de suppression dans le stockage d’objets blob sur le compte de stockage de l’équipe R&D.
Vous devez mettre à jour votre modèle Bicep pour faire référence au compte de stockage que vous avez créé à l’étape précédente.
En haut du fichier main.bicep, sous les définitions de paramètres, ajoutez la définition de paramètre suivante :
param storageAccountName string
Sous les définitions de variables, ajoutez la définition de variable suivante :
var storageAccountBlobDiagnosticSettingsName = 'route-logs-to-log-analytics'
En bas du fichier, sous les définitions de ressource, ajoutez la définition suivante :
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' existing = { name: storageAccountName resource blobService 'blobServices' existing = { name: 'default' } }
Notez que ces deux ressources utilisent le mot clé
existing
.En bas du fichier, sous la définition du compte de stockage ajouté à l’étape précédente, ajoutez le code suivant :
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 } ] } }
Notez que la valeur
scope
de cette ressource d’extension est définie sur la ressource imbriquée existante. Bicep comprend qu’il doit joindre la ressource d’extension à la ressource enfantblobServices
.Quand vous avez terminé, votre modèle Bicep doit se présenter comme suit :
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 } ] } }
Enregistrez les modifications du fichier.
Déployer le modèle sur Azure
Dans le terminal, exécutez la commande Azure CLI suivante. Remplacez {storageaccountname}
par le nom du compte de stockage que vous avez créé précédemment dans cet exercice.
az deployment group create \
--template-file main.bicep \
--parameters storageAccountName={storageaccountname}
Dans le terminal, exécutez la commande Azure PowerShell suivante. Remplacez {storageaccountname}
par le nom du compte de stockage que vous avez créé précédemment dans cet exercice.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-storageAccountName {storageaccountname}
Vérifier votre déploiement
Dans votre navigateur, retournez au portail Azure. Accédez à votre groupe de ressources. Vous voyez toujours un déploiement réussi, car le déploiement a utilisé le même nom que le premier déploiement.
Sélectionnez le lien 1 Réussi.
Sélectionnez le déploiement appelé main, puis sélectionnez Détails du déploiement pour développer la liste des ressources déployées.
Notez que deux ressources sont répertoriées avec le type
Microsoft.Insights/diagnosticSettings
. Il s’agit de ressources de l’extension déployée. L’une des ressources était attachée au compte de stockage, et l’autre était attachée au compte Azure Cosmos DB. Vous pouvez maintenant vous assurer de la bonne configuration des paramètres de diagnostic d’Azure Cosmos DB.Sélectionnez la ressource du compte Azure Cosmos DB. Le portail s’ouvre sur le compte Azure Cosmos DB.
Dans la zone Rechercher en haut à gauche, entrez Paramètres de diagnostic, puis sélectionnez l’élément de menu Paramètres de diagnostic.
Le portail Azure peut vous inviter à activer la prise en charge des requêtes de texte intégral pour la journalisation. Vous n’en avez pas besoin pour cet exercice. Sélectionnez Pas maintenant.
Remarquez qu’il existe un paramètre de diagnostic nommé route-logs-to-log-analytics, configuré pour router les journaux vers l’espace de travail ToyLogs.
Si vous le souhaitez, vous pouvez également vérifier que le compte de stockage affiche un paramètre de diagnostic similaire activé pour le stockage d’objets blob.