{"record":{"id":"329059a21d92acf2","repo":"argoproj/argo-workflows","slug":"unable-to-source-artifact-paths-w","errorCode":null,"errorMessage":"unable to source artifact paths: %w","messagePattern":"unable to source artifact paths: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/data/data.go","lineNumber":31,"sourceCode":"\tsourcedData, err := processSource(ctx, data.Source, processor)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to process data source: %w\", err)\n\t}\n\ttransformedData, err := processTransformation(sourcedData, &data.Transformation)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to process data transformation: %w\", err)\n\t}\n\treturn transformedData, nil\n}\n\nfunc processSource(ctx context.Context, source wfv1.DataSource, processor wfv1.DataSourceProcessor) (any, error) {\n\tvar data any\n\tvar err error\n\tswitch {\n\tcase source.ArtifactPaths != nil:\n\t\tdata, err = processor.ProcessArtifactPaths(ctx, source.ArtifactPaths)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to source artifact paths: %w\", err)\n\t\t}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"no valid source is used for data template\")\n\t}\n\n\treturn data, nil\n}\n\nfunc processTransformation(data any, transformation *wfv1.Transformation) (any, error) {\n\tif transformation == nil {\n\t\treturn data, nil\n\t}\n\n\tvar err error\n\tfor i, step := range *transformation {\n\t\tif step.Expression != \"\" {\n\t\t\tdata, err = processExpression(step.Expression, data)\n\t\t}","sourceCodeStart":13,"sourceCodeEnd":49,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/data/data.go#L13-L49","documentation":"The artifact-paths source processor (ProcessArtifactPaths) returned an error while a Data template tried to enumerate artifacts matching source.artifactPaths. The error is wrapped and propagates up as 'unable to process data source'. It reflects a storage/driver failure, not expression logic.","triggerScenarios":"processor.ProcessArtifactPaths fails: listing objects from S3/GCS/Azure fails due to bad credentials, missing bucket, wrong key prefix, throttling, or the artifact driver not being configured.","commonSituations":"IAM/SA permissions missing on the artifact bucket, artifactRepository misconfigured in the controller configmap, bucket region mismatch, or network egress blocked from the controller.","solutions":["Read the wrapped underlying error for the storage backend's actual failure","Verify artifactRepository settings and credentials (key format, accessKey/secretKey or workload identity)","Confirm objects actually exist under the given key prefix (aws s3 ls / gsutil ls)","Test with a basic S3/GCS artifact template to confirm driver connectivity"],"exampleFix":"// before: missing bucket in key\nartifactPaths:\n  s3:\n    key: artifacts/*.tgz\n// after\nartifactPaths:\n  s3:\n    bucket: my-artifacts\n    key: artifacts/{{workflow.name}}/*.tgz","handlingStrategy":"validation","validationCode":"// Pre-flight: check the artifact store is reachable and objects exist\nsess := session.Must(session.NewSession())\ns3c := s3.New(sess, aws.NewConfig().WithRegion(region))\n_, err := s3c.ListObjectsV2(&s3.ListObjectsV2Input{\n    Bucket: aws.String(bucket), Prefix: aws.String(prefix)})\nif err != nil { return fmt.Errorf(\"artifact source unreachable: %w\", err) }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Verify bucket name, prefix, and region in artifactRepository config","Grant the controller's IRSA/instance role read+list on the bucket","Run aws s3 ls / gsutil ls against the exact key prefix before submitting","Check controller logs for driver-level errors to distinguish auth vs network issues"],"tags":["artifacts","storage","s3","data-template","argo-workflows"],"backgroundTag":"artifact-source-processing-failed","analyzedSha":"35bff19146f5a6ada77468c431f2624bd577e373","analyzedAt":"2026-09-03T19:34:35.908Z","contentChangedAt":"2026-09-03T19:34:35.908Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}