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
- Add s3:PutBucketPublicAccessBlock (and the full set: s3:PutBucketPolicy, s3:PutBucketAcl) to the IAM user policy per the linked guide
- 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
- Apply the complete Remotion IAM policy, not a subset
- After a partial-success failure, update the policy before retrying to avoid re-polluting the bucket
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
- Since April 2023, more AWS permissions are required to creat
- You don't have the required permissions to create lifecycle
- You don't have the required permissions to delete lifecycle
- Bucket owner mismatch: Expected the bucket ${bucketName} to
- Unable to access item "${objectKey}" from bucket "${bucketNa
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/22f4b949ab0dcad5.
Report an issue: GitHub.