Skip to content

AWS: Add iceberg-aws-s3-bundle with S3-only AWS clients - #17531

Open
n-dlms wants to merge 3 commits into
apache:mainfrom
n-dlms:GH-7516-aws-s3-bundle
Open

AWS: Add iceberg-aws-s3-bundle with S3-only AWS clients#17531
n-dlms wants to merge 3 commits into
apache:mainfrom
n-dlms:GH-7516-aws-s3-bundle

Conversation

@n-dlms

@n-dlms n-dlms commented Aug 5, 2026

Copy link
Copy Markdown

Motivation

Issue #7516 asks that users who only need S3FileIO not be forced to ship the full set of AWS SDK clients (Glue, DynamoDB, KMS, etc.). The factory-level split already exists (S3FileIOAwsClientFactory + s3.client-factory-impl, #7590), but the artifact users actually deploy — iceberg-aws-bundle — still shades every client, which is the ~450MB "just dump the bundle jar" problem the issue calls out.

What this PR does

Adds a new shadow bundle module iceberg-aws-s3-bundle that contains only the S3-path AWS dependencies:

  • s3, auth, apache-client, url-connection-client
  • crt-core, http-auth-aws-crt (async/CRT path)
  • s3accessgrants, analyticsaccelerator (S3FileIO features)

and excludes the catalog/lock/KMS clients: glue, dynamodb, kms, lakeformation, sso.

The existing iceberg-aws-bundle is left unchanged for Glue catalog, DynamoDB lock, and KMS users.

Measured locally: iceberg-aws-s3-bundle shadow jar is 48MB vs 65MB for the full bundle (~26% smaller), while :iceberg-aws:test (S3FileIO, S3InputStream, access grants, etc.) passes unchanged.

Changes

  • aws-s3-bundle/ — new module (build.gradle mirroring aws-bundle with the slim dep set, plus LICENSE/NOTICE and the generated runtime-deps.txt baseline)
  • settings.gradle — register the module
  • .github/workflows/cve-scan.yml — scan the new distribution
  • .github/labeler.yml — AWS label covers the new module
  • docs/docs/aws.md — document the S3-only option for Spark with a REST-catalog example

Compatibility

Fully additive — no existing artifact or API changes. Users who need Glue/DynamoDB/KMS continue using iceberg-aws-bundle.

Closes #7516

AI Disclosure

Add a slim shadow bundle that ships only the S3-related AWS SDK
dependencies (s3, auth, http clients, crt, s3 access grants, analytics
accelerator), so S3FileIO users no longer need to depend on the full
iceberg-aws-bundle with its Glue, DynamoDB, KMS, LakeFormation and SSO
clients.

Measured on a local build, the S3-only bundle is 48MB vs 65MB for the
full bundle. The full iceberg-aws-bundle is left unchanged for Glue
catalog and DynamoDB lock users. Add the new distribution to the CVE
scan and the AWS labeler glob, and document the S3-only option in the
AWS docs.

Signed-off-by: Ntokozo Dlamini <ntokozo.dlamini.xyz@gmail.com>
Generated-by: Claude Code
n-dlms added 2 commits August 5, 2026 14:48
Regenerate the runtime dependency baseline after merging the awssdk
bom bump (apache#17488); CI resolves 2.49.3 while the initial baseline was
generated against 2.47.5.

Signed-off-by: Ntokozo Dlamini <ntokozo.dlamini.xyz@gmail.com>
Generated-by: Claude Code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Avoid loading all AWS client dependencies for AwsClientFactory

1 participant