{"record":{"id":"afcb0329fd2cadea","repo":"hashicorp/terraform","slug":"failed-to-create-bucket-v-v","errorCode":null,"errorMessage":"failed to create bucket %v: %v","messagePattern":"failed to create bucket (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/backend/remote-state/cos/client.go","lineNumber":308,"sourceCode":"\tlog.Printf(\"[DEBUG] getBucket %s/%s: code: %d, error: %v\", c.bucket, prefix, rsp.StatusCode, err)\n\tif rsp.StatusCode == 404 {\n\t\terr = fmt.Errorf(\"bucket %s not exists\", c.bucket)\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn fs.Contents, nil\n}\n\n// putBucket create cos bucket\nfunc (c *remoteClient) putBucket() error {\n\trsp, err := c.cosClient.Bucket.Put(c.cosContext, nil)\n\tif rsp == nil {\n\t\tlog.Printf(\"[DEBUG] putBucket %s: error: %v\", c.bucket, err)\n\t\treturn fmt.Errorf(\"failed to create bucket %v: %v\", c.bucket, err)\n\t}\n\tdefer rsp.Body.Close()\n\n\tlog.Printf(\"[DEBUG] putBucket %s: code: %d, error: %v\", c.bucket, rsp.StatusCode, err)\n\tif rsp.StatusCode == 409 {\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create bucket %v: %v\", c.bucket, err)\n\t}\n\n\treturn nil\n}\n\n// deleteBucket delete cos bucket\nfunc (c *remoteClient) deleteBucket(recursive bool) error {\n\tif recursive {","sourceCodeStart":290,"sourceCodeEnd":326,"githubUrl":"https://github.com/hashicorp/terraform/blob/d32a084675427f5ac3f7d2868578ef8b2c1dc525/internal/backend/remote-state/cos/client.go#L290-L326","documentation":"Returned by putBucket() when the COS SDK returns a nil response pointer from Bucket.Put (create bucket). The create request never reached a state where COS could respond — a transport-level failure. The original SDK error is wrapped.","triggerScenarios":"c.cosClient.Bucket.Put(...) returns (nil, err). Network failure, invalid endpoint, missing credentials, or context cancellation before any response.","commonSituations":"Backend configured without valid region/endpoint; expired SecretId/SecretKey; CI host without outbound access; the COS client URL was constructed incorrectly from the bucket/region.","solutions":["Inspect the wrapped error and DEBUG line `putBucket <bucket>: error:`.","Verify credentials and region/endpoint configuration.","Test outbound connectivity to `cos.<region>.myqcloud.com` and `cos.<region>.tencentcloudapi.com`.","Retry once transport issues are resolved."],"exampleFix":"// before: endpoint cannot be derived (missing region)\nbackend \"cos\" { bucket=\"new-tf-state-1250000000\"; acl=\"private\" }\n// after: provide region\nbackend \"cos\" { bucket=\"new-tf-state-1250000000\"; region=\"ap-guangzhou\"; acl=\"private\" }","handlingStrategy":"retry","validationCode":"// Validate connectivity + auth before attempting bucket creation\nfunc canCreateBucket(ctx context.Context, client *cos.Client, bucket string) error {\n    rsp, err := client.Bucket.Put(ctx, nil)\n    if rsp == nil { return fmt.Errorf(\"transport failure creating bucket %s: %w\", bucket, err) }\n    defer rsp.Body.Close()\n    if rsp.StatusCode == 409 { return nil } // already exists is fine\n    if rsp.StatusCode >= 400 { return fmt.Errorf(\"create bucket failed: %d\", rsp.StatusCode) }\n    return nil\n}","typeGuard":"func isCreateBucketTransportFailure(rsp *cos.Response) bool { return rsp == nil }","tryCatchPattern":"// Retry nil-response bucket creates as transport errors\nbackoff.Retry(func() error {\n    rsp, err := client.Bucket.Put(ctx, nil)\n    if rsp == nil { return err }\n    defer rsp.Body.Close()\n    if rsp.StatusCode == 409 { return nil }\n    if err != nil { return backoff.Permanent(err) }\n    return nil\n}, backoff.NewExponentialBackOff())","preventionTips":["Validate region/endpoint and credentials before any `terraform init` that creates a bucket.","Prefer pre-creating the COS bucket manually so Terraform does not need create-bucket rights.","Run from a host with reliable outbound HTTPS to Tencent Cloud.","Keep the COS SDK HTTP client timeouts sane."],"tags":["terraform","cos","tencent-cloud","bucket","network","credentials","remote-state","go"],"backgroundTag":null,"analyzedSha":"d32a084675427f5ac3f7d2868578ef8b2c1dc525","analyzedAt":"2026-08-11T18:43:52.779Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}