Wiederholte Ressourcendefinitionen erzeugen Duplikate? Verwende Bedingungen und Schleifen
CloudTrips benötigt nun mehrere private Container. Den vollständigen
Ressourcenblock für uploads, exports und receipts zu wiederholen, würde
jede Sicherheitsänderung zu einer Bearbeitung mehrerer Blöcke machen.
Die schlanke DEV-Umgebung benötigt außerdem nicht den Audit-Container, den TEST und PROD verwenden.
Erstelle die Anwendungscontainer mit einer Schleife und stelle den Audit-Container nur dort bereit, wo er durch eine Bedingung aktiviert ist.
Einzelnen Containerparameter ersetzen
Entferne den vorhandenen Parameter containerName aus main.bicep und füge
Folgendes hinzu:
@description('Private blob containers required by the application.')
@minLength(1)
param containerNames array = [
'uploads'
]
@description('Deploy the optional audit container.')
param deployAuditContainer bool = false
containerNames ist ein Array, weil eine Bereitstellung jetzt mehrere
Container anfordern kann. deployAuditContainer ist boolesch und akzeptiert
daher nur true oder false.
Container mit einer Schleife erstellen
Ersetze die einzelne Ressource uploadsContainer durch:
resource appContainers 'Microsoft.Storage/storageAccounts/blobServices/containers@2025-06-01' = [
for containerName in containerNames: {
parent: blobService
name: containerName
properties: {
publicAccess: 'None'
}
}
]
Der Ausdruck führt dieselbe Ressourcendeklaration einmal für jeden Wert in
containerNames aus. Jeder Wert muss eindeutig sein, da Azure-Ressourcennamen
unter demselben Blob-Dienst eindeutig sein müssen.
Bedingten Container hinzufügen
Füge den Audit-Container hinzu:
resource auditContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2025-06-01' = if (deployAuditContainer) {
parent: blobService
name: 'audit'
properties: {
publicAccess: 'None'
}
}
Wenn deployAuditContainer den Wert true besitzt, nimmt Bicep die Ressource
auf. Bei false wird sie übersprungen.
Der standardmäßige inkrementelle Bereitstellungsmodus löscht keinen Audit-Container, der durch eine frühere Bereitstellung erstellt wurde. Die Bedingung bestimmt, ob die aktuelle Bereitstellung die Ressource enthält; sie ist keine Bereinigungsanweisung.
IDs der erstellten Ressourcen zurückgeben
Ersetze die alte Ausgabe containerId durch:
output containerIds array = [
for i in range(0, length(containerNames)): appContainers[i].id
]
output auditContainerId string? = deployAuditContainer ? auditContainer.id : null
Die erste Ausgabe folgt der Schleife und gibt eine ID für jeden
Anwendungscontainer zurück. Die Audit-Ausgabe gibt bei Aktivierung die
Ressourcen-ID und beim Überspringen null zurück.
Jede Umgebung konfigurieren
Füge diese Werte zu environments/dev.bicepparam hinzu:
param containerNames = [
'uploads'
]
param deployAuditContainer = false
Füge diese Werte zu environments/test.bicepparam hinzu:
param containerNames = [
'uploads'
'exports'
]
param deployAuditContainer = true
Füge diese Werte zu environments/prod.bicepparam hinzu:
param containerNames = [
'uploads'
'exports'
'receipts'
]
param deployAuditContainer = true
Dieselben Ressourcendeklarationen erzeugen nun:
- DEV:
uploads - TEST:
uploads,exportsund den bedingten Containeraudit - PROD:
uploads,exports,receiptsund den bedingten Containeraudit
Füge audit nicht zu containerNames hinzu; die bedingte Ressource verwendet
diesen Namen bereits.
TEST-Container anzeigen
Wähle das CloudTrips-TEST-Abonnement und führe What-if aus:
az account set \
--subscription "<Name oder ID des CloudTrips-TEST-Abonnements>"
az deployment group what-if \
--resource-group rg-cloudtrips-bicep-test-weu \
--parameters environments/test.bicepparam
Der vorhandene uploads-Container sollte bestehen bleiben. Bestätige, dass
Azure exports aus der Schleife und audit aus der Bedingung erstellen
möchte. Beide müssen publicAccess: None verwenden.

TEST-Konfiguration bereitstellen
Wende die geprüften Änderungen an:
az deployment group create \
--name deploy-cloudtrips-storage-test-loops \
--resource-group rg-cloudtrips-bicep-test-weu \
--parameters environments/test.bicepparam \
--query "properties.{state:provisioningState,outputs:outputs}" \
--output yaml
Bestätige den Bereitstellungsstatus Succeeded. Die Ausgabe containerIds
sollte IDs für uploads und exports enthalten; auditContainerId sollte die
separate Audit-Ressourcen-ID enthalten.
Ergebnis überprüfen
Öffne im Azure-Portal das TEST-Speicherkonto und gehe zu:
Datenspeicher > Container
Überprüfe, dass diese privaten Container vorhanden sind:
uploadsexportsaudit

Die Anwendungscontainer verwenden nun eine gemeinsame Ressourcendeklaration, und der Audit-Container wird durch einen Umgebungswert gesteuert. Ein weiterer Standardcontainer erfordert nur einen zusätzlichen Array-Eintrag statt eines kopierten Ressourcenblocks.