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

  1. Check the supported action list in the handler switch (CodeBuildJsonHandler) and use only those operations against Floci
  2. If the operation exists in AWS but not in Floci, file/extend coverage in the handler rather than retrying
  3. 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

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


AI-assisted analysis of floci-io/floci@62ff490619 (2026-08-14). Data as JSON: /api/errors/289311f266dbe5fe. Report an issue: GitHub.