brash-yak-8858
07/30/2025, 4:59 AMfunction resolveProperties(res, resolvers, t, name, allProps, deps, err, keepUnknowns) {
// If there is an error, just reject everything.
if (err) {
for (const k of Object.keys(resolvers)) {
const resolve = resolvers[k];
resolve(undefined, true, false, [], err);
}
return;
}
where this code:
secret = new aws.secretsmanager.Secret(
`repo-${key}-secret`,
{
name: `ecr-pullthroughcache/${key}`,
secretString: JSON.stringify(repo.auth),
},
);
new aws.ecr.PullThroughCacheRule(
`repo-${key}-rule`
{
credentialArn: secret.awsId,
upstreamRegistryUrl: repo.url,
ecrRepositoryPrefix: key,
},
);
results in the output of:
error: creating resource: creating resource (await): operation CREATE failed with "InvalidRequest": The specified upstream registry requires authentication. Specify a valid Secrets Manager ARN containing the upstream registry credentials and try again. (Service: Ecr, Status Code: 400, Request ID: ...) (SDK Attempt Count: 1)
and the debug logs show:
> error: failed to register new resource ... [aws-nativeecr...]: Resource monitor is terminating
and the resource failing to create because the input is <nil>
instead of the correct value. i am uncertain where to trace the rest of this, any guidance would be appreciated 🙂brash-yak-8858
07/30/2025, 6:54 AM// We treat properties with undefined values as if they do not exist.
const dependentResources = new Set();
const v = await serializeProperty(`${label}.${k}`, props[k], dependentResources, opts);
if (v === undefined && props[k] !== undefined) {
console.log(`failed to serialize ${label}.${k}`);
}
^^ the above does nothing in node
and outputs failed to serialize...
in bun
. specifically in bun
the output is undefined and in node
the output is a uuidbrash-yak-8858
07/30/2025, 6:59 AMnode
classifies the output as UNKNOWN
, bun
simply returns undefined
brash-yak-8858
07/30/2025, 7:09 AMnode
has ResourceImpl
that includes Unknown { __pulumiUnknown: true }
objects, bun
does notbrash-yak-8858
07/30/2025, 7:34 AMtransferProperties
where resolvers[k] = (v, isKnown, isSecret, deps = [], err) => {
has v
with Unknown
instances in node
but not in bun
brash-yak-8858
07/30/2025, 7:37 AMresolvers[k] = (v, isKnown, isSecret, deps = [], err) => {
if (v && typeof v === 'object' && ('__pulumiUnknown' in v)) {
console.log('UNKNOWN VALUE', label);
}
produces output in node
but no output in bun
brash-yak-8858
07/30/2025, 9:26 AMisKnown = Promise.all([isKnown, promise]).then(([known, val]) => {
known
is true
in bun
and false
in node
brash-yak-8858
07/30/2025, 9:40 AMfor (const k of Object.keys(resolvers)) {
if (!allProps.hasOwnProperty(k)) {
const resolve = resolvers[k];
if (!settings_1.isDryRun && keepUnknowns) {
resolve(output_1.unknown, true, false);
}
else {
console.log(!settings_1.isDryRun() && !keepUnknowns)
resolve(undefined, !settings_1.isDryRun() && !keepUnknowns, false);
}
}
}
the !settings_1.isDryRun() && !keepUnknowns
block is true
in bun
and false
in node
brash-yak-8858
07/30/2025, 9:40 AMsettings_1.isDryRun()
brash-yak-8858
07/30/2025, 10:00 AMdryRun: `${process.env[nodeEnvKeys.dryRun]}` === "true",
solves this problembrash-yak-8858
07/30/2025, 10:00 AMprocess.env[nodeEnvKeys.dryRun]
is not a string?brash-yak-8858
07/30/2025, 10:03 AMfunction addToEnvIfDefined(key, value) {
if (value) {
process.env[key] = `${value}`;
}
}
^ is a better fixbrash-yak-8858
07/30/2025, 10:20 AMresource monitor shut down while waiting on step's done channel
brash-yak-8858
07/30/2025, 10:20 AMresp = await debuggable_1.debuggablePromise(new Promise((resolve, reject) => monitor.registerResource(req, (rpcErr, innerResponse) => {
if (rpcErr) {
err = rpcErr;