← 中文资源

简体中文版本

在 Pulumi 栈之间共享输出

导出栈输出,用 StackReference 在其他栈中读取,并保持依赖方向无环,使基础设施干净地组合。

阅读英文原文

概述

在两个栈之间复制粘贴网络 id,会让其中一方的改动静默破坏另一方。StackReference 让消费者在部署时读取生产者导出的输出,前提是依赖方向单一且输出被视为需要维护的契约。

关键步骤

  1. 把下游需要的值作为栈输出导出。
  2. 用 StackReference 选择具体输出读取。
  3. 保持依赖方向单一,避免循环。
  4. 对缺失或改名输出做显式检查以快速失败。

验证

  • 消费者获得生产者的当前取值。
  • 依赖顺序在一次部署中成立。
  • 输出改名会明确失败。
  • 不产生循环依赖。

注意事项

  • 栈引用形成部署依赖,消费者无法先于生产者部署。
  • 它共享的是普通取值而非完整资源图,跨栈变更不会被自动建模。

适用范围

本条目围绕「在 Pulumi 栈之间共享输出」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

const network = new pulumi.StackReference('acme/network/prod');
const vpcId = network.requireOutput('vpcId');
const subnet = new aws.ec2.Subnet('app', { vpcId });