{"record":{"id":"02d528dda96cbf91","repo":"floci-io/floci","slug":"validationerror-02d528","errorCode":"ValidationError","errorMessage":"SecretTargetAttachment deletion requires the StackResource metadata that records its managed fields.","messagePattern":"SecretTargetAttachment deletion requires the StackResource metadata that records its managed fields\\.","errorType":"validation","errorClass":"AwsException","httpStatus":400,"severity":"error","filePath":"src/main/java/io/github/hectorvent/floci/services/cloudformation/CloudFormationResourceProvisioner.java","lineNumber":588,"sourceCode":"        }\n        switch (resourceType) {\n            case \"AWS::S3::Bucket\" -> s3Service.deleteBucket(physicalId);\n            case \"AWS::SNS::Topic\" -> snsService.deleteTopic(physicalId, region);\n            case \"AWS::SNS::Subscription\" -> snsService.unsubscribe(physicalId, region);\n            case \"AWS::DynamoDB::Table\" -> deleteDynamoTableSafe(physicalId, region);\n            case \"AWS::Lambda::Function\" -> deleteLambdaFunctionSafe(physicalId, region);\n            // AWS::IAM::Policy is inline: it is removed together with its owning principal (see\n            // IamRoleCfnProvisioner#delete), or precisely via the StackResource-aware delete path.\n            // Nothing to do here when only the physical id (policy name) is known, as on rollback.\n            case \"AWS::IAM::Policy\" -> { }\n            case \"AWS::IAM::ManagedPolicy\" -> deletePolicySafe(physicalId);\n            case \"AWS::IAM::InstanceProfile\" -> iamService.deleteInstanceProfile(physicalId);\n            case \"AWS::SSM::Parameter\" -> ssmService.deleteParameter(physicalId, region);\n            case \"AWS::KMS::Key\" -> {\n            } // KMS keys can't be immediately deleted; skip\n            case \"AWS::KMS::Alias\" -> kmsService.deleteAlias(physicalId, region);\n            case \"AWS::SecretsManager::Secret\" -> deleteSecretSafe(physicalId, region);\n            case \"AWS::SecretsManager::SecretTargetAttachment\" -> throw new AwsException(\n                    \"ValidationError\",\n                    \"SecretTargetAttachment deletion requires the StackResource metadata that records its managed fields.\",\n                    400);\n            // No bus context on the type/physicalId path (e.g. CREATE-rollback); targets the default bus.\n            case \"AWS::Events::Rule\" -> deleteEventBridgeRuleSafe(physicalId, null, region);\n            case \"AWS::Events::EventBus\" -> deleteEventBusSafe(physicalId, region);\n            case \"AWS::Events::EventBusPolicy\" -> removeEventBusPolicySafe(physicalId, region);\n            case \"AWS::ApiGateway::RestApi\" -> apiGatewayService.deleteRestApi(region, physicalId);\n            case \"AWS::ApiGatewayV2::Api\" -> apiGatewayV2Service.deleteApi(region, physicalId);\n            case \"AWS::ECR::Repository\" ->\n                    ecrService.deleteRepository(physicalId, null, true, region);\n            case \"AWS::Pipes::Pipe\" -> pipesService.deletePipe(physicalId, region);\n            case \"AWS::StepFunctions::StateMachine\" -> stepFunctionsService.deleteStateMachine(physicalId);\n            case \"AWS::Lambda::EventSourceMapping\" -> lambdaService.deleteEventSourceMapping(physicalId);\n            case \"AWS::Lambda::LayerVersion\" -> deleteLambdaLayerVersion(physicalId, region);\n            case \"AWS::Cognito::UserPool\" -> cognitoService.deleteUserPool(physicalId);\n            case \"AWS::Cognito::UserPoolClient\" -> cognitoService.deleteUserPoolClient(physicalId);\n            case \"AWS::ECS::Cluster\" -> deleteEcsClusterSafe(physicalId, region);","sourceCodeStart":570,"sourceCodeEnd":606,"githubUrl":"https://github.com/floci-io/floci/blob/62ff490619e7bd3554597c28c704081b4c15add5/src/main/java/io/github/hectorvent/floci/services/cloudformation/CloudFormationResourceProvisioner.java#L570-L606","documentation":"Error \"SecretTargetAttachment deletion requires the StackResource metadata that records its managed fields.\" thrown in floci-io/floci.","triggerScenarios":"Thrown at src/main/java/io/github/hectorvent/floci/services/cloudformation/CloudFormationResourceProvisioner.java:588 when the library encounters an invalid state.","commonSituations":"Occurs when deleting a CloudFormation-managed SecretsManager SecretTargetAttachment without the recorded StackResource metadata. Do not remove the stack metadata; delete via the stack.","solutions":["Recreate the stack so the SecretTargetAttachment resource stores the required StackResource metadata, or remove the resource and let it be recreated."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"62ff490619e7bd3554597c28c704081b4c15add5","analyzedAt":"2026-08-14T14:25:23.764Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}