【发布时间】:2019-05-17 16:34:06
【问题描述】:
我看到间歇性的 Terraform 故障,这在我看来就像 Terraform 本身内部的竞争条件:
21:31:37 aws_s3_bucket.jar: Creation complete after 1s
(ID: automatictester.co.uk-my-bucket)
...
21:31:38 * aws_s3_bucket_object.jar: Error putting object in S3 bucket
(automatictester.co.uk-my-bucket): NoSuchBucket: The specified bucket
does not exist
正如您在上面的日志中看到的那样,TF 首先声称它在 21:31:37 创建了一个存储桶,然后说它无法将对象放入该存储桶中,因为该存储桶在 21:31 不存在: 38.
上述错误背后的代码:
resource "aws_s3_bucket" "jar" {
bucket = "${var.s3_bucket_jar}"
acl = "private"
}
...
resource "aws_s3_bucket_object" "jar" {
bucket = "${var.s3_bucket_jar}"
key = "my.jar"
source = "${path.module}/../target/my.jar"
etag = "${md5(file("${path.module}/../target/my.jar"))}"
}
这两者之间显然存在隐含的依赖关系,因此我想到的唯一失败原因是 Amazon S3 的最终一致性。
如何处理此类错误?我相信用depends-on 明确定义的依赖不会为已经存在的隐式依赖提供任何价值。
【问题讨论】:
标签: amazon-web-services amazon-s3 terraform terraform-provider-aws