带有 S3 后端的 Terraform 如何发现所有工作区?

Posted

技术标签:

【中文标题】带有 S3 后端的 Terraform 如何发现所有工作区?【英文标题】:How does Terraform with a S3 Backend discover all workspaces? 【发布时间】:2021-12-26 23:10:15 【问题描述】:

S3 terraform 像这样存储状态文件。 $bucket_name/$workspace_key_prefix/$workspace_name/$key

因为特定 Terraform 项目的状态文件可以包含许多工作空间,所以状态文件可以存在于许多 S3 目录中。在新机器上进行初始化时,Terraform 如何找到所有工作空间的状态文件?它是否会搜索 S3 中的所有位置以找到所有位置?

【问题讨论】:

【参考方案1】:

此说法不正确:“因为特定 Terraform 项目的状态文件可以包含许多工作区,所以状态文件可以存在于许多 S3 目录中。”每个工作区将只有一个状态文件。只需查看 S3 前缀,它包含工作区名称。所以不能有一个包含多个工作空间的状态文件。

单个项目将有多个状态文件,每个工作区一个。无需爬取 S3 存储桶来查找状态文件,因为当前工作空间只有一个状态文件,而该状态文件的名称可以通过以下模式精确计算:$bucket_name/$workspace_key_prefix/$workspace_name/$key

【讨论】:

以上是关于带有 S3 后端的 Terraform 如何发现所有工作区?的主要内容,如果未能解决你的问题,请参考以下文章

Terraform init │ 错误:配置 S3 后端时出错:找不到 S3 后端的有效凭证源

获取对象时发生 AWS S3 错误。 S3 错误代码:带有 Terraform 的 NoSuchKey

如何将旧 S3 存储桶中的 Terraform 状态移动到新的 S3 存储桶?

Terraform 参考为远程后端创建了 S3 存储桶

S3 存储桶 - Terraform:计划显示不存在的更改,默认值

如何在 terraform 语句中启用 s3 复制存储桶权限