feat(prefect-aws): Add AWS CodeCommit git credential support #19836
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.
Summary
Adds support for authenticating Git operations with AWS CodeCommit using SigV4 signing. Introduces a new
AwsCodeCommitCredentialsblock that generates authenticated Git URLs for CodeCommit repositories.Changes
New
AwsCodeCommitCredentialsblock (src/integrations/prefect-aws/prefect_aws/credentials.py)format_git_credentials()method that returns a fully authenticated URLget_client()method for authenticated CodeCommit client accessTest coverage (
src/integrations/prefect-aws/tests/test_credentials.py)Module exports (
src/integrations/prefect-aws/prefect_aws/__init__.py)AwsCodeCommitCredentialsin the public APIUsage
The credentials block can be used in Prefect deployment configurations:
Technical Details
The implementation uses botocore's SigV4Auth to sign Git requests to CodeCommit. The signature is embedded in the Git URL format:
https://{username}:{signature}@git-codecommit.{region}.amazonaws.com/v1/repos/{repository}where the username contains the AWS access key (and optional session token), and the signature is a SigV4 signature generated for the Git operation.Resolves #19832
Checklist
<link to issue>"mint.json.