当前位置: 首页 > 知识库问答 >
问题:

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

席俊驰
2023-03-14

我们有一些terraform配置,我们使用s3作为后端。我们有多个AWS帐户,每个环境一个。

在所有的环境和跨多个地区的情况下,我们有不同的选择

我不确定在不必在旧状态桶上运行destroy并在新状态桶上应用的情况下,实现这一点的最佳方法是什么。

我能想到的几个选项如下,但我不确定它们是否正确。

  1. 重命名s3桶:我明白这是不可能的(还是?)
  2. 移动s3桶:重命名的解决方案如这里所述。不确定这种方法是否会干扰我们的设置。
  3. 状态迁移:terraform源代码是Git控制的,但. terraform不是。所以,我可以用新桶修改源代码,提交它,并从这个提交中创建一个新的git标记。现在,当实际进行迁移时,我会检查旧的git标记在我的环境中使用,运行terraform init,检查新的git标记并再次运行terraform init,这将理想地问我是否要进行迁移做必要的事。这个过程与terraform在这里建议的相似,但我不确定的是,这种方法是否会在我期望的运动中起作用。

附言:我假设重命名DynamoDB表或者只是使用一个新的而不是旧的会开箱即用,因为我会确保在进行状态迁移时,我没有任何正在进行的活动terraform运行。

共有2个答案

郗阳德
2023-03-14

将Terraform状态文件移动到新的S3存储桶,然后将S3后端配置中的存储桶参数更改为指向存储桶。

如果只想移动状态文件的位置,则无需执行任何其他操作,就像更改应用程序的位置,然后将快捷方式指向新位置一样。

牧信厚
2023-03-14

您是否尝试将状态文件从旧bucket复制到新bucket,然后在terraform后端配置中更改S3 bucket

 类似资料:
  • 有没有一种方法可以将文件列表从一个S3存储桶复制到另一个存储桶?两个S3存储桶都在同一个AWS帐户中。我可以使用aws cli命令一次复制一个文件: 然而,我有1000份文件要复制。我不想复制源存储桶中的所有文件,因此无法使用sync命令。有没有一种方法可以用需要复制的文件名列表来调用一个文件,从而自动化这个过程?

  • 早些时候,我的文件上载到存储文件夹中。但是现在我想在s3存储桶上上传图像。如何迁移s3存储桶上现有的本地数据? 我在这里找到了脚本https://www.stefanwienert.de/blog/2018/11/05/active-storage-migrate-between-providers-from-local-to-amazon/但是得到了一个错误 为活动存储调用私有方法打开 那么,我

  • 所以我就做了如下的桶策略: {“版本”:“2012-10-17”,“ID”:“HTTP引用策略示例”,“语句”:[{“SID”:“允许从www.example.com和example.com发起的get请求”,“Effect”:“Allow”,“Principal”:“”Action“:”S3:“,”Resource“:”arn:aws:s3:::exampleBucket/“,”Conditio

  • 我有2个AWS帐户。我试图复制文件从帐户1到帐户2在桶2在美国西部2地区。我有所有必要的IAM政策,相同的凭据适用于两个帐户。我使用python boto3库。 如图所示,复制函数在指向目标帐户2/us-west-2的客户端对象上执行。它是如何获取帐户1/us-east1中的源文件的?我应该提供作为复制函数的输入吗?

  • 我试图检查/保存我在EMR上运行的flink状态到AWS上的s3存储桶。请注意: 实例(主节点和核心节点)正确设置了IAM角色,以访问s3 bucket及其内部的所有目录/文件(AmazonS3FullAccess策略附加到该角色,没有任何内容覆盖它) jobmanager日志:

  • 我有一个亚马逊S3桶,我公开了这样的政策 我的水桶现在显示为http://bucket.s3-website-us-east-1.amazonaws.com/ 我看到其他人把他们的水桶称为http://s3-us-east-1.amazonaws.com/bucket/ 我更喜欢第二个URL,但它给出了拒绝访问。 如何更改策略以允许第二个URL?