Commit cb28b11
authored
feat(lambda): add AWS Lambda integration with 50 operations (#7216)
* feat(lambda): add AWS Lambda integration with 50 operations
Adds an AWS Lambda block covering every major resource family: invocation,
function CRUD, versions and aliases, resource-based permissions, event source
mappings, reserved and provisioned concurrency, function URLs, asynchronous
invocation configs, layers, tags, account settings, recursion detection, and
runtime management.
Tools run in-process through the shared internal tool-operation boundary using
@aws-sdk/client-lambda. Request and response shapes are contract-bound, with
shared response projections for the FunctionConfiguration, alias, event source
mapping, function URL, provisioned concurrency, and layer types.
Deployment packages are sourced from Amazon S3 or a container image URI; inline
.zip upload is not supported.
* chore(lambda): regenerate docs manifest for the new integration page
* fix(lambda): let update operations clear collection-valued settings
An empty list field coerced to undefined, so the AWS update command omitted
the field and the previous value survived — there was no way to remove a
function's layers, detach it from a VPC, or drop event source filters,
response types, and source access configurations.
A blank field still means "leave unchanged", since treating it as "clear"
would wipe the setting on every update that left it empty. Clearing is now
an explicit empty-array literal, documented in each field's description and
placeholder.
Also stops toSourceAccessConfigurations from folding an empty list back into
an omitted field.
* fix(lambda): stop the function timeout hijacking the tool request deadline
The `timeout` param name is reserved: the shared tool executor reads
`params.timeout` as its own operation deadline in milliseconds. A Lambda
function timeout of 30 seconds therefore aborted the call after 30ms, so
Create Function and Update Function Configuration failed whenever a timeout
was set. Renamed to `functionTimeout`.
Also tightens the boundary against documented AWS constraints and drops
avoidable provider round-trips:
- optional params supplied as null or an empty string are omitted rather than
forwarded, so an empty qualifier no longer reaches AWS as `Qualifier: ''`
- documented limits on functionName, qualifier, clientContext, statementId,
action, and alias routing weights
- source access configuration types are a closed enum, excluding VIRTUAL_HOST
on update where AWS rejects it
- cross-field checks: exactly one code source matched to packageType, runtime
and handler required for a .zip package, an event source or Kafka bootstrap
servers required, AT_TIMESTAMP paired with its timestamp, and masterRegion
only alongside functionVersion ALL
- architectures takes exactly one value, so it is no longer clearable
- the block declares AuthMode.ApiKey, correcting a catalog entry that
advertised the integration as needing no authentication
Removes the unreachable non-ok branch from every transformResponse: the shared
executor throws on any non-ok response before transformResponse runs.
Raises the internal tool-operation registry test budget, whose cost scales with
the number of registered tools.
* fix(lambda): never send a half-configured VPC attachment
Clearing only one of the two VPC lists produced `VpcConfig: { SubnetIds: [] }`
with no security groups, because an empty array is truthy and the wrapper
included each list independently. That is not a detach — it is an invalid
partial attachment.
A Lambda VPC attachment is a unit, so the contract now requires the two lists
to be supplied together on Create Function and Update Function Configuration,
naming the missing side. The wrapper defaults the other list to empty as well,
so it cannot emit a one-sided config even if called directly.1 parent a96ea5c commit cb28b11
130 files changed
Lines changed: 17376 additions & 11 deletions
File tree
- apps
- docs
- components
- ui
- content/docs/en/integrations
- sim
- blocks
- blocks
- components
- lib
- api/contracts/tools/aws
- copilot/generated
- integrations
- internal
- lambda
- tool-operations
- tools
- generated
- lambda
- packages/deployment-config/src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6843 | 6843 | | |
6844 | 6844 | | |
6845 | 6845 | | |
| 6846 | + | |
| 6847 | + | |
| 6848 | + | |
| 6849 | + | |
| 6850 | + | |
| 6851 | + | |
| 6852 | + | |
| 6853 | + | |
| 6854 | + | |
| 6855 | + | |
| 6856 | + | |
| 6857 | + | |
| 6858 | + | |
| 6859 | + | |
| 6860 | + | |
| 6861 | + | |
| 6862 | + | |
| 6863 | + | |
| 6864 | + | |
| 6865 | + | |
| 6866 | + | |
| 6867 | + | |
| 6868 | + | |
| 6869 | + | |
| 6870 | + | |
| 6871 | + | |
6846 | 6872 | | |
6847 | 6873 | | |
6848 | 6874 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
| 135 | + | |
135 | 136 | | |
136 | 137 | | |
137 | 138 | | |
| |||
423 | 424 | | |
424 | 425 | | |
425 | 426 | | |
| 427 | + | |
426 | 428 | | |
427 | 429 | | |
428 | 430 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
138 | 138 | | |
139 | 139 | | |
140 | 140 | | |
| 141 | + | |
141 | 142 | | |
142 | 143 | | |
143 | 144 | | |
| |||
0 commit comments