Dátumfüggvények ARM-sablonokhoz

Ez a cikk az Azure Resource Manager-sablonban (ARM-sablonban) található dátumok használatára szolgáló függvényeket ismerteti.

Tipp.

A Bicep használatát javasoljuk, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információ: dátumfüggvények .

dateTimeAdd

dateTimeAdd(base, duration, [format])

Egy időtartamot ad hozzá egy alapértékhez. ISO 8601 formátum várható.

A Bicepben használja a dateTimeAdd függvényt .

Paraméterek

Paraméter Szükséges Típus Leírás
alap Igen húr A hozzáadás kezdő dátum/idő értéke. ISO 8601 időbélyeg formátumot használjon.
időtartam Igen húr Az alaphoz hozzáadandó időérték. Negatív érték lehet. Iso 8601 időtartamformátumot használjon.
format Nem húr A dátum időeredményének kimeneti formátuma. Ha nincs megadva, a rendszer az alapérték formátumát használja. Használjon szabványos formátumsztringeket vagy egyéni formázási sztringeket.

Visszaadott érték

Az időtartam alapértékhez való hozzáadásából eredő dátum/idő érték.

Megjegyzések

A dateTimeAdd függvény nem veszi figyelembe a szökőéveket, a P1Y-t P365D-ként kell értelmezni, míg a P1M-et P30D-ként kell értelmezni. Az alábbi json néhány példát mutat be:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "addOneYearNonLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2023-01-01 00:00:00Z', 'P1Y')]"  //2024-01-01T00:00:00Z
    },
    "addOneYearLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2024-01-01 00:00:00Z', 'P1Y')]"  //2024-12-31T00:00:00Z
    },
    "addOneMonthNonLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2023-02-01 00:00:00Z', 'P1M')]"  //2023-03-03T00:00:00Z
    },
    "addOneMonthLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2024-02-01 00:00:00Z', 'P1M')]"  //2024-03-02T00:00:00Z
    }
  }
}

Az előző példában, ha a 2023-as évet nem szökőévnek tekinti, az eredmény az, hogy egy évet ad hozzá az év első napjához 2024-01-01T00:00:00Z. Ezzel szemben, ha 2024 kezdő napjához hozzáadunk egy évet, szökőévet, az eredmény 2024-12-31T00:00:00Z, nem 2025-01-01T00:00:00Z, mivel a szökőév 365 nap helyett 366 napot tartalmaz. Emellett a szökőév és a szökőév közötti különbség akkor válik nyilvánvalóvá, ha egy hónapot ad hozzá február első napjához, ami a hónap különböző napi eredményeihez vezet.

Példák

Az alábbi példasablon az időértékek hozzáadásának különböző módjait mutatja be.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "baseTime": {
      "type": "string",
      "defaultValue": "[utcNow('u')]"
    }
  },
  "variables": {
    "add3Years": "[dateTimeAdd(parameters('baseTime'), 'P3Y')]",
    "subtract9Days": "[dateTimeAdd(parameters('baseTime'), '-P9D')]",
    "add1Hour": "[dateTimeAdd(parameters('baseTime'), 'PT1H')]"
  },
  "resources": [],
  "outputs": {
    "add3YearsOutput": {
      "value": "[variables('add3Years')]",
      "type": "string"
    },
    "subtract9DaysOutput": {
      "value": "[variables('subtract9Days')]",
      "type": "string"
    },
    "add1HourOutput": {
      "value": "[variables('add1Hour')]",
      "type": "string"
    }
  }
}

Az előző sablon alapidővel 2020-04-07 14:53:14Ztörténő üzembe helyezésekor a kimenet a következő:

Név Típus Érték
add3YearsOutput Sztring 2023.04.07. 14:53:14
subtract9DaysOutput Sztring 2020.03.29. 14:53:14
add1HourOutput Sztring 2020.04.07. 15:53:14

A következő példasablon bemutatja, hogyan állíthatja be az Automation-ütemezés kezdési idejét.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "omsAutomationAccountName": {
      "type": "string",
      "defaultValue": "demoAutomation",
      "metadata": {
        "description": "Use an existing Automation account."
      }
    },
    "scheduleName": {
      "type": "string",
      "defaultValue": "demoSchedule1",
      "metadata": {
        "description": "Name of the new schedule."
      }
    },
    "baseTime": {
      "type": "string",
      "defaultValue": "[utcNow('u')]",
      "metadata": {
        "description": "Schedule will start one hour from this time."
      }
    }
  },
  "variables": {
    "startTime": "[dateTimeAdd(parameters('baseTime'), 'PT1H')]"
  },
  "resources": [
    ...
    {
      "type": "Microsoft.Automation/automationAccounts/schedules",
      "apiVersion": "2022-08-08",
      "name": "[concat(parameters('omsAutomationAccountName'), '/', parameters('scheduleName'))]",

      "properties": {
        "description": "Demo Scheduler",
        "startTime": "[variables('startTime')]",
        "interval": 1,
        "frequency": "Hour"
      }
    }
  ],
  "outputs": {
  }
}

