floci-io/floci · error · AwsException
Override %s contains unsupported characters.
Error message
Override %s contains unsupported characters.
What it means
Thrown by the S3 deploy action when the action's first input artifact is not present in the execution's runtime artifact map. The emulator stores produced artifacts in memory keyed by execution + artifact name; a deploy-style S3 action reads inputArtifacts[0], and if no earlier action in the pipeline produced an artifact with that exact name, the lookup returns null and the action fails with InvalidJobStateException.
Source
Thrown at src/main/java/io/github/hectorvent/floci/core/common/ReservedTags.java:151
}
}
}
private static String getOverride(Map<String, String> tags, String override, TriFunction<String, String, String, String> validator, String name, String errorCode) {
if (tags == null) {
return null;
}
if (tags.containsKey(override)) {
String ov = tags.get(override);
return validator.apply(ov, name, errorCode);
}
return null;
}
private static String validateOverrideId(String overrideId, String name, String errorCode) {
String normalized = checkNullAndWhitespace(overrideId, name, errorCode);
if (normalized.indexOf('/') >= 0 || normalized.indexOf('?') >= 0 || normalized.indexOf('#') >= 0) {
throw new AwsException(errorCode, "Override %s contains unsupported characters.".formatted(name), 400);
}
if (normalized.chars().anyMatch(Character::isISOControl)) {
throw new AwsException(errorCode, CONTROL_CHARACTER_ERROR_MESSAGE.formatted(name), 400);
}
return normalized;
}
private static String validateClientSecret(String overrideSecret, String name, String errorCode) {
String normalized = checkNullAndWhitespace(overrideSecret, name, errorCode);
if (normalized.chars().anyMatch(Character::isISOControl)) {
throw new AwsException(errorCode, CONTROL_CHARACTER_ERROR_MESSAGE.formatted(name), 400);
}
return normalized;
}
private static String checkNullAndWhitespace(String overrideSecret, String name, String errorCode) {
if (overrideSecret == null || overrideSecret.trim().isEmpty()) {
throw new AwsException(errorCode, "Override %s must not be blank.".formatted(name), 400);View on GitHub (pinned to 62ff490619)
Solutions
- Set the deploy action's inputArtifacts[0].name to exactly the outputArtifacts name declared by the upstream action
- Confirm the upstream (usually Source) action succeeded and declared that output artifact
- Search the whole pipeline definition for the artifact name to catch typos between stages
Example fix
# before
- Name: Source
Actions: [{ Name: src, OutputArtifacts: [{ Name: SourceOut }], ... }]
- Name: Deploy
Actions: [{ Name: copy, InputArtifacts: [{ Name: source_out }], ... }] # name mismatch
# after
- Name: Deploy
Actions: [{ Name: copy, InputArtifacts: [{ Name: SourceOut }], ... }] Defensive patterns
Strategy: validation
Validate before calling
Set<String> produced = new HashSet<>();
for (StageDeclaration s : pipeline.stages()) {
for (ActionDeclaration a : s.actions()) {
a.outputArtifacts().forEach(o -> produced.add(o.name()));
for (InputArtifact in : a.inputArtifacts()) {
if (!produced.contains(in.name())) {
throw new IllegalStateException(
"Action " + a.name() + " consumes undeclared artifact " + in.name());
}
}
}
} Prevention
- Lint artifact name wiring (outputs vs inputs) across stages before CreatePipeline
- Name artifacts with a consistent convention so mismatches are visible in review
When it happens
Trigger: A Deploy-category S3 action whose inputArtifacts[0].name does not match any outputArtifacts name of an upstream action; the upstream source action failed or was skipped so nothing was stored; typo in the artifact name between stages.
Common situations: Hand-written pipeline JSON where output/in artifact names drift; adding a deploy stage that forgets to declare its input artifact link; renaming an artifact in the source stage but not downstream.
Related errors
- TLS enabled but no certificate provided and self-signed gene
- Failed to write self-signed TLS certificate
- ${description} file not found or not readable: ${path}
- BadRequestException
- ValidationException
AI-assisted analysis of floci-io/floci@62ff490619 (2026-08-14).
Data as JSON: /api/errors/d3bb97f3cc5cdf4e.
Report an issue: GitHub.