Terraform 远程状态 s3 存储桶创建包含在状态文件中吗?

2023-12-08

我正在寻找在 S3 存储桶中创建和存储状态文件的最佳实践。

  1. 我应该将 S3 存储桶的创建与基础设施一起包括在内还是
  2. 为其 S3 存储桶创建一个单独的状态文件,并为资源创建一个不同的状态文件。

如果它是不同的文件,我还需要存储创建的 s3 存储桶的状态文件,那么在这种情况下,我应该创建两个 s3 存储桶,一个用于基础设施状态,另一个用于 s3 存储桶状态文件。

其次,如果设置了远程配置并执行“terraform destroy”,则会抛出错误,无法上传状态文件:找不到这样的存储桶,因为存储桶已被销毁。我应该首先禁用 terraform 远程配置 -disable 然后运行 ​​terraform destroy 吗? 我应该遵循的最佳实践是什么?


就我个人而言,我使用 Terraform 基础堆栈来有效引导 AWS 帐户以与 Terraform 一起使用。该堆栈仅在本地存储其状态文件,然后将其提交给版本控制。这个堆栈应该只需要运行一次,所以我认为不使用远程后端没有问题。

我的 Terraform 基础堆栈创建:

  • Terraform 的 IAM 用户将像将来一样运行
  • s3 存储状态的桶
  • 用于加密/解密状态的 KMS CMK
  • 用于强制加密的存储桶策略声明
  • 存储桶策略声明,以防止 Terraform 用户执行以下操作:s3:putObject & s3:getObject与状态
  • KMS 策略声明,防止 Terraform 用户执行以下操作:kms:GenerateDataKey* & kms:Decrypt
  • 用于状态锁定的 DynamoDB 表。

这可以扩展到包括角色,特别是如果您的 Terraform 用户将跨多个帐户进行部署。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Terraform 远程状态 s3 存储桶创建包含在状态文件中吗? 的相关文章

