簡體   English   中英

當 object 不存在時,使用 terraform 無法安全讀取 s3_bucket_object

[英]Fail safe reading s3_bucket_object with terraform when object doesn't exist

我想安全地從s3_bucket_object加載數據。 這意味着如果 s3 object 不存在,則提供默認值。 有沒有辦法做到這一點?

如果我指定不存在的密鑰,我會失敗

data "aws_s3_bucket_object" "deployed_builds_s3" {
  bucket = my_bucket_name
  key    = "path/to/file.txt"
}

錯誤:

Error: Failed getting S3 object: NotFound: Not Found

我知道可以使用這樣的本地文件,例如:

locals {
  file_content = fileexists("file.txt") ? file("file.txt") : ""
}

s3 對象有類似的東西嗎?

是的,您可以在aws_s3_bucket_objects的幫助下做到這一點。 具體來說,首先您將使用感興趣的 object 鍵調用它:

data "aws_s3_bucket_objects" "my_object" {
  bucket = my_bucket_name
  prefix = "path/to/file.txt"
}

如果 object 存在,它們的keys屬性將有 1 個元素。 隨后,您可以有條件地執行aws_s3_bucket_object ,如下所示:

data "aws_s3_bucket_object" "deployed_builds_s3" {

  count  = length(data.aws_s3_bucket_objects.my_object.keys)

  bucket = data.aws_s3_bucket_objects.my_object.keys[0]
  key    = data.aws_s3_bucket_objects.my_object.bucket
}

如果找到的鍵數大於 0,about 將執行。這是通過count元參數啟用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM