quarkusio/quarkus · error · RuntimeException
quarkus.funqy.export does not match a function: ${export}
Error message
quarkus.funqy.export does not match a function: ${export} What it means
Funqy Amazon Lambda must know which registered function to bind to the Lambda handler. When quarkus.funqy.export is set at runtime, the registry looks up a matching invoker; if the name matches no function, this RuntimeException is thrown.
Source
Thrown at extensions/funqy/funqy-amazon-lambda/runtime/src/main/java/io/quarkus/funqy/lambda/FunqyLambdaBindingRecorder.java:91
if (invoker.hasInput()) {
JavaType javaInputType = objectMapper.constructType(invoker.getInputType());
ObjectReader reader = objectMapper.readerFor(javaInputType);
invoker.getBindingContext().put(ObjectReader.class.getName(), reader);
}
if (invoker.hasOutput()) {
JavaType javaOutputType = objectMapper.constructType(invoker.getOutputType());
ObjectWriter writer = objectMapper.writerFor(javaOutputType);
invoker.getBindingContext().put(ObjectWriter.class.getName(), writer);
}
}
}
public void chooseInvoker() {
// this is done at Runtime so that we can change it with an environment variable.
if (runtimeConfig.getValue().export().isPresent()) {
invoker = FunctionRecorder.registry.matchInvoker(runtimeConfig.getValue().export().get());
if (invoker == null) {
throw new RuntimeException(
"quarkus.funqy.export does not match a function: " + runtimeConfig.getValue().export().get());
}
} else if (FunctionRecorder.registry.invokers().size() == 0) {
throw new RuntimeException("There are no functions to process lambda");
} else if (FunctionRecorder.registry.invokers().size() > 1) {
throw new RuntimeException("Too many functions. You need to set quarkus.funqy.export");
} else {
invoker = FunctionRecorder.registry.invokers().iterator().next();
}
ObjectReader objectReader = null;
if (invoker.hasInput()) {
objectReader = (ObjectReader) invoker.getBindingContext().get(ObjectReader.class.getName());
if (amazonBuildTimeConfig.advancedEventHandling().enabled()) {
// We create a copy, because the mapper will be reconfigured for the advanced event handling,
// and we do not want to adjust the ObjectMapper, which is available in arc context.View on GitHub (pinned to e1c734241f)
Solutions
- Set quarkus.funqy.export to the exact name of an existing @Funq function (usually the method name)
- List functions in the app (grep for @Funq) and align the export value
- Remove quarkus.funqy.export if there is only one function — it is auto-selected
- Rebuild/redeploy after renaming functions so the registry matches config
Example fix
// before quarkus.funqy.export=myFuntion // after quarkus.funqy.export=myFunction
Defensive patterns
Strategy: validation
Validate before calling
String export = System.getenv("QUARKUS_FUNQY_EXPORT");
if (export != null && !registeredFunctionNames.contains(export)) {
throw new IllegalStateException("quarkus.funqy.export '" + export + "' matches no function");
} Try / catch
try {
handler.handleRequest(input, output, context);
} catch (RuntimeException e) {
if (e.getMessage().startsWith("quarkus.funqy.export")) log.error("Check QUARKUS_FUNQY_EXPORT value");
throw e;
} Prevention
- Keep export value identical to the @Funq method name
- Update Lambda env vars whenever functions are renamed
- Add a build-time check that the export matches a registered function
When it happens
Trigger: quarkus.funqy.export is set to a value that does not equal any registered Funqy function name (function names come from method names or @Funq naming).
Common situations: Typo in the export value; renaming a function method without updating quarkus.funqy.export; export set via env var in Lambda console pointing at a removed function; case mismatch.
Related errors
- There are no functions to process lambda
- Too many functions. You need to set quarkus.funqy.export
- Could not deserialize the provided message.
- Could not serialize the provided output.
- DynamoDB records are too specific. It is not supported to ex
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/84be507b61c47c9e.
Report an issue: GitHub.