azure - 需要通过 Azure 策略将日期格式正确强制执行为 MM/DD/YYYY 输入,以便在订阅中创建 VM

标签 azure azure-devops azure-policy

我在 Azure Policy 下编写此内容是为了在订阅内手动创建 VM 时强制执行终止日期标记,该 VM 按预期正常工作。但是日期输入的格式设置为 MM/DD/YYY,但我无法将 MM 输入设置为仅在接下来的 2 或几个月内有效,而且它也接受超过 12 个的输入以及预期的结果。请需要指导如何正确设置。

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Compute/VirtualMachines"
        },
        {
          "field": "tags['TerminationDate']",
          "notMatch": "['##/##/####']"
        }
      ]
    },
    "then": {
      "effect": "deny"

最佳答案

最终的政策将相当复杂,但我认为这是可能的。

我会研究的关键要素:

  • 使用split函数单独验证日期参数。这也可用于强制月份在 1-12 之间
  • 使用utcNow函数检查传递的日期是否在给定的时间范围内。可以与 split 结合使用,但我可能只会在 utcNow 中添加两个月,并将其与输入进行比较。请参阅https://github.com/Azure/azure-policy/issues/388

我建议您研究一些内置策略,看看它们是否执行您想要的类似操作。你可以从语法中学到很多东西。例如:Azure Policy Support for Port Ranges

关于azure - 需要通过 Azure 策略将日期格式正确强制执行为 MM/DD/YYYY 输入,以便在订阅中创建 VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72990577/

相关文章:

Azure 更新管理 - 自动 VM 加入

asp.net-mvc - 如何使用 Azure 网站通过私有(private) IP 连接到 Sql Server VM

Azure Synapse Spark 池提交失败,错误消息为 "SparkJobDefinitionActionFailed"

firebase - Azure Pipeline错误: Failed to get Firebase project project-name.请确保该项目存在并且您的帐户有权访问它

azure-devops - 如何删除 [警告] 在还原 NuGet 包时连接到 NuGet 源

azure - 如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?

xml - 如何访问 log4net 附加程序文件值并在 azure 管道中替换

c# - 通过 Visual Studio Team Services 和 Team Foundation Server 的 REST API 概述从 Microsoft vso WorkItem 访问评论

azure - 创建 Azure 策略和蓝图所需的最低 IAM 角色是什么

azure - 如何使用策略强制实现 Azure 应用服务计划层