You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅针对新增的Terraform Output执行apply操作?

问题描述

我想要添加一个Output用于terraform_remote_state数据源,示例代码如下:

output "acm_certificate_arn" {
  value       = module.acm_certificate.arn
  description = "arn main certificate"
}

执行terraform plan后显示的变更包含:

Changes to Outputs:
  + acm_certificate_arn = [
      + "arn:aws:acm:eu-west-123:11111111111:certificate/e6f1edf300--f33fl-number",
    ]

由于远程基础设施已变更、状态文件未更新等原因,我无法执行apply或refresh操作。请问是否可以使用类似plan --target=output.acm_certificate_arn的方式仅针对该Output执行操作?还是只能通过修改状态文件来添加所需的Output?(我曾尝试针对无变更的资源执行target apply,但没有效果)

回答
  • Terraform不支持使用--target参数直接针对Output执行apply操作。Output不属于Terraform的资源范畴,--target仅能作用于资源对象,哪怕plan中显示有Output变更,指定target为output也不会触发任何实际操作,这也是你之前尝试针对无变更资源执行target apply无效的原因。
  • 目前唯一可行的办法是手动修改状态文件,步骤如下:
    1. 导出当前状态到本地文件:
      terraform state pull > state.json
      
    2. 打开state.json,找到"outputs"节点,添加对应的输出定义(参考现有output的结构,确保值和类型匹配):
      "acm_certificate_arn": {
        "value": "arn:aws:acm:eu-west-123:11111111111:certificate/e6f1edf300--f33fl-number",
        "type": "string"
      }
      
    3. 将修改后的状态文件推回远程存储:
      terraform state push state.json
      
    4. 验证结果:执行terraform output acm_certificate_arn,确认能正确读取到该值,此时terraform_remote_state即可正常引用这个输出。

内容的提问来源于stack exchange,提问作者SimonSK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:31:10