floci-io/floci · error · AwsException
InvalidAction
InvalidAction
Error message
Action " + action + " is not supported
What it means
Thrown by the CodeBuild JSON handler's action dispatch switch when the X-Amz-Target action is not one of the implemented operations (CreateProject, StartBuild, BatchGetReportGroups, ImportSourceCredentials, etc.). It is an InvalidAction 400, matching the AWS convention for unrecognized actions on a recognized service endpoint.
Source
Thrown at src/main/java/io/github/hectorvent/floci/services/codebuild/CodeBuildJsonHandler.java:56
case "DeleteProject" -> deleteProject(request, region);
case "BatchGetProjects" -> batchGetProjects(request, region);
case "ListProjects" -> listProjects(region);
case "CreateReportGroup" -> createReportGroup(request, region, account);
case "UpdateReportGroup" -> updateReportGroup(request, region);
case "DeleteReportGroup" -> deleteReportGroup(request, region);
case "BatchGetReportGroups" -> batchGetReportGroups(request, region);
case "ListReportGroups" -> listReportGroups(region);
case "ImportSourceCredentials" -> importSourceCredentials(request, region, account);
case "ListSourceCredentials" -> listSourceCredentials(region);
case "DeleteSourceCredentials" -> deleteSourceCredentials(request, region);
case "ListCuratedEnvironmentImages" -> listCuratedEnvironmentImages();
case "StartBuild" -> startBuild(request, region, account);
case "BatchGetBuilds" -> batchGetBuilds(request, region);
case "ListBuilds" -> listBuilds(region);
case "ListBuildsForProject" -> listBuildsForProject(request, region);
case "StopBuild" -> stopBuild(request, region);
case "RetryBuild" -> retryBuild(request, region, account);
default -> throw new AwsException("InvalidAction", "Action " + action + " is not supported", 400);
};
}
private Response createProject(JsonNode req, String region, String account) throws Exception {
String name = req.path("name").asText(null);
String description = req.has("description") ? req.path("description").asText() : null;
ProjectSource source = req.has("source") ? mapper.treeToValue(req.get("source"), ProjectSource.class) : null;
List<ProjectSource> secondarySources = parseList(req, "secondarySources", ProjectSource.class);
String sourceVersion = req.has("sourceVersion") ? req.path("sourceVersion").asText() : null;
ProjectArtifacts artifacts = req.has("artifacts") ? mapper.treeToValue(req.get("artifacts"), ProjectArtifacts.class) : null;
List<ProjectArtifacts> secondaryArtifacts = parseList(req, "secondaryArtifacts", ProjectArtifacts.class);
ProjectEnvironment environment = req.has("environment") ? mapper.treeToValue(req.get("environment"), ProjectEnvironment.class) : null;
String serviceRole = req.has("serviceRole") ? req.path("serviceRole").asText() : null;
Integer timeout = req.has("timeoutInMinutes") ? req.path("timeoutInMinutes").asInt() : null;
Integer queuedTimeout = req.has("queuedTimeoutInMinutes") ? req.path("queuedTimeoutInMinutes").asInt() : null;
String encryptionKey = req.has("encryptionKey") ? req.path("encryptionKey").asText() : null;
List<Map<String, String>> tags = parseTags(req);
Map<String, Object> logsConfig = req.has("logsConfig") ? mapper.treeToValue(req.get("logsConfig"), Map.class) : null;View on GitHub (pinned to 62ff490619)
Solutions
- Check the supported action list in the handler switch (CodeBuildJsonHandler) and use only those operations against Floci
- If the operation exists in AWS but not in Floci, file/extend coverage in the handler rather than retrying
- For typos, compare your action string against the AWS CodeBuild API reference name
Defensive patterns
Strategy: validation
Validate before calling
// Java - whitelist CodeBuild actions before dispatching to Floci
Set<String> SUPPORTED = Set.of("CreateProject","UpdateProject","DeleteProject","BatchGetProjects",
"ListProjects","StartBuild","BatchGetBuilds","ListBuilds","ListBuildsForProject","StopBuild",
"RetryBuild","CreateReportGroup","UpdateReportGroup","DeleteReportGroup","BatchGetReportGroups",
"ListReportGroups","ImportSourceCredentials","ListSourceCredentials","DeleteSourceCredentials",
"ListCuratedEnvironmentImages");
if (!SUPPORTED.contains(action)) throw new UnsupportedOperationException(action + " not supported by Floci"); Prevention
- Check Floci's CodeBuild coverage before scripting against it
- Pin SDK versions whose calls you have verified against the emulator
- Treat InvalidAction as a permanent capability gap, not a transient error
When it happens
Trigger: Calling a CodeBuild operation Floci has not implemented (e.g. UpdateProject? no - implemented; more likely ListProjects variants, BatchDeleteBuilds, CreateWebhook, PutResourcePolicy); a typo in the action name; an SDK version newer than Floci's implemented action set invoking a recently added API.
Common situations: Using AWS CLI/SDK operations beyond Floci's CodeBuild coverage (webhooks, fleets, report batch APIs); SDK auto-generated calls for features like persistent storage policies; scripts ported from real AWS that rely on auxiliary CodeBuild APIs.
Related errors
- Override %s must not contain control characters.
- InvalidAction
- InvalidInputException
- Could not create build working directory " + containerSrcDi
- InvalidInputException
AI-assisted analysis of floci-io/floci@62ff490619 (2026-08-14).
Data as JSON: /api/errors/289311f266dbe5fe.
Report an issue: GitHub.