Skip to content

fix: add lambda:InvokeFunction permission for CloudFront OAC#83

Merged
konokenj merged 2 commits intoaws-samples:mainfrom
konokenj:fix/cloudfront-oac-invoke-permission-v2
Mar 19, 2026
Merged

fix: add lambda:InvokeFunction permission for CloudFront OAC#83
konokenj merged 2 commits intoaws-samples:mainfrom
konokenj:fix/cloudfront-oac-invoke-permission-v2

Conversation

@konokenj
Copy link
Copy Markdown
Contributor

@konokenj konokenj commented Feb 6, 2026

Summary

Starting October 2025, new Lambda function URLs require both lambda:InvokeFunctionUrl and lambda:InvokeFunction permissions when using CloudFront Origin Access Control (OAC).

Problem

CDK's FunctionUrlOrigin.withOriginAccessControl only adds lambda:InvokeFunctionUrl permission. New deployments after October 2025 would fail with 403 errors because the lambda:InvokeFunction permission is missing.

Solution

Explicitly add lambda:InvokeFunction permission using CfnPermission.

Reference

Dependencies

Please merge #81 first. This PR is based on that branch and will have no conflicts once #81 is merged.

CDK's NatInstanceProviderV2 uses the `route` command in its default
user data, which requires the net-tools package. However, Amazon Linux
2023 (the default AMI for NatInstanceProviderV2) doesn't have net-tools
pre-installed, causing NAT instances to fail silently.

This change provides custom user data that uses `ip route` instead of
`route` to determine the default network interface, ensuring NAT
functionality works correctly on AL2023.

Reference: https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/aws-ec2/lib/nat.ts
Starting October 2025, new Lambda function URLs require both
lambda:InvokeFunctionUrl and lambda:InvokeFunction permissions when
using CloudFront Origin Access Control (OAC).

CDK's FunctionUrlOrigin.withOriginAccessControl only adds
lambda:InvokeFunctionUrl, so new deployments would fail with 403 errors.

Reference: https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html
@konokenj konokenj force-pushed the fix/cloudfront-oac-invoke-permission-v2 branch from 2e3b8a8 to eb5a5b1 Compare February 7, 2026 01:09
@konokenj
Copy link
Copy Markdown
Contributor Author

konokenj commented Feb 7, 2026

Root cause on aws-cdk aws/aws-cdk#35872

@konokenj
Copy link
Copy Markdown
Contributor Author

In order to begin v3 development, we will resolve the v2 issue by merging this correction without waiting for the CDK itself to be compatible.

@konokenj konokenj merged commit 3cc66bf into aws-samples:main Mar 19, 2026
2 checks passed
konokenj pushed a commit that referenced this pull request Mar 22, 2026
🤖 I have created a release *beep* *boop*
---


##
[2.1.0](v2.0.0...v2.1.0)
(2026-03-22)


### Features

* add /update-snapshot comment trigger to update_snapshot workflow
([764a4fa](764a4fa))
* add CloudWatch LogGroup with retention policy to Lambda functions
([#117](#117))
([53877bb](53877bb)),
closes
[#103](#103)
* **database:** enable Data API and connection logging
([#123](#123))
([e32dc7a](e32dc7a))
* increase webapp Lambda memory from 512MB to 1024MB
([#116](#116))
([03c5a00](03c5a00)),
closes
[#101](#101)


### Bug Fixes

* add lambda:InvokeFunction permission for CloudFront OAC
([#83](#83))
([3cc66bf](3cc66bf))
* **auth:** improve auth error handling and fix Link CORS issue
([#120](#120))
([84be605](84be605))
* disable Cognito self sign-up by default
([#115](#115))
([9396e6f](9396e6f)),
closes
[#106](#106)
* prevent CloudFront cache poisoning for Next.js RSC responses
([#119](#119))
([70cddda](70cddda))
* **prisma:** add retry for Aurora Serverless v2 connection errors
([#121](#121))
([7c05dfb](7c05dfb))
* support Amazon Linux 2023 for NAT instance
([#81](#81))
([0c41aa8](0c41aa8))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant