floci-io/floci · error · AwsException

InvalidActionDeclarationException

InvalidActionDeclarationException

Error message

Provider ${provider} is not available in Floci CodePipeline

What it means

Error "Provider ${provider} is not available in Floci CodePipeline" thrown in floci-io/floci.

Source

Thrown at src/main/java/io/github/hectorvent/floci/services/codepipeline/CodePipelineService.java:788

                                 JsonNode action, ActionExecution state) throws InterruptedException {
        String category = state.getCategory();
        String owner = state.getOwner();
        String provider = state.getProvider();
        if ("Approval".equals(category) && "Manual".equals(provider)) {
            waitForApproval(execution, state);
            return;
        }
        if (!"AWS".equals(owner)) {
            waitForCustomJob(pipeline, execution, action, state);
            return;
        }
        switch (provider) {
            case "S3" -> executeS3(execution, action, state);
            case "CodeBuild" -> executeCodeBuild(execution, action, state);
            case "CodeDeploy" -> executeCodeDeploy(execution, action, state);
            case "Lambda" -> executeLambda(execution, action, state);
            case "CodePipeline" -> executeNestedPipeline(execution, action, state);
            default -> throw new AwsException("InvalidActionDeclarationException",
                    "Provider " + provider + " is not available in Floci CodePipeline", 400);
        }
    }

    private void executeS3(CodePipelineExecution execution, JsonNode action, ActionExecution state) {
        JsonNode config = action.path("configuration");
        if ("Source".equals(state.getCategory())) {
            String bucket = config.path("S3Bucket").asText(config.path("BucketName").asText(null));
            String key = config.path("S3ObjectKey").asText(config.path("ObjectKey").asText(null));
            S3Object object = s3Service.getObject(bucket, key);
            for (JsonNode artifact : action.path("outputArtifacts")) {
                runtimeArtifacts.put(artifactKey(execution, artifact.path("name").asText()), object.getData());
            }
            Map<String, Object> revision = new LinkedHashMap<>();
            revision.put("name", state.getActionName());
            revision.put("revisionId", object.getVersionId() != null ? object.getVersionId() : object.getETag());
            revision.put("revisionChangeIdentifier", object.getETag());
            revision.put("revisionSummary", bucket + "/" + key);

View on GitHub (pinned to 62ff490619)

Solutions

  1. Use a provider supported by Floci CodePipeline, e.g. CodeBuild.

When it happens

Trigger: Thrown at src/main/java/io/github/hectorvent/floci/services/codepipeline/CodePipelineService.java:788 when the library encounters an invalid state.

Common situations: Occurs when a pipeline stage references an action provider not implemented by Floci. Use a supported provider such as CodeBuild or S3.


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