Skip to content

[filesystems] Fix S3 assumed role ARN not used for file I/O - #3779

Open
qzyu999 wants to merge 1 commit into
apache:mainfrom
qzyu999:fix-s3-assumed-role-arn
Open

[filesystems] Fix S3 assumed role ARN not used for file I/O#3779
qzyu999 wants to merge 1 commit into
apache:mainfrom
qzyu999:fix-s3-assumed-role-arn

Conversation

@qzyu999

@qzyu999 qzyu999 commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

When s3.assumed.role.arn is configured in server.yaml without static credentials, Fluss should use that role for all S3 file I/O operations. Previously, the code only logged "Using default AWS credential chain with AssumeRole" and returned without actually configuring the AssumedRoleCredentialProvider, causing all S3 operations (remote log, KV snapshots, lake offsets) to use ambient credentials instead.

Changes

  • Configure AssumedRoleCredentialProvider when only role ARN is set (no static keys)
  • Static credentials take precedence when both are configured
  • Added test for role ARN only configuration
  • Added test for static keys + role ARN precedence

Test Plan

  • All 21 tests in fluss-fs-s3 module pass
  • S3FileSystemPluginTest.testServerModeWithRoleArnOnly verifies AssumedRoleCredentialProvider is configured
  • S3FileSystemPluginTest.testServerModeWithStaticKeysAndRoleArn verifies precedence behavior

Closes #3761

When s3.assumed.role.arn is configured in server.yaml without static
credentials, configure AssumedRoleCredentialProvider so that the
assumed role is actually used for S3 operations (remote log, KV
snapshots, lake offsets).

Previously, the code only logged a message and returned without
setting the credential provider, causing S3A to use ambient
credentials from the default chain instead of the configured role.

Closes apache#3761
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[fs] s3.assumed.role.arn doesn't actually assume the role for S3 file I/O

1 participant