Skip to content
DevOps AI ToolKit
Newsletter
All guides
AI for Pulumi By James Joyner IV · · 8 min read

Pulumi Error: 'unknown resource type aws:s3/bucketv2:BucketV2' — Cause, Fix, and Troubleshooting Guide

Quick answer

Fix Pulumi 'unknown resource type aws:s3/bucketv2:BucketV2' — correct the resource token or install/pin the provider plugin version that defines it.

  • #pulumi
  • #iac
  • #troubleshooting
  • #errors
Free toolkit

Fixing errors like this? Get 500 free DevOps AI prompts

500 copy-paste AI prompts for the stack you actually run — one PDF, free.

Overview

error: unknown resource type 'aws:s3/bucketv2:BucketV2' means the Pulumi engine asked a provider plugin to create a resource, but that provider does not recognize the resource token you used. A resource token has the form <package>:<module>/<type>:<Type> (for example aws:s3/bucketV2:BucketV2). The engine routes the request to the aws provider plugin, and the plugin looks the token up in its schema. If it is not there, you get this error.

error: unknown resource type 'aws:s3/bucketv2:BucketV2'

There are two flavors of this problem. Either the token is wrong (a typo, wrong casing, or a renamed/removed resource), or the installed provider version does not define that token (too old, too new, or a version drift between your SDK and the plugin). Note that tokens are case-sensitive: bucketv2 is not the same as bucketV2.

Symptoms

  • pulumi up or pulumi preview fails with unknown resource type '<package>:<module>/<type>:<Type>'.
  • You recently upgraded or downgraded a provider SDK, or bumped a plugin version.
  • You are hand-writing YAML or using dynamic/token-based construction and mistyped the token.
  • The resource works for a teammate on a different provider version.

Common Root Causes

1. Wrong casing or a typo in the token

Tokens are case-sensitive. aws:s3/bucketv2:BucketV2 (lowercase v) is not the same token as aws:s3/bucketV2:BucketV2. A single wrong character makes the token unknown.

2. Provider version too old to define the resource

The resource was added in a newer provider release than the plugin you have installed. For example BucketV2 requires a recent aws provider; an old plugin has never heard of it.

pulumi plugin ls

3. Resource renamed or removed across a major version

A provider major upgrade renamed or dropped a token. Code written against v5 may reference a token that v6 restructured, or vice versa.

4. SDK and plugin version drift

Your language SDK (npm/pip/go module) and the installed resource plugin are out of sync, so the SDK emits a token the installed plugin does not implement.

5. Wrong package name entirely (classic vs native / community provider)

Using a token from a different package — for example an azure-native token while only the classic azure plugin is installed, or a community provider that was never installed.

How to Diagnose

Confirm exactly which providers and versions are installed:

pulumi plugin ls

Compare that to the SDK version your program depends on (for TypeScript/Node):

npm ls @pulumi/aws

For Python or Go, check requirements.txt / go.mod respectively. Then verify the correct token in the provider’s API docs, and double-check casing character by character. A preview will confirm whether fixing the token or the plugin resolves it:

pulumi preview

Fixes

Correct the resource token / constructor. Prefer the SDK’s typed constructor over hand-written tokens so the compiler catches mistakes. The correct S3 v2 bucket is aws.s3.BucketV2:

// Correct casing and type
const bucket = new aws.s3.BucketV2("web", {});

If you must reference the raw token (YAML or dynamic code), use the exact case from the docs — aws:s3/bucketV2:BucketV2.

Upgrade the provider plugin to a version that defines the token. Install the plugin version that includes the resource, then retry:

pulumi plugin install resource aws 6.42.0
pulumi up

Pin the provider version in your project so plugin and SDK match. For TypeScript, pin the SDK in package.json and reinstall:

"dependencies": {
  "@pulumi/aws": "6.42.0"
}
npm install

For Python, pin it in requirements.txt (pulumi-aws==6.42.0) and pip install -r requirements.txt. You can also pin the plugin declaratively in Pulumi.yaml:

plugins:
  providers:
    - name: aws
      version: 6.42.0

Install a missing community/native provider. If the token belongs to a package you never installed, add its plugin:

pulumi plugin install resource azure-native 2.50.0

Remove and reinstall a corrupted plugin. If versions look right but the token is still unknown, clear and reinstall the plugin:

pulumi plugin rm resource aws --all --yes
pulumi plugin install resource aws 6.42.0

What to Watch Out For

  • Resource tokens are case-sensitivebucketV2 and bucketv2 are different tokens.
  • Keep the SDK and plugin versions aligned; drift between them is the most common cause after typos.
  • Read provider release notes before major upgrades — tokens are occasionally renamed or removed (e.g. classic Bucket vs BucketV2).
  • Use the strongly typed SDK constructors instead of raw tokens wherever possible so your compiler/linter flags unknown types before pulumi up.
  • Pin provider versions in Pulumi.yaml, package.json, or requirements.txt so CI installs the same plugin that defines the tokens your code uses.
Free download · 368-page PDF

Get 500 Battle-Tested DevOps AI Prompts — Free

500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.

  • 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
  • Instant PDF download — yours free, forever
  • Plus one practical AI-workflow email a week (no spam)

Single opt-in · unsubscribe anytime · no spam.