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 7 commits intoaws:developfrom
Conversation
|
Thank you @hoangsetup for your fix! However, there's dead code in the PR. I see you added the |
| @@ -270,12 +270,19 @@ def arn_resolver(self, logical_id, service_name="lambda"): | |||
| partition_name = self.handle_pseudo_partition() | |||
| if service_name == "lambda": | |||
| resource_name = self._get_function_name(logical_id) | |||
There was a problem hiding this comment.
Why do we add intrinsic_resolver to __get_function_name()` function if we are not using it here?
|
@vicheey You’re absolutely right — |
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.