{"record":{"id":"1252a652494436c7","repo":"benbjohnson/litestream","slug":"invalid-s3-access-point-arn-s","errorCode":null,"errorMessage":"invalid s3 access point arn: %s","messagePattern":"invalid s3 access point arn: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"replica_url.go","lineNumber":148,"sourceCode":"\n\t// Parse query string if present\n\tif queryStr != \"\" {\n\t\tquery, err = url.ParseQuery(queryStr)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", \"\", nil, fmt.Errorf(\"parse query string: %w\", err)\n\t\t}\n\t}\n\n\treturn \"s3\", bucket, CleanReplicaURLPath(key), query, nil\n}\n\n// splitS3AccessPointARN splits an S3 Access Point ARN into bucket and key components.\nfunc splitS3AccessPointARN(s string) (bucket, key string, err error) {\n\tlower := strings.ToLower(s)\n\tconst marker = \":accesspoint/\"\n\tidx := strings.Index(lower, marker)\n\tif idx == -1 {\n\t\treturn \"\", \"\", fmt.Errorf(\"invalid s3 access point arn: %s\", s)\n\t}\n\n\tnameStart := idx + len(marker)\n\tif nameStart >= len(s) {\n\t\treturn \"\", \"\", fmt.Errorf(\"invalid s3 access point arn: %s\", s)\n\t}\n\n\tremainder := s[nameStart:]\n\tslashIdx := strings.IndexByte(remainder, '/')\n\tif slashIdx == -1 {\n\t\treturn s, \"\", nil\n\t}\n\n\tbucketEnd := nameStart + slashIdx\n\tbucket = s[:bucketEnd]\n\tkey = remainder[slashIdx+1:]\n\treturn bucket, key, nil\n}","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/benbjohnson/litestream/blob/4ed7a308f6271ebfd2b0a6e4b70b03011a37e4a3/replica_url.go#L130-L166","documentation":"splitS3AccessPointARN rejected the string: it does not contain the ':accesspoint/' marker, so it is not a parseable S3 Access Point ARN even though the URL was routed here as one. Malformed or truncated ARN in the replica URL.","triggerScenarios":"Thrown at replica_url.go:148 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the full ARN format arn:aws:s3:us-east-1:ACCOUNT:accesspoint/NAME in the replica URL"],"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"}