【发布时间】:2020-09-18 23:49:10
【问题描述】:
我们目前使用 S3 作为我们的后端来保存 tf 状态文件。在执行terraform plan 时,我们收到以下错误:
Error: Forbidden: Forbidden
status code: 403, request id: 18CB0EA827E6FE0F, host id: 8p0TMjzvooEBPNakoRsO3RtbARk01KY1KK3z93Lwyvh1Nx6sw4PpRyfoqNKyG2ryMNAHsdCJ39E=
我们已启用调试模式,下面是我们注意到的错误消息。
2020-05-31T20:02:20.842+0400 [DEBUG] plugin.terraform-provider-aws_v2.64.0_x4: Accept-Encoding: gzip
2020-05-31T20:02:20.842+0400 [DEBUG] plugin.terraform-provider-aws_v2.64.0_x4:
2020-05-31T20:02:20.842+0400 [DEBUG] plugin.terraform-provider-aws_v2.64.0_x4:
2020-05-31T20:02:20.842+0400 [DEBUG] plugin.terraform-provider-aws_v2.64.0_x4: -----------------------------------------------------
2020/05/31 20:02:20 [ERROR] <root>: eval: *terraform.EvalRefresh, err: Forbidden: Forbidden
status code: 403, request id: 2AB56118732D7165, host id: 5sM6IwjkufaDg1bt5Swh5vcQD2hd3fSf9UqAtlL4hVzVaGPRQgvs1V8S3e/h3ta0gkRcGI7GvBM=
2020/05/31 20:02:20 [ERROR] <root>: eval: *terraform.EvalSequence, err: Forbidden: Forbidden
status code: 403, request id: 2AB56118732D7165, host id: 5sM6IwjkufaDg1bt5Swh5vcQD2hd3fSf9UqAtlL4hVzVaGPRQgvs1V8S3e/h3ta0gkRcGI7GvBM=
2020/05/31 20:02:20 [TRACE] [walkRefresh] Exiting eval tree: aws_s3_bucket_object.xxxxxx
2020/05/31 20:02:20 [TRACE] vertex "aws_s3_bucket_object.xxxxxx": visit complete
2020/05/31 20:02:20 [TRACE] vertex "aws_s3_bucket_object.xxxxxx: dynamic subgraph encountered errors
2020/05/31 20:02:20 [TRACE] vertex "aws_s3_bucket_object.xxxxxx": visit complete
我们已尝试将代码和 tfstate 文件恢复为工作版本并尝试过。另外,也在本地删除了 tfstate 文件。还是同样的错误。
s3 存储桶策略如下:
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxxxxx:role/Administrator"
},
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectTagging"
],
"Resource": [
"arn:aws:s3:::xxxxxx/*",
"arn:aws:s3:::xxxxxx"
]
}
terraform 正在承担相同的角色来执行,但仍然失败。我也清空了存储桶策略并尝试了但没有看到任何成功。我知道这与存储桶策略本身有关,但不确定如何解决。
非常感谢任何解决此问题的指针。
【问题讨论】:
-
审查您的 S3 存储桶策略将有助于理解这一点。在发布之前,请务必在政策中使用虚假占位符掩盖您的帐户 ID、KMS 密钥 ID 或其他个人身份信息(例如个人或公司名称)。
-
另外,请发布您在运行时向 Terraform 提供其凭证的 IAM 用户或 IAM 角色 STS 会话的组合 IAM 策略。
-
用存储桶策略更新了描述。请检查。