json - DevOps Pipeline 在将变量值作为 JSON 正文发送以使用 Terraform 部署 Azure 资源时更改时间格式

标签 json azure terraform devops azure-deployment

我的 Azure 资源 Terraform 部署包含预算,需要开始日期和结束日期。当我通过 http Post 从逻辑应用发送 JSON 正文/变量值时,DevOps 会更改字符串值的时间格式。 Terraform 需要特定的时间格式,即 RFC 3339。每当我将数据发送到 DevOps 时,它都会更改为另一个无效的标准。

管道错误:

│ Error: expected "time_period.0.end_date" to be a valid RFC3339 date, got "06/01/2022 11:53:27": parsing time "06/01/2022 11:53:27" as "2006-01-02T15:04:05Z07:00": cannot parse "1/2022 11:53:27" as "2006"
│ 
│   with azurerm_consumption_budget_resource_group.management,
│   on costmanagement.tf line 33, in resource "azurerm_consumption_budget_resource_group" "management":
│   33:     end_date   = var.end_date
│ 
╵
##[error]Terraform command 'plan' failed with exit code '1'.
##[error]╷
│ Error: expected "time_period.0.end_date" to be a valid RFC3339 date, got "06/01/2022 11:53:27": parsing time "06/01/2022 11:53:27" as "2006-01-02T15:04:05Z07:00": cannot parse "1/2022 11:53:27" as "2006"
│ 
│   with azurerm_consumption_budget_resource_group.management,
│   on costmanagement.tf line 33, in resource "azurerm_consumption_budget_resource_group" "management":
│   33:     end_date   = var.end_date

我发送的正文:

{
  "variables": {
    "end_date": {
      "isSecret:": false,
      "value": "2022-07-31T11:53:23.000Z"
    },
    "start_date": {
      "isSecret:": false,
      "value": "2022-06-01T11:53:27.000Z"
    }
  }
}

如何防止它在部署过程中发生更改?

最佳答案

唯一需要更改的是在 JSON 类型变量 end_date 中引用一个(两个键中的一个):

end_date = var.end_date["value"]

这样,只有名称为value的键才会被引用。同样,如果您需要访问 isSecret 键的值(或将来添加到变量的任何其他键),您可以使用:

someargument = var.end_date["isSecret"] # or var.end_date["<key-name>"]

有关访问 map 变量值的更多信息可以在 [1] 中找到。

<小时/>

[1] https://www.terraform.io/language/expressions/type-constraints#map

关于json - DevOps Pipeline 在将变量值作为 JSON 正文发送以使用 Terraform 部署 Azure 资源时更改时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72053715/

相关文章:

java.lang.IllegalArgumentException : "json" does not contain '/'

android json响应键值,解析

json - 是否有其他方法可以将 JSON 响应转换为自定义 Dart 对象?

c# - URL 格式无法识别,我可以转换吗

amazon-web-services - 将 cloudformation 无服务器模板转换为 Terraform 的最佳方法

azure - 为什么我无法将 dependent_on block 添加到具有提供程序配置的模块?

iphone - 将特定符号从 json 转换为普通 utf-8

azure - 当我有应用程序网关时,为什么要使用 azure APIM

powershell - 使用 Powershell 进行 Azure 资源管理器网络安全组配置

azure - 如何使用 terraform 将 Azure 应用程序服务与应用程序洞察资源(新的或现有的)关联?