oven-sh/bun · error

No base image found: ${inspect(options)}

Error message

No base image found: ${inspect(options)}

What it means

After building an AMI name pattern from platform options, getBaseImage() calls describeImages with owner-alias + name filters; zero matches throws. The pattern was syntactically fine but nothing in this region matches owner+name.

Source

Thrown at scripts/machine.mjs:407

      if (!distro || distro === "server") {
        owner = "amazon";
        name = `Windows_Server-${release || "*"}-English-Full-Base-*`;
      }
    }

    if (!name) {
      throw new Error(`Unsupported platform: ${inspect(options)}`);
    }

    const baseImages = await aws.describeImages({
      "state": "available",
      "owner-alias": owner,
      "name": name,
    });
    // console.table(baseImages.map(v => v.Name));

    if (!baseImages.length) {
      throw new Error(`No base image found: ${inspect(options)}`);
    }

    const [baseImage] = baseImages;
    return aws.getAvailableImage(baseImage);
  },

  /**
   * @param {MachineOptions} options
   * @returns {Promise<Machine>}
   */
  async createMachine(options) {
    const { os, arch, imageId, instanceType, tags, sshKeys, preemptible } = options;

    /** @type {AwsImage} */
    let image;
    if (imageId) {
      image = await aws.getAvailableImage(imageId);
    } else {

View on GitHub (pinned to 8c5296ac45)

Solutions

  1. List matching images manually to see what exists: `aws ec2 describe-images --owners <owner> --filters Name=name,Values='<pattern>' --region <region>`
  2. Relax release to '*' (omit it) to get the latest available image
  3. Accept marketplace terms for the account, or pass an explicit imageId
  4. Confirm you're searching the region the machine will run in

Example fix

// before
await aws.getBaseImage({ os: 'linux', arch: 'x64', distro: 'ubuntu', release: '24.04' });

// after (fall back to latest matching release)
await aws.getBaseImage({ os: 'linux', arch: 'x64', distro: 'ubuntu' });
Defensive patterns

Strategy: validation

Validate before calling

// Probe the pattern before launching anything
const count = await $`aws ec2 describe-images --owners ${owner} --filters Name=name,Values=${name} --query 'length(Images)'`.text();
if (Number(count) === 0) {
  throw new Error(`no AMIs match owner=${owner} name=${name} — relax release or pass imageId`);
}

Prevention

When it happens

Trigger: release filter too specific (e.g. ubuntu '24.04' pattern not published under owner 099720109477 in that region); aws-marketplace CentOS subscription not accepted in the account; images for that release were deprecated/removed; wrong region for that owner alias.

Common situations: A new distro release string that hasn't propagated to AMI names yet; running in a region where the canonical owner doesn't publish that image; marketplace terms not accepted so describeImages hides them.

Related errors


AI-assisted analysis of oven-sh/bun@8c5296ac45 (2026-08-16). Data as JSON: /api/errors/746a1b9b12400d4a. Report an issue: GitHub.