由于新的安全要求,我将Azure Blob存储用作状态后端,我现在需要使用SSL访问Azure存储帐户。但是,此操作失败,并显示以下内容:
module.core_infra.data.terraform_remote_state.mccp_core_infra: data.terraform_remote_state.mccp_core_infra:存储:服务已返回 错误:StatusCode = 403,ErrorCode = AuthenticationFailed, ErrorMessage =服务器无法验证请求。确保 Authorization标头的值正确形成,包括 签名。
这是一个示例配置:
resource "azurerm_storage_account" "terraform_state_account" {
name = "${lower(replace(var.azure_tenant_name, "/\\W|_/", ""))}tfstate"
resource_group_name = "${azurerm_resource_group.main.name}"
location = "${var.azure_location}"
account_tier = "Standard"
account_replication_type = "LRS"
enable_https_traffic_only = true
network_rules {
ip_rules = ["masked/24"]
virtual_network_subnet_ids = ["${azurerm_subnet.mccp_vnet_subnet.id}"]
}
tags = {
environment = "${var.azure_tenant_name} terraform state account"
}
}
data "terraform_remote_state" "mccp_core_infra" {
backend = "azurerm"
config = {
storage_account_name = "${lower(replace(var.azure_tenant_name, "/\\W|_/", ""))}tfstate"
container_name = "mccp-core-infra-tf-state"
key = "terraform.tfstate"
access_key = "${var.azure_mccp_storage_account_key}"
}
}
我正在将Terraform 0.11.11与azurerm提供程序1.33.0一起使用。如果没有enable_https_traffic_only
标志,这很好用。我在这里想念什么?
答案 0 :(得分:0)
enable_https_traffic_only
功能不会对该错误产生影响。在Terraform v0.12.9中使用enable_https_traffic_only
标志可以很好地工作
+ provider.azurerm v1.35.0在我这一边。
这似乎是一个凭证问题。当access_key
在数据源中无效时,我可以重现您的问题。您可以验证是否可以使用该访问密钥访问该存储帐户Blob,或者是否从承载.tfstate
的正确存储帐户名称中获取引用。
您还可以尝试删除本地.terraform
文件夹,然后重试,如this post中所述。