我的 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/