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

使用Pulumi调用Pact Terraform Provider时提示host必填字段缺失

使用Pulumi集成Pact Terraform Provider时的"host字段缺失"问题

问题现象

初始化Pact Provider配置正常,但添加Provider之外的资源(如pact.Environment)后,执行预览更新会触发host字段缺失错误:

Previewing update (broker):
@ previewing update.......
    pulumi:providers:pact default_0_10_0  error: rpc error: code = Unknown desc = "host": required field is not set: 
    pulumi:pulumi:Stack pact-broker-broker  
    pulumi:providers:pact default_0_10_0  1 error
Diagnostics:
  pulumi:providers:pact (default_0_10_0):
    error: rpc error: code = Unknown desc = "host": required field is not set: 

日志情况

已启用最高级别日志,可见传递给Provider的信息包含host参数,但仍报错:

eventsink.go:59] RegisterResource RPC finished: resource:Pact Broker[pulumi:providers:pact]; err: null, resp: urn:pulumi:broker::pact-broker::pulumi:providers:pact::Pact Broker,04da6b54-80e4-46f7-96ec-b56ff0331ba9,host,,,https://the-broker-url.com,version,,,0.10.0,,

尝试设置TF_LOG=DEBUG无法查看完整RPC日志,未找到启用隐藏RPC日志的方法。

当前Pulumi代码

import * as pact from "@pulumi/pact";

const host = process.env["PACT_BROKER_BASE_URL"]!!
if (!host) {
  throw new Error("Host needs to be set")
}

new pact.Provider("Pact Broker", {
  host: host,
  basicAuthUsername: process.env["PACT_BROKER_USERNAME"],
  basicAuthPassword: process.env["PACT_BROKER_PASSWORD"]
})

new pact.Environment("Test Environment", {
  displayName: "Test Environment"
})

解决方法

问题根源是未将自定义配置的Provider实例关联到后续资源。Pulumi默认会创建一个无配置的默认Provider实例,而非你手动配置的带host参数的实例。

修改代码,显式将配置好的Provider传递给pact.Environment:

import * as pact from "@pulumi/pact";

const host = process.env["PACT_BROKER_BASE_URL"]!!
if (!host) {
  throw new Error("Host needs to be set")
}

// 保存配置完成的Provider实例
const pactProvider = new pact.Provider("Pact Broker", {
  host: host,
  basicAuthUsername: process.env["PACT_BROKER_USERNAME"],
  basicAuthPassword: process.env["PACT_BROKER_PASSWORD"]
})

// 显式指定资源使用自定义Provider
new pact.Environment("Test Environment", {
  displayName: "Test Environment"
}, { provider: pactProvider }) // 关键:添加provider参数关联已配置的实例

原理:创建pact.Environment时若不指定provider选项,Pulumi会自动初始化默认的Pact Provider实例,该实例未配置host参数,因此触发缺失错误。显式关联后,资源将使用你已配置好的带host参数的Provider实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:42:37