如何解决当对象不存在时使用terraform失败安全读取s3_cucket_object
我想从s3_bucket_object
安全地加载数据。意思是如果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对象有类似的东西吗?
解决方法
是的,您可以在aws_s3_bucket_objects的帮助下完成此操作。具体来说,首先您将使用感兴趣的对象键对其进行调用:
data "aws_s3_bucket_objects" "my_object" {
bucket = my_bucket_name
prefix = "path/to/file.txt"
}
如果对象存在,则它们的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元参数启用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。