remotion-dev/remotion · error · Error

PARTIAL SUCCESS: The s3:PutBucketOwnershipControls was found

Error message

PARTIAL SUCCESS: The s3:PutBucketOwnershipControls was found, but the s3:PutBucketPublicAccessBlock permission is not given. Since April 2023, more AWS permissions are required to create an S3 bucket. You need to update your user policy to continue. You need to update your user policy to continue. See https://remotion.dev/docs/lambda/s3-public-access for instructions on how to resolve this issue.

What it means

Partial-success state in bucket creation: DeleteBucketOwnershipControls succeeded (so s3:PutBucketOwnershipControls is present) but DeletePublicAccessBlock returned Access Denied, meaning s3:PutBucketPublicAccessBlock is missing. The bucket is now half-configured; the user must complete the IAM policy before continuing.

Source

Thrown at packages/lambda-client/src/create-bucket.ts:59

			}

			throw err;
		}

		try {
			await getS3Client({
				region,
				customCredentials: null,
				forcePathStyle,
				requestHandler,
			}).send(
				new DeletePublicAccessBlockCommand({
					Bucket: bucketName,
				}),
			);
		} catch (err) {
			if ((err as Error).message.includes('Access Denied')) {
				throw new Error(
					'PARTIAL SUCCESS: The s3:PutBucketOwnershipControls was found, but the s3:PutBucketPublicAccessBlock permission is not given. Since April 2023, more AWS permissions are required to create an S3 bucket. You need to update your user policy to continue. You need to update your user policy to continue. See https://remotion.dev/docs/lambda/s3-public-access for instructions on how to resolve this issue.',
				);
			}

			throw err;
		}

		let usedBucketPolicy = false;
		try {
			const policy = JSON.stringify({
				Version: '2012-10-17',
				Statement: [
					{
						Sid: 'PublicReadGetObject',
						Effect: 'Allow',
						Principal: '*',
						Action: 's3:GetObject',
						Resource: `arn:aws:s3:::${bucketName}/*`,

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Add s3:PutBucketPublicAccessBlock (and the full set: s3:PutBucketPolicy, s3:PutBucketAcl) to the IAM user policy per the linked guide
  2. Retry getOrCreateBucket after the policy update
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await getOrCreateBucket({...});
} catch (err) {
  if ((err as Error).message.startsWith('PARTIAL SUCCESS')) {
    // add s3:PutBucketPublicAccessBlock to the IAM policy, then retry
  }
  throw err;
}

Prevention

When it happens

Trigger: createBucket got past the ownership-controls step but the public-access-block delete was denied — IAM policy has the ownership permission but not the public-access-block permission.

Common situations: Partially-updated IAM policy; policy that lists ownership but omits public-access-block.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/22f4b949ab0dcad5. Report an issue: GitHub.