Instruction set architecture for the function. Either "x86_64" or "arm64".
OptionalcodeThe deployment package. Widened from FileArchive to Archive so a
caller can pass an AssetArchive of inline source instead of a built
bundle directory — the Outpost bridge in @cfxlabsinc/events is ~40 lines
with no dependencies, so an esbuild bundle would buy it nothing.
FileArchive remains assignable, so every existing caller is unaffected.
OptionalcontainerURI of the OCI image used as the main service container image.
OptionalenvironmentOptionalhandlerOptionallayersOptionallegacyPrior top-level Pulumi resource names, for an app moving onto LambdaApp
from hand-rolled resources.
A resource's Pulumi identity is its URN (type + name + parent), not its
physical AWS name. Adopting this component changes both the name and the
parent, so without an alias Pulumi plans a create — and AWS rejects it
because the physical name is still held by the resource Pulumi is about to
delete (ResourceAlreadyExistsException for the log group,
ResourceConflictException for the function). Aliases re-bind the existing
state entries to the new URNs so they update in place instead.
OptionalmemoryAmount of memory in MB your Lambda Function can use at runtime. Valid value between 128 MB to 10,240 MB (10 GB), in 1 MB increments. Defaults to 128.
Private subnets the function's ENIs attach to.
OptionalprovisionedOptionalpublishSNS topics this function may publish to. Pass CUSTOMER_EVENTS_TOPIC_ARN to
make it a public-bus publisher.
The grant lands on this app's own execution role, declared here in the app's
own stack — the same shape as its S3 and DynamoDB access, and the reason a
new publisher cannot be forgotten in a list somewhere else and discover it
at runtime as AccessDenied.
Omitted or empty grants no publish access.
OptionalruntimeOptionalslowHandler duration in ms above which a SINGLE invocation raises an alarm.
Opt-in, and deliberately so: this is a per-service response-time budget, not a fleet-wide health check. A function whose work is legitimately slow (a batch consumer, a report generator) has no such budget and should not carry the alarm — a threshold picked to fit everything fits nothing, gets muted, and a muted alarm is worse than none.
Set it where a partner is waiting on the response. cfx-greendot-processor-api
is the case this was built for: Green Dot's gateway holds the card
authorisation open while we answer, so a slow answer is a failed
authorisation long before it is a timeout.
Alarms on Maximum, not an average or a percentile — the ask is "did ANY
response exceed the budget", and an average over a low-traffic API hides
exactly the one request that did. See slowResponseAlert.
OptionaltimeoutAmount of time your Lambda Function has to run in seconds. Valid between 1 and 900. Defaults to DEFAULT_TIMEOUT_SECONDS.
OptionalusesWhether this function uses the shared idempotency table. Set it wherever
IDEMPOTENCY_TABLE_NAME appears in environment; omitting it grants no
DynamoDB access.
Networking and alerting inputs, as SCALARS.
This component used to take a commonInfraStackRef and call
requireOutput on it internally. That made the set of outputs it depended
on invisible at every call site, and coupled ~20 lambda stacks to one
stack's output names: when alarmTopicArn moved to cfx-ecs on
2026-08-03, every lambda deploy failed at once, in a file none of them
mention. Passing values in makes the dependency visible and lets each stack
source it from wherever that value now lives.
SNS topic for the init-failure alarm. Required, not optional: a lambda that silently ships without this alarm is the failure mode the alarm exists to prevent.