HIT*_*irl 3 amazon-web-services terraform terraform-provider-aws
我想安全地从s3_bucket_object. 这意味着如果 s3 对象不存在,则提供默认值。有没有办法做到这一点 ?
如果我指定不存在的密钥,则会失败
data "aws_s3_bucket_object" "deployed_builds_s3" {
  bucket = my_bucket_name
  key    = "path/to/file.txt"
}
Run Code Online (Sandbox Code Playgroud)
错误:
Error: Failed getting S3 object: NotFound: Not Found
Run Code Online (Sandbox Code Playgroud)
我知道可以像这样处理本地文件:
locals {
  file_content = fileexists("file.txt") ? file("file.txt") : ""
}
Run Code Online (Sandbox Code Playgroud)
s3 对象有类似的东西吗?
是的,您可以在aws_s3_bucket_objects的帮助下完成此操作。具体来说,首先您将使用感兴趣的对象键调用它:
data "aws_s3_bucket_objects" "my_object" {
  bucket = my_bucket_name
  prefix = "path/to/file.txt"
}
Run Code Online (Sandbox Code Playgroud)
如果对象存在,它们的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
}
Run Code Online (Sandbox Code Playgroud)
如果找到的键数大于 0,则 about 将执行。这是通过count元参数启用的。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1659 次  |  
        
|   最近记录:  |