dateTimeFromEpoch

dateTimeFromEpoch(epochTime)

Egy idő egész számának értékét ISO 8601 datetime-ra konvertálja.

A Bicepben használja a dateTimeFromEpoch függvényt.

Paraméterek

Paraméter Szükséges Típus Leírás
epochTime Igen egész A datetime sztringgé alakítás kezdő időpontja.

Visszaadott érték

ISO 8601 datetime sztring.

Példa

Az alábbi példa az időfüggvények kimeneti értékeit mutatja be.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "convertedEpoch": {
      "type": "int",
      "defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]"
    }
  },
  "variables": {
    "convertedDatetime": "[dateTimeFromEpoch(parameters('convertedEpoch'))]"
  },
  "resources": [],
  "outputs": {
    "epochValue": {
      "type": "int",
      "value": "[parameters('convertedEpoch')]"
    },
    "datetimeValue": {
      "type": "string",
      "value": "[variables('convertedDatetime')]"
    }
  }
}

A kimenet a következő:

Név Típus Érték
datetimeValue Sztring 2023-05-02T15:16:13Z
epochValue Int 1683040573

dateTimeToEpoch

dateTimeToEpoch(dateTime)

Az ISO 8601 datetime sztringet idő egész számmá alakítja.

A Bicepben használja a dateTimeToEpoch függvényt.

Paraméterek

Paraméter Szükséges Típus Leírás
Datetime Igen húr A dátum/idő sztring, amely időszámításra konvertálható.

Visszaadott érték

Egész szám, amely az 1970. január 1-jén éjféltől kezdődő másodpercek számát jelöli.

Példák

Az alábbi példa az időfüggvények kimeneti értékeit mutatja be.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "convertedEpoch": {
      "type": "int",
      "defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]"
    }
  },
  "variables": {
    "convertedDatetime": "[dateTimeFromEpoch(parameters('convertedEpoch'))]"
  },
  "resources": [],
  "outputs": {
    "epochValue": {
      "type": "int",
      "value": "[parameters('convertedEpoch')]"
    },
    "datetimeValue": {
      "type": "string",
      "value": "[variables('convertedDatetime')]"
    }
  }
}

A kimenet a következő:

Név Típus Érték
datetimeValue Sztring 2023-05-02T15:16:13Z
epochValue Int 1683040573

A következő példa a korszak időértékével állítja be egy kulcs lejáratát egy kulcstartóban.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "16023511331197397029"
    }
  },
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location into which the resources should be deployed."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "The Tenant Id that should be used throughout the deployment."
      }
    },
    "userAssignedIdentityName": {
      "type": "string",
      "metadata": {
        "description": "The name of the existing User Assigned Identity."
      }
    },
    "userAssignedIdentityResourceGroupName": {
      "type": "string",
      "metadata": {
        "description": "The name of the resource group for the User Assigned Identity."
      }
    },
    "keyVaultName": {
      "type": "string",
      "defaultValue": "[format('vault-{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the Key Vault."
      }
    },
    "keyVaultKeyName": {
      "type": "string",
      "defaultValue": "cmkey",
      "metadata": {
        "description": "Name of the key in the Key Vault"
      }
    },
    "keyExpiration": {
      "type": "int",
      "defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]",
      "metadata": {
        "description": "Expiration time of the key"
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the Storage Account"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-10-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "sku": {
          "name": "standard",
          "family": "A"
        },
        "enableSoftDelete": true,
        "enablePurgeProtection": true,
        "enabledForDiskEncryption": true,
        "tenantId": "[parameters('tenantId')]",
        "accessPolicies": [
          {
            "tenantId": "[parameters('tenantId')]",
            "permissions": {
              "keys": [
                "unwrapKey",
                "wrapKey",
                "get"
              ]
            },
            "objectId": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
          }
        ]
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2021-10-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('keyVaultKeyName'))]",
      "properties": {
        "attributes": {
          "enabled": true,
          "exp": "[parameters('keyExpiration')]"
        },
        "keySize": 4096,
        "kty": "RSA"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "[format('{0}', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName')))]": {}
        }
      },
      "properties": {
        "accessTier": "Hot",
        "supportsHttpsTrafficOnly": true,
        "minimumTlsVersion": "TLS1_2",
        "encryption": {
          "identity": {
            "userAssignedIdentity": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))]"
          },
          "services": {
            "blob": {
              "enabled": true
            }
          },
          "keySource": "Microsoft.Keyvault",
          "keyvaultproperties": {
            "keyname": "[parameters('keyVaultKeyName')]",
            "keyvaulturi": "[if(endsWith(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, '/'), substring(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, 0, sub(length(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri), 1)), reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri)]"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]",
        "[resourceId('Microsoft.KeyVault/vaults/keys', parameters('keyVaultName'), parameters('keyVaultKeyName'))]"
      ]
    }
  ]
}