随机推荐

  • 覆盖文本文件上的特定行?

    如何在 c 中覆盖文本文件上的特定行 我有多个变量的值需要写入文件中 仅当新行的大小与旧行的大小相同时才有效 在 模式下打开文件a fseek 到文件的开头 在阅读下一行之前 请使用ftell 记下该行的开头 阅读该行 如果这是你想要的线路
  • UIView 隐藏/显示动画

    我的简单目标是淡出动画隐藏和显示功能 Button hidden YES 够简单的 然而 有可能让它淡出而不是消失吗 这样看起来相当不专业 在 iOS 4 及更高版本中 有一种方法只需使用 UIView 转换方法即可实现此目的 而无需导入
  • 使用 WinForms GeckoFX 控件从 C# 调用 javascript 函数的推荐方法是什么?

    问题说明了一切 我已经把所有东西都连接好了 并且知道如何将消息从浏览器 html 发送到 c 但不知道如何以其他方式发送消息 我应该能够做类似的事情 browserControl JSCall myFunction Dave Smith 以
  • iOS App提交的Bundle ID

    我的应用程序商店中已有一个应用程序 我想将新应用程序上传到应用程序商店 但它要求提供捆绑包 ID 我可以使用与第一个应用程序相同的 ID 还是每个新应用程序的新捆绑包 ID 谢谢你 您将需要创建一个新的捆绑包 ID 请参阅 Apple 文档
  • Xamarin.forms 中的垂直滑块?

    我正在尝试在 Xamarin forms 中实现垂直滑块 我知道我需要分别在 ios 和 android 中创建渲染类 对于 ios 我的渲染器似乎工作正常 对于 Android 我正在点击链接https forums xamarin co
  • git stash -- 删除未跟踪的文件

    今天在工作中 我的一位同事注意到 在提供文件路径的同时执行 git stash 会删除未跟踪的文件 git stash src 此命令会删除未跟踪的文件 并且在 stash pop 后不会恢复它们 然而 git 存储 这不 我对我来说就像一
  • 在 jqplot 中打开和关闭 pointLabels

    我正在尝试以编程方式打开和关闭 pointLabels 我认为它会像这样工作 var data 1 1 2 5 4 9 var graph jqplot id graph data series pointLabels show true
  • 是否允许在 ASP.NET Core 控制器中使用 Task.Run?

    场景 我有一个带有 删除 ASP NET Core 控制器操作的 Web 服务 该实现由两个步骤组成 第一步是便宜的 之后其他操作就不再可以看到已删除的数据 第二步是长时间运行的 它执行实际的删除 可以用吗Task Run对于第二个操作并且
  • C 风格语言中匿名 { } 块的用途是什么?

    C 风格语言 C C C 中匿名 块的用途是什么 例子 void function int i 0 i i 1 int k 0 k k 1 Edit 感谢所有精彩的回答 它将变量的范围限制在 内的块内
  • 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException [重复]

    这个问题在这里已经有答案了 我是编程新手 在 eclipse 中运行一些新代码时 我遇到了这个错误 并且完全迷失了 import java util Scanner public class Lab6 public static void
  • 如何修复 gpflow 中内核长度尺度的某些尺寸?

    我有一个 2d 内核 k gpflow kernels RBF lengthscales 24 5 1e 5 m gpflow models GPR data X Y kernel k mean function None 我想修复第二维的
  • 定义调用约定的意义何在?

    例如 int WINAPI WinMain HINSTANCE instance HINSTANCE prev instance PSTR cmd line int cmd show WINAPI 是一个如下所示的定义 define WIN
  • 部署Python程序出现问题(用py2exe打包)

    我有一个问题 我的程序使用了 py2exe 它在我的计算机上运行 我用 Inno Setup 打包它 仍然可以在我的计算机上运行 但是当我将它发送到另一台计算机时 尝试运行该应用程序时出现以下错误 CreateProcess 失败 代码 1
  • utf-8字符不显示在chrome中[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 html 特殊字符在 chrome 中无法正确显示的问题请参见 示例页面 我已经检查并重新保存了项目中的每个文件 因为 utf 8 确认了我的元标记减速 并确认 chrome 设置为默认为
  • 将数组放入 class.property

    我有一个具有以下属性的类 Dim pBonds as string Private Property Get Bonds As String Bonds pBonds End Property Private Property Get Bo
  • 如何检查用户输入是否是字符串

    我有两个用户输入 在第一个用户必须插入字符串类型的文本 在第二个用户必须插入 int 类型的数字 我使用了 try except ValueError 因此用户无法在需要 int 的地方插入字符串 尽管当用户在需要字符串的地方插入 int
  • 将 TensorBoard 2 中的 2 个图与 TensorFlow 2 合并

    我想使用 Tensorflow 和 Tensorboard V2 将精度和召回率合并到同一个图上 我找到了许多以前版本的示例 但没有一个适用于我的情况 我创建了一个 Keras 回调来计算精度和召回率 然后调用张量流摘要将它们记录在同一个记
  • ARKit – 在不可见平面下渲染 3D 对象

    我有一个带有隐形物体的 ARKit 场景SCNPlane plane geometry firstMaterial colorBufferWriteMask 该平面放置在地面上 用于渲染deferred shadows来自放置在场景中的其他
  • #define 变量的类型

    如果我有 define MAXLINE 5000 MAXLINE 理解为什么类型 我应该假设它是一个int 我可以以某种方式测试它吗 一般来说 如何判断某一种类型 defineed 变量 它没有类型 这是一个简单的文本替换 文本 5000
  • Terraform 远程状态 s3 存储桶创建包含在状态文件中吗?

    我正在寻找在 S3 存储桶中创建和存储状态文件的最佳实践 我应该将 S3 存储桶的创建与基础设施一起包括在内还是 为其 S3 存储桶创建一个单独的状态文件 并为资源创建一个不同的状态文件 如果它是不同的文件 我还需要存储创建的 s3 存储桶