Skip to content

fix(lambda): remove empty DestinationConfig from EventSourceMapping#220

Open
Mallikarjunadevops wants to merge 1 commit into
aws-controllers-k8s:mainfrom
Mallikarjunadevops:fix-2865-destination-config
Open

fix(lambda): remove empty DestinationConfig from EventSourceMapping#220
Mallikarjunadevops wants to merge 1 commit into
aws-controllers-k8s:mainfrom
Mallikarjunadevops:fix-2865-destination-config

Conversation

@Mallikarjunadevops

Copy link
Copy Markdown

Fixes aws-controllers-k8s/community#2865

When creating an EventSourceMapping without specifying a DestinationConfig, the AWS Lambda API returns a DestinationConfig containing empty OnFailure or OnSuccess structs. The controller's ReadOne logic previously copied this empty structure into the resource's Spec, causing the Kubernetes API Server to persist the invalid empty config as a default value.

During subsequent reconciliations, the controller would then attempt to update the resource by sending this empty config back to AWS, resulting in an InvalidParameterValueException.

This fix injects hooks into the Create, ReadOne, and Update paths to detect and nil-out empty DestinationConfig blocks, preventing them from being saved to Kubernetes or sent to AWS.

@ack-prow ack-prow Bot requested review from gustavodiaz7722 and sapphirew June 2, 2026 02:50
@ack-prow

ack-prow Bot commented Jun 2, 2026

Copy link
Copy Markdown

Hi @Mallikarjunadevops. Thanks for your PR.

I'm waiting for a aws-controllers-k8s member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@ack-prow ack-prow Bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Jun 2, 2026

@michaelhtm michaelhtm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Mallikarjunadevops
just had one comment below

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if this is necessary, especially if we clean all destinationConfigs from all outputs..

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch! You are completely right. Since we clean it from all outputs during ReadOne and Create, it's impossible for the empty struct to be persisted in the Spec, rendering the update hook redundant.

I have pushed a new commit removing the sdk_update_pre_build_request template and its injection from generator.yaml.

Mallikarjunadevops pushed a commit to Mallikarjunadevops/lambda-controller that referenced this pull request Jun 8, 2026
Addresses review comment in aws-controllers-k8s#220.
Since the DestinationConfig is sanitized on all outputs (ReadOne/Create),
the empty struct is never persisted to the desired spec, making the pre-update
sanitization redundant.
@purkhusid

Copy link
Copy Markdown

Would be awesome to see this merged!

@ack-prow

ack-prow Bot commented Jun 26, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: Mallikarjunadevops
Once this PR has been reviewed and has the lgtm label, please ask for approval from sapphirew. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@michaelhtm michaelhtm force-pushed the fix-2865-destination-config branch from 0df10b0 to b32a1f7 Compare June 26, 2026 01:22
michaelhtm pushed a commit to Mallikarjunadevops/lambda-controller that referenced this pull request Jun 26, 2026
Addresses review comment in aws-controllers-k8s#220.
Since the DestinationConfig is sanitized on all outputs (ReadOne/Create),
the empty struct is never persisted to the desired spec, making the pre-update
sanitization redundant.
@Mallikarjunadevops

Copy link
Copy Markdown
Author

@purkhusid Thanks for the support! Glad to hear this fix would be helpful for you.

@sapphirew Whenever you have a moment, would it be possible to get an /ok-to-test and a review on this? It looks like there's some community interest in getting this merged. The branch is currently up to date with main and has no merge conflicts. Thanks!

Fixes aws-controllers-k8s/community#2865

Co-authored-by: Mallikarjunadevops <73437975+Mallikarjunadevops@users.noreply.github.com>
@michaelhtm michaelhtm force-pushed the fix-2865-destination-config branch from b32a1f7 to 91207fb Compare June 26, 2026 19:04
@michaelhtm

Copy link
Copy Markdown
Member

/test all

@purkhusid

Copy link
Copy Markdown

The tests are green. Any chance this could get into the next release?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Issue with EventSourceMappings without destinationConfig

4 participants