utcNow

utcNow(format)

Az aktuális (UTC) dátum/idő értéket adja vissza a megadott formátumban. Ha nincs megadva formátum, a rendszer az ISO 8601 (yyyyMMddTHHmmssZ) formátumot használja. Ez a függvény csak egy paraméter alapértelmezett értékében használható.

A Bicepben használja az utcNow függvényt.

Paraméterek

Paraméter Szükséges Típus Leírás
format Nem húr Az URI kódolt értéke, amely sztringgé konvertálható. Használjon szabványos formátumsztringeket vagy egyéni formázási sztringeket.

Megjegyzések

Ezt a függvényt csak egy paraméter alapértelmezett értékének kifejezésén belül használhatja. Ha ezt a függvényt bárhol máshol használja egy sablonban, hibát ad vissza. A függvény nem engedélyezett a sablon más részeiben, mert minden híváskor más értéket ad vissza. Ha ugyanazt a sablont ugyanazokkal a paraméterekkel helyezi üzembe, az nem eredményezne megbízhatóan ugyanazokat az eredményeket.

Ha a hibát egy korábbi sikeres üzembe helyezésre visszaállítja, és a korábbi üzembe helyezés tartalmaz egy használt utcNowparamétert, a paraméter nem lesz újraértékelve. Ehelyett a rendszer automatikusan újra felhasználja a korábbi üzembe helyezés paraméterértékét a visszaállítási üzembe helyezés során.

Ügyeljen arra, hogy újra üzembe helyezzen egy sablont, amely egy utcNow alapértelmezett érték függvényére támaszkodik. Amikor újra üzembe helyezi a paramétert, és nem ad meg értéket, a függvény újraértékelódik. Ha egy meglévő erőforrást szeretne frissíteni ahelyett, hogy újat hozna létre, adja meg a paraméter értékét a korábbi üzembe helyezésből.

Visszaadott érték

Az aktuális UTC dátum/idő érték.

Példák

Az alábbi példasablon különböző formátumokat mutat be a datetime értékhez.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "utcValue": {
      "type": "string",
      "defaultValue": "[utcNow()]"
    },
    "utcShortValue": {
      "type": "string",
      "defaultValue": "[utcNow('d')]"
    },
    "utcCustomValue": {
      "type": "string",
      "defaultValue": "[utcNow('M d')]"
    }
  },
  "resources": [
  ],
  "outputs": {
    "utcOutput": {
      "type": "string",
      "value": "[parameters('utcValue')]"
    },
    "utcShortOutput": {
      "type": "string",
      "value": "[parameters('utcShortValue')]"
    },
    "utcCustomOutput": {
      "type": "string",
      "value": "[parameters('utcCustomValue')]"
    }
  }
}

Az előző példában szereplő kimenet minden üzemelő példány esetében eltérő, de a következőhöz hasonló lesz:

Név Típus Érték
utcOutput húr 20190305T175318Z
utcShortOutput húr 03/05/2019
utcCustomOutput húr 3 5

A következő példa bemutatja, hogyan használhatja a függvény értékeit egy címkeérték beállításakor.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "utcShort": {
      "type": "string",
      "defaultValue": "[utcNow('d')]"
    },
    "rgName": {
      "type": "string"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "name": "[parameters('rgName')]",
      "location": "westeurope",
      "tags": {
        "createdDate": "[parameters('utcShort')]"
      },
      "properties": {}
    }
  ],
  "outputs": {
    "utcShortOutput": {
      "type": "string",
      "value": "[parameters('utcShort')]"
    }
  }
}

Következő lépések