fix: handle intrinsic functions in Lambda FunctionName for GetAtt resolution#8820
fix: handle intrinsic functions in Lambda FunctionName for GetAtt resolution#8820hoangsetup wants to merge 10 commits intoaws:developfrom
Conversation
|
Thank you @hoangsetup for your fix! However, there's dead code in the PR. I see you added the |
|
@vicheey You’re absolutely right — |
There was a problem hiding this comment.
Code Review Results
Reviewed: fdf769d..996b581
Files: 2
Comments: 0
✅ No issues found. The changes look good.
The PR correctly fixes a TypeError: unhashable type: 'dict' that occurred when _get_function_name() returned an unresolved intrinsic (a dict) and that dict was passed as a key to logical_id_translator.get(). The isinstance(resource_name, str) guard is the right fix, and the fallback to logical_id is consistent with the existing behavior when FunctionName is not defined. The test file covers the bug case, the happy path, the missing-FunctionName case, and a regression test for Fn::Sub.
Which issue(s) does this change fix?
Fixes #6868, #5916, #4597
Fixes Lambda function mounting issue where
Fn::JoincontainingFn::GetAttfor Lambda Integration URIs in API Gateway Method resources shows "Mounting None" instead of the actual function name.Affected Use Case:
Previously showed:
Mounting None❌Now shows:
Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]✅Why is this change necessary?
When developers use
Fn::JoinwithFn::GetAttto construct Lambda Integration URIs (a common CloudFormation pattern), SAM CLI failed to mount the Lambda function correctly, showing:This prevented developers from:
Fn::JoinandFn::Sub(which worked correctly)The bug was particularly confusing because
Fn::Subworked fine, leading developers to believe their template was wrong when it was actually a SAM CLI bug.How does it address the issue?
What side effects does this change have?
Positive effects:
Fn::JoinwithFn::GetAttnow works correctly for Lambda Integration URIsFunctionNamecontains intrinsic functionsFn::JoinandFn::SubapproachesNo negative effects:
Mandatory Checklist
PRs will only be reviewed after checklist is complete
make prpassesmake update-reproducible-reqsif dependencies were changedBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.