Configuration (Overview)
This page maps the most-used configuration entry points and where to manage them for TPF applications.
Primary References
- Configuration Reference for full build-time and runtime key catalog
- Performance for throughput/latency tuning
Lambda-Focused Configuration
For AWS Lambda-targeted applications:
- Build-time platform override:
- system property:
pipeline.platform=FUNCTION - environment variable:
PIPELINE_PLATFORM=FUNCTION - legacy aliases currently accepted for compatibility:
LAMBDAandSTANDARD
- system property:
- Build-time transport override:
- system property:
pipeline.transport=REST - environment variable:
PIPELINE_TRANSPORT=REST
- system property:
- REST naming strategy:
- system property:
pipeline.rest.naming.strategy=RESOURCEFUL|LEGACY - environment variable:
PIPELINE_REST_NAMING_STRATEGY=RESOURCEFUL|LEGACY
- system property:
Operational keys commonly used with Lambda:
quarkus.snapstart.enabledJAVA_TOOL_OPTIONS=-XX:+TieredCompilation -XX:TieredStopAtLevel=1
Function transport idempotency context attributes:
tpf.idempotency.policy=CONTEXT_STABLE|EXPLICIT(legacyRANDOMis accepted as alias)tpf.idempotency.key=<stable-caller-key>tpf.function.invocation.mode=LOCAL|REMOTE(defaultLOCAL)tpf.function.target.runtime=<runtime-name>(optional target metadata)tpf.function.target.module=<module-name>(optional target metadata)tpf.function.target.handler=<handler-name>(optional target metadata)tpf.function.target.url=<https://target-endpoint>(optional direct remote target metadata)
Examples of tpf.idempotency.key values:
- order ID (
order-12345) - transaction ID (
txn-8f2c1) - caller-provided idempotency token from an ingress API
Policy guidance:
CONTEXT_STABLE(default): framework-generated deterministic transport keys from stable context/envelope identifiers.EXPLICIT: use when you can provide a stable business-side key that should remain constant across retries.tpf.idempotency.keyis expected in this mode; if missing, adapters log a warning and fall back toCONTEXT_STABLE.RANDOM: legacy compatibility alias mapped toCONTEXT_STABLE.
Notes:
- Supplying
tpf.idempotency.keywhile policy isCONTEXT_STABLE/RANDOMis ignored by key derivation. tpf.function.invocation.mode=LOCALis the default for in-process execution.- Generated FUNCTION handlers wire both local and remote invoke adapters by default.
tpf.function.invocation.mode=REMOTEactivates remote invoke adapter routing only when both target metadata (tpf.function.target.*) and a configured remote invoke adapter path are present.tpf.function.target.runtime,tpf.function.target.module, andtpf.function.target.handlerare target routing hints forREMOTEmode. Typical values are your own runtime/module/handler identifiers, for example:pipeline,index-document-svc,ProcessIndexDocumentFunctionHandler.- To satisfy the "remote invoke adapter path" prerequisite, provide target resolution metadata that a remote adapter can resolve:
- set
tpf.function.target.url(context attribute) directly, or - set
tpf.function.target.handler/tpf.function.target.moduleand configure matching runtime URL settings (for example,quarkus.rest-client.<client>.urlorpipeline.module.<module>.host+pipeline.module.<module>.portforHttpRemoteFunctionInvokeAdapter).
- set
These are transport-context attributes (ephemeral per invocation metadata propagated via FunctionTransportContext), not global runtime properties in application.properties. They are usually set by handler/adapter code when creating FunctionTransportContext, for example:
// LOCAL (default generated behavior)
Map<String, String> localAttrs = Map.of(
"tpf.idempotency.policy", "CONTEXT_STABLE",
"tpf.function.invocation.mode", "LOCAL");
FunctionTransportContext localCtx = new FunctionTransportContext(requestId, functionName, "invoke-step", localAttrs);
// REMOTE (adapter-routed invocation)
Map<String, String> attrs = Map.of(
"tpf.idempotency.policy", "EXPLICIT",
"tpf.idempotency.key", "order-12345",
"tpf.function.invocation.mode", "REMOTE",
"tpf.function.target.runtime", "pipeline",
"tpf.function.target.module", "index-document-svc",
"tpf.function.target.handler", "ProcessIndexDocumentFunctionHandler");
FunctionTransportContext remoteCtx = new FunctionTransportContext(requestId, functionName, "invoke-step", attrs);
// REMOTE (direct URL target via tpf.function.target.url)
Map<String, String> directUrlAttrs = Map.of(
"tpf.function.invocation.mode", "REMOTE",
"tpf.function.target.url", "https://target-endpoint");
FunctionTransportContext remoteUrlCtx = new FunctionTransportContext(requestId, functionName, "invoke-step", directUrlAttrs);Here, "contract metadata" means stable, transport-level routing semantics carried with each invocation. "Remote invoke adapter path" means the runtime adapter implementation that reads these attributes and performs remote dispatch (for example, InvocationModeRoutingFunctionInvokeAdapter delegating to HttpRemoteFunctionInvokeAdapter).
TPF transport deduplication is best-effort; authoritative deduplication remains in business/data stores.
Where to Read Next
- Lambda development model and gateway choices: AWS Lambda Platform (Development)
- Lambda runtime operations and SnapStart: AWS Lambda SnapStart (Operate)