fix(bedrock-agentcore-alpha): add Lambda permission to fix IAM eventual consistency issue #36865
+763
−292
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.
Issue # (if applicable)
Closes #36826.
Reason for this change
The
gateway.addLambdaTarget()method fails with "Gateway execution role lacks permission to invoke Lambda function" due to IAM eventual consistency. The BedrockAgentCore service recently added a dry run Lambda invocation duringCreateGatewayTargetAPI that executes before IAM has propagated the identity-based policy.Solution Diagram
Description of changes
Added resource-based Lambda permission to bypass IAM eventual consistency issues:
target-configuration.ts: AddedCfnPermissioncreation inLambdaTargetConfiguration.bind()withbedrock-agentcore.amazonaws.comservice principaltarget.ts: Addednode.addDependency()on the permission inGatewayTargetconstructor to ensure CloudFormation creates the permission before the targetgateway.test.ts: Added 7 new unit tests to verify permission creation and dependency orderingThis fix follows the established pattern from
@aws-cdk/aws-bedrock-alpha(agent.ts) which uses the same approach for Bedrock agent Lambda permissions.Describe any new or updated permissions being added
AWS::Lambda::Permissionresource-based policy allowingbedrock-agentcore.amazonaws.comto invoke the Lambda function withsourceArnscoped to the specific gatewayDescription of how you validated changes
AWS::Lambda::Permissionresource is created for Lambda targetsbedrock-agentcore.amazonaws.com) and sourceArnGatewayTargethasDependsOnon the permissionaddLambdaTarget()method creates permission correctlyinteg.target.ts) validates end-to-end deploymentChecklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license