{"record":{"id":"3ccdc8dd8004e45f","repo":"hashicorp/terraform","slug":"error-getting-bucket-v-3ccdc8","errorCode":null,"errorMessage":"error getting bucket: %#v","messagePattern":"error getting bucket: %#v","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/backend/remote-state/oss/client.go","lineNumber":104,"sourceCode":"\t\t\tif time.Now().Before(deadline) {\n\t\t\t\ttime.Sleep(consistencyRetryPollInterval)\n\t\t\t\tlog.Println(\"[INFO] retrying OSS RemoteClient.Get...\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn nil, diags.Append(fmt.Errorf(errBadChecksumFmt, digest))\n\t\t}\n\n\t\tbreak\n\t}\n\treturn payload, diags\n}\n\nfunc (c *RemoteClient) Put(data []byte) 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: %#v\", err))\n\t}\n\n\tbody := bytes.NewReader(data)\n\n\tvar options []oss.Option\n\tif c.acl != \"\" {\n\t\toptions = append(options, oss.ACL(oss.ACLType(c.acl)))\n\t}\n\toptions = append(options, oss.ContentType(\"application/json\"))\n\tif c.serverSideEncryption {\n\t\toptions = append(options, oss.ServerSideEncryption(\"AES256\"))\n\t}\n\toptions = append(options, oss.ContentLength(int64(len(data))))\n\n\tif body != nil {\n\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}","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/hashicorp/terraform/blob/d32a084675427f5ac3f7d2868578ef8b2c1dc525/internal/backend/remote-state/oss/client.go#L86-L122","documentation":"Thrown by RemoteClient.Put when ossClient.Bucket(c.bucketName) fails just before uploading state. Same SDK bucket-resolution failure as in Workspaces, but on the write path.","triggerScenarios":"Bucket() returns an error during state upload — invalid bucket name, client misconfiguration, or stale/expired credentials being used for the write.","commonSituations":"STS token expired mid-run; bucket name has illegal characters; endpoint mismatch; SDK init defect; running on ECS with a RAM role whose refresh just failed.","solutions":["Validate bucket name format and region/endpoint consistency.","Refresh credentials (re-run init, or fix RAM role attachment) if the run was long-lived.","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 long runs that write state.","Validate backend config in CI before apply.","Pin OSS SDK versions."],"tags":["alibaba-cloud","oss","bucket","remote-state","credentials"],"backgroundTag":null,"analyzedSha":"d32a084675427f5ac3f7d2868578ef8b2c1dc525","analyzedAt":"2026-08-11T18:43:52.779Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}