{"record":{"id":"14da9495f89464e8","repo":"hashicorp/terraform","slug":"error-getting-bucket-s-v","errorCode":null,"errorMessage":"error getting bucket %s: %#v","messagePattern":"error getting bucket (.+?): %#v","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/backend/remote-state/oss/client.go","lineNumber":138,"sourceCode":"\t\tif err := bucket.PutObject(c.stateFile, body, options...); err != nil {\n\t\t\treturn diags.Append(fmt.Errorf(\"failed to upload state %s: %#v\", c.stateFile, err))\n\t\t}\n\t}\n\n\tsum := md5.Sum(data)\n\tif err := c.putMD5(sum[:]); err != nil {\n\t\t// if this errors out, we unfortunately have to error out altogether,\n\t\t// since the next Get will inevitably fail.\n\t\treturn diags.Append(fmt.Errorf(\"failed to store state MD5: %s\", err))\n\t}\n\treturn diags\n}\n\nfunc (c *RemoteClient) Delete() tfdiags.Diagnostics {\n\tvar diags tfdiags.Diagnostics\n\tbucket, err := c.ossClient.Bucket(c.bucketName)\n\tif err != nil {\n\t\treturn diags.Append(fmt.Errorf(\"error getting bucket %s: %#v\", c.bucketName, err))\n\t}\n\n\tlog.Printf(\"[DEBUG] Deleting remote state from OSS: %#v\", c.stateFile)\n\n\tif err := bucket.DeleteObject(c.stateFile); err != nil {\n\t\treturn diags.Append(fmt.Errorf(\"error deleting state %s: %#v\", c.stateFile, err))\n\t}\n\n\tif err := c.deleteMD5(); err != nil {\n\t\tlog.Printf(\"[WARN] Error deleting state MD5: %s\", err)\n\t}\n\treturn diags\n}\n\nfunc (c *RemoteClient) Lock(info *statemgr.LockInfo) (string, error) {\n\tif c.otsTable == \"\" {\n\t\treturn \"\", nil\n\t}","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/hashicorp/terraform/blob/d32a084675427f5ac3f7d2868578ef8b2c1dc525/internal/backend/remote-state/oss/client.go#L120-L156","documentation":"Thrown by RemoteClient.Delete when ossClient.Bucket(c.bucketName) fails before deleting the state object. Same SDK bucket-resolution failure seen elsewhere, on the delete path.","triggerScenarios":"Bucket() returns an error during workspace state deletion — invalid bucket name, misconfigured client, or expired credentials at delete time.","commonSituations":"Attempting 'terraform workspace delete <name>' with stale STS credentials, wrong endpoint, or a malformed bucket name in backend config.","solutions":["Validate the bucket name and endpoint in the backend block.","Refresh credentials and re-run the workspace delete.","Re-run 'terraform init' to rebuild the OSS client.","Check SDK/alibaba-cloud-go version compatibility."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if !validBucketName(c.bucketName) { return fmt.Errorf(\"invalid bucket name %q\", c.bucketName) }","typeGuard":"func validBucketName(name string) bool {\n    if len(name) < 3 || len(name) > 63 { return false }\n    m, _ := regexp.MatchString(`^[a-z0-9][a-z0-9.-]*[a-z0-9]$`, name); return m\n}","tryCatchPattern":null,"preventionTips":["Refresh credentials before workspace deletes.","Validate backend config in CI.","Re-run 'terraform init' after credential changes."],"tags":["alibaba-cloud","oss","bucket","workspace","credentials","remote-state"],"backgroundTag":null,"analyzedSha":"d32a084675427f5ac3f7d2868578ef8b2c1dc525","analyzedAt":"2026-08-11T18:43:52.779Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}