gpt4 book ai didi

azure - 使用 Terraform 动态分配 Azure Blob 存储内容类型

转载 作者:行者123 更新时间:2023-12-03 00:54:04 24 4
gpt4 key购买 nike

有没有办法使用 Terraform 动态推断文件扩展名来设置 Azure Blob 存储的内容类型?目前它只是默认为“application/octet-stream”,它下载文件而不是仅在浏览器中提供文件。问题是我正在使用 for_each 使用 Terraform 将所有文件上传到 blob 存储,该存储工作正常,但内容类型需要与我上传的 Assets 相关联,其中包括 json、html、pdf、png 等。

我当前的代码示例,用于循环访问我的 Assets 文件夹并将其添加到我的 Azure Blob 存储容器。只是不确定内容类型。

resource "azurerm_storage_blob" "Example" {
for_each = fileset("${path.root}/assets/", "**/*")
name = each.key
storage_account_name = azurerm_storage_account.example.name
storage_container_name = azurerm_storage_container.example.name
type = "Block"
source = "${path.root}/assets/${each.key}"
content_md5 = filemd5("${path.root}/assets/${each.key}")
content-type = ?
}

任何帮助将不胜感激。

最佳答案

我尝试在我的环境中重现。

我在下面的文件夹中有不同格式的文件。 enter image description here我尝试创建一个 mime.json 文件来映射格式

mime.json:

{
".123": "application/vnd.lotus-1-2-3",
".3dml": "text/vnd.in3d.3dml",
".3g2": "video/3gpp2",
".3gp": "video/3gpp",
".a": "application/octet-stream",
".aac": "audio/x-aac",
".json":"application/json",
".txt":"text/plain",
".csv":"text/csv",
".png":"image/png",

}

main.tf

locals {
mime_types = jsondecode(file("${path.module}/mime.json"))
}
resource "azurerm_storage_blob" "uploadblolb" {
for_each = fileset(path.module, "filetoupload/*")

name = trim(each.key, "filetoupload/")
storage_account_name = azurerm_storage_account.example.name
storage_container_name = azurerm_storage_container.example.name
type = "Block"
content_md5 = filemd5(each.key)
source = each.key
content-type = lookup(local.mime_types, regex("\\.[^.]+$", each.value), null)
}

然后以预期的内容类型上传文件。

enter image description here

关于azure - 使用 Terraform 动态分配 Azure Blob 存储内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74180428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com