Amazon web services 当对象不'时,使用terraform读取s3#U bucket#U对象的故障保护;不存在
我想安全地从Amazon web services 当对象不'时,使用terraform读取s3#U bucket#U对象的故障保护;不存在,amazon-web-services,terraform,terraform-provider-aws,Amazon Web Services,Terraform,Terraform Provider Aws,我想安全地从s3\u bucket\u对象加载数据。这意味着如果s3对象不存在,则提供一个默认值。有办法吗 如果指定不存在的密钥,则会失败 data "aws_s3_bucket_object" "deployed_builds_s3" { bucket = my_bucket_name key = "path/to/file.txt" } 错误: Error: Failed getting S3 object: Not
s3\u bucket\u对象加载数据。这意味着如果s3对象不存在,则提供一个默认值。有办法吗
如果指定不存在的密钥,则会失败
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对象是否也有类似的功能?是的,您可以在的帮助下完成此操作。具体来说,首先您将使用感兴趣的对象键调用它:
data "aws_s3_bucket_objects" "my_object" {
bucket = my_bucket_name
prefix = "path/to/file.txt"
}
如果对象存在,则它们的键
属性将有1个元素。随后,您可以有条件地执行aws\U s3\U bucket\U对象,如下所示:
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,则将执行“关于”。这是通过元参数启用的。再次感谢@Marcin!这很有效,仅供其他人参考,以获取条件文件内容mylocals
现在看起来是这样的:file\u content=length(data.aws\u s3\u bucket\u object.deployed\u builds\u s3)==1?data.aws_s3_bucket_对象。已部署的\u生成\u s3[0]。正文:“”