{"record":{"id":"30ed907c21440fba","repo":"benbjohnson/litestream","slug":"bucket-required-for-s3-replica-url","errorCode":null,"errorMessage":"bucket required for s3 replica URL","messagePattern":"bucket required for s3 replica URL","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"s3/replica_client.go","lineNumber":224,"sourceCode":"\t\treturn nil, err\n\t} else if ok {\n\t\tconcurrency = int(v)\n\t\tconcurrencySet = true\n\t}\n\tif v, ok, err := litestream.IntQueryValue(query, \"partSize\", \"part-size\"); err != nil {\n\t\treturn nil, err\n\t} else if ok {\n\t\tpartSize = v\n\t}\n\tif v := query.Get(\"storageClass\"); v != \"\" {\n\t\tstorageClass = v\n\t} else if v := query.Get(\"storage-class\"); v != \"\" {\n\t\tstorageClass = v\n\t}\n\n\t// Ensure bucket is set\n\tif bucket == \"\" {\n\t\treturn nil, fmt.Errorf(\"bucket required for s3 replica URL\")\n\t}\n\n\t// Track if forcePathStyle was explicitly set via query parameter.\n\tforcePathStyleSet := query.Get(\"forcePathStyle\") != \"\" || query.Get(\"force-path-style\") != \"\"\n\n\t// Read authentication from environment variables\n\tif v := os.Getenv(\"AWS_ACCESS_KEY_ID\"); v != \"\" {\n\t\tclient.AccessKeyID = v\n\t} else if v := os.Getenv(\"LITESTREAM_ACCESS_KEY_ID\"); v != \"\" {\n\t\tclient.AccessKeyID = v\n\t}\n\tif v := os.Getenv(\"AWS_SECRET_ACCESS_KEY\"); v != \"\" {\n\t\tclient.SecretAccessKey = v\n\t} else if v := os.Getenv(\"LITESTREAM_SECRET_ACCESS_KEY\"); v != \"\" {\n\t\tclient.SecretAccessKey = v\n\t}\n\n\tif endpoint == \"\" {","sourceCodeStart":206,"sourceCodeEnd":242,"githubUrl":"https://github.com/benbjohnson/litestream/blob/4ed7a308f6271ebfd2b0a6e4b70b03011a37e4a3/s3/replica_client.go#L206-L242","documentation":"Required-field guard in s3.NewReplicaClientFromURL: after parsing the replica URL (host, path, and query parameters), no bucket name was found. Fires when an s3:// URL lacks a bucket in its host portion, e.g. 's3:///path' or 's3://?endpoint=...'.","triggerScenarios":"Thrown at s3/replica_client.go:224 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the bucket in the URL host: s3://my-bucket/path"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4ed7a308f6271ebfd2b0a6e4b70b03011a37e4a3","analyzedAt":"2026-09-06T18:29:25.564Z","contentChangedAt":"2026-09-06T18:29:25.564Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}