Skip to content

Allow to assume role when connecting to AWS catalogs (glue/dynamodb) #2747

Open

Description

@skrydal

Feature Request / Improvement

At this moment, role-arn parameters (either with client or s3 prefix) can be used to assume role before accessing S3 objects. I propose that this functionality is extended to catalog clients for AWS iceberg catalogs (glue/dynamodb). This will improve users experience, since other client-prefixed parameters are usually shared between s3 and glue/dynamodb.

Activity

  1. github-actions commented on May 16, 2026

    @github-actions

    This issue has been automatically marked as stale because it has been open for 180 days with no activity. It will be closed in next 14 days if no further activity occurs. To permanently prevent this issue from being considered stale, add the label 'not-stale', but commenting on the issue is preferred when possible.

  2. LDVSOFT commented on May 18, 2026

    @LDVSOFT

    plz not-stale

  3. lemon0333 commented on Aug 24, 2026

    @lemon0333

    I'd like to pick this up if no one is already on it.

    Proposed approach — extend the existing assume-role mechanism (currently honored only by the S3 FileIO via client.role-arn / client.role-session-name, see pyiceberg/io/pyarrow.py) to the boto3 sessions built by GlueCatalog and DynamoDbCatalog:

    • In each catalog's boto3.Session construction path (pyiceberg/catalog/glue.py, pyiceberg/catalog/dynamodb.py), when a role ARN is configured, perform an STS AssumeRole from the base session and use the returned temporary credentials for the Glue/DynamoDB client.
    • Resolve the role config with the same precedence already used for the other client.* properties: a service-prefixed override (glue.role-arn / dynamodb.role-arn, glue.role-session-name / dynamodb.role-session-name) falling back to the unified client.role-arn / client.role-session-name. This mirrors how glue.region → client.region etc. already work.
    • Default behavior (no role ARN set) stays exactly as-is.
    • Tests with moto (mock STS + Glue + DynamoDB) asserting the client is built from the assumed-role credentials.

    Since the thread doesn't have a maintainer response yet, could a maintainer confirm this direction — and in particular whether you'd like the service-prefixed properties (glue.role-arn / dynamodb.role-arn) in addition to the unified client.role-arn, or the unified ones only? Happy to adjust the naming to match your conventions.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions