我正在使用 terraform 在 AWS 上管理 IaC。我的 terraform 项目创建了一个 s3 存储桶,后来我将 s3 存储桶 terraform 移到了另一个项目。所以我删除了我项目中所有与 s3 相关的代码。当我运行时,terraform apply我收到一条错误消息Error: error deleting S3 Bucket (xxxx): BucketNotEmpty: The bucket you tried to delete is not empty
我知道 terraform 试图删除存储桶,因为我从那里删除了代码。
我尝试使用terraform refresh但遇到禁止错误:Error: Forbidden: Forbidden
status code: 403, request id: 8351F9C3663AF8FB, host id:.
我知道我可以从本地删除 terraform 状态文件,但这需要我导入所有资源。我该如何解决这个问题?我使用的是本地状态而不是远程状态。
Kum*_*kaj 132
您可以像这样删除添加到 Terraform 的任何资源:
列出所有状态:
terraform state list
从状态中删除所需的资源:
terraform state rm <name>
Jho*_*los 23
列出状态
$ terraform state list
data.terraform_remote_state.rg
azurerm_subnet.vsubnet
azurerm_virtual_network.vnet
Run Code Online (Sandbox Code Playgroud)
删除选定状态。
$ terraform state rm azurerm_subnet.vsubnet
Removed azurerm_subnet.vsubnet
Successfully removed 1 resource instance(s).
Run Code Online (Sandbox Code Playgroud)
Piy*_*too 12
首先,您需要通过运行从状态文件中删除资源terraform state rm <resource-id>,然后需要从代码库中删除关联的配置。该运行后init,plan你会看到不需要改变
小智 8
如果要从状态文件中删除所有资源,请运行:
terraform state rm -dry-run $(terraform state list)
Run Code Online (Sandbox Code Playgroud)
之后删除-dry-run以应用更改。
我想补充几件事,
'正确引用()资源 ID,如下所示,terraform state rm 'module.s3.module.s3_bucket["my-s3-bucket-name"].aws_s3_bucket.this[0]'
Run Code Online (Sandbox Code Playgroud)
看起来很傻,但我不敢相信,我只是浪费了最后 10 分钟在这件事上摸不着头脑。
terraform state rm $(terraform state list | grep production-files)
Run Code Online (Sandbox Code Playgroud)
例如,上面的命令将删除 aws_s3_bucket、aws_s3_bucket_policy、aws_s3_bucket_cors_configuration 等。
-dry-run在执行此类潜在破坏性操作之前请使用该标志。terraform state rm 'resource_id' -dry-run
Run Code Online (Sandbox Code Playgroud)
输出:
Acquiring state lock. This may take a few moments...
Would remove module.s3.module.s3_bucket["production-files"].aws_s3_bucket.this[0]
Releasing state lock. This may take a few moments...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4476 次 |
| 最近记录: |