Fix Event Streams when functions have direct reference to custom roles #3457
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What did you implement:
Closes #3142
The AWS::Lambda::EventSourceMapping resource was being created with wrong the DependsOn attribute if custom roles were defined using a string to reference a logical role name elsewhere defined in the serverless.yml. The EventSourceMapping resource was previously only checking for roles defined via a direct ARN or the Fn::GetAtt syntax. It did not support referencing a role's name directly (i.e..
role: myDefaultRole
as documented here)The result of this is that the EventSourceMapping resource would set the DependsOn to the default IamRoleLambdaExecution role. If custom roles were used for all functions then the IamRoleLambdaExecution role would not exist in the compiled cloud formation and the deploy would fail with
Template format error: Unresolved resource dependencies [IamPolicyLambdaExecution] in the Resources block of the template
How did you implement it:
This builds upon #3083 as it enables the custom role to be referenced directly without using the Fn::GetAtt syntax.
How can we verify it:
Deploy any serverless.yml with an event stream using only functions with custom roles (e.g. the sample in #3142 )
Todos:
Is this ready for review?: YES
Is it a breaking change?: NO