CloudFormation "CREATE_FAILED ... already exists" in CI
CloudFormation tried to create a resource whose physical name is already taken (an existing S3 bucket, IAM role, or log group), so it marks the resource CREATE_FAILED and rolls the stack back.
What this error means
A stack event shows status CREATE_FAILED with a reason like "<name> already exists" or "Resource of type ... with identifier ... already exists", and the stack ends in ROLLBACK_COMPLETE.
CREATE_FAILED AWS::S3::Bucket AssetsBucket
Resource handler returned message: "my-app-assets already exists"
(Service: S3, Status Code: 409, Request ID: ...)Common causes
A hardcoded name collides with an existing resource
The template sets an explicit BucketName or RoleName that already exists in the account or globally (S3 names are global), so creation fails.
A previous failed deploy left the resource behind
A resource was created outside CloudFormation, or a prior stack was deleted without removing it, so the new create hits a name clash.
How to fix it
Let CloudFormation generate the name
- Remove the explicit name property so CloudFormation assigns a unique physical ID.
- If a stable name is required, make it unique per stack with
!Suband the stack name. - Redeploy so the create no longer collides.
Resources:
AssetsBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub '${AWS::StackName}-assets'Import or delete the orphaned resource
If the resource already exists and should be managed by this stack, import it; otherwise delete the orphan, then redeploy.
aws cloudformation create-change-set \
--stack-name my-app --change-set-type IMPORT \
--resources-to-import file://import.json --template-body file://template.ymlHow to prevent it
- Avoid hardcoded physical names; let CloudFormation generate them.
- Scope explicit names per stack with the stack name prefix.
- Clean up resources created outside the stack before deploying.