serverless/serverless · error · ServerlessError
REFERENCE_MODE_BUCKET_NOT_VERSIONED
REFERENCE_MODE_BUCKET_NOT_VERSIONED
Error message
Deployment bucket "${this.bucketName}" must have versioning enabled to use "codeStorageMode: reference". Enable versioning on the bucket, or remove the codeStorageMode setting. What it means
Error "Deployment bucket "${this.bucketName}" must have versioning enabled to use "codeStorageMode: reference". Enable versioning on the bucket, or remove the codeStorageMode setting." thrown in serverless/serverless.
Source
Thrown at packages/serverless/lib/plugins/aws/deploy/lib/ensure-reference-code-storage.js:77
this.buildReferencePolicyStatement(await this.provider.getAccountId()),
)
await this.provider.request('S3', 'putBucketPolicy', {
Bucket: this.bucketName,
Policy: JSON.stringify(policy),
})
log.info(
`Granted the Lambda service read access to deployment bucket "${this.bucketName}" (self-managed code storage)`,
)
},
async validateCustomBucketForReferenceMode() {
const versioning = await this.provider.request(
'S3',
'getBucketVersioning',
{ Bucket: this.bucketName },
)
if (versioning.Status !== 'Enabled') {
throw new ServerlessError(
`Deployment bucket "${this.bucketName}" must have versioning enabled to use "codeStorageMode: reference". ` +
'Enable versioning on the bucket, or remove the codeStorageMode setting.',
'REFERENCE_MODE_BUCKET_NOT_VERSIONED',
)
}
// Best-effort policy check — the framework never mutates user-owned buckets
let result
try {
result = await this.provider.request('S3', 'getBucketPolicy', {
Bucket: this.bucketName,
})
} catch (error) {
const isNoSuchBucketPolicy =
error.providerError?.code === 'NoSuchBucketPolicy' ||
error.code === 'AWS_S3_GET_BUCKET_POLICY_NO_SUCH_BUCKET_POLICY'
if (!isNoSuchBucketPolicy) {
// Cannot read the policy for some other reason (e.g. AccessDenied) —View on GitHub (pinned to b9d7ea51c8)
Solutions
- Enable versioning on the deployment bucket (aws s3api put-bucket-versioning) or remove 'codeStorageMode: reference' from the configuration.
When it happens
Trigger: Thrown at packages/serverless/lib/plugins/aws/deploy/lib/ensure-reference-code-storage.js:77 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of serverless/serverless@b9d7ea51c8 (2026-08-13).
Data as JSON: /api/errors/143154513f857a1b.
Report an issue: GitHub.