Hello @ifra_inam
Since your IAM role, external ID, self-assumption and S3 permissions appear to be configured correctly, I would investigate the STS AssumeRole request itself before changing the S3 bucket policies.
A few additional checks could help narrow this down:
1. Check CloudTrail in the correct AWS region
Your Databricks workspace and metastore are in us-east-2. Check CloudTrail Event History in us-east-2 for AssumeRole events around the exact time you run the storage credential validation.
Look for:
If you find an event, the error details should help identify whether the issue is an invalid principal, external ID mismatch, or another STS authorization problem.
2. Verify the actual credential configuration
Use the Databricks SDK to retrieve the values configured in Unity Catalog and compare them against the AWS trust policy:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
name = "your_credential_name"
credential = w.storage_credentials.get(name)
role = credential.aws_iam_role
print("Role ARN:", role.role_arn)
print("UC IAM ARN:", role.unity_catalog_iam_arn)
print("External ID:", role.external_id)
results = w.storage_credentials.validate(
storage_credential_name=name
)
for result in results.results:
print(result.operation, result.result, result.message)Pay particular attention to the individual validation messages rather than only the overall validation status.
3. Verify the IAM trust policy
Confirm that the trust relationship contains:
The Unity Catalog IAM principal returned by Databricks.
The IAM role itself for self-assumption.
The exact external ID associated with the storage credential.
sts:AssumeRole as the allowed action.
Also ensure that the external ID condition and both principals are configured correctly in the trust policy.
4. Isolate a possible Free Edition limitation
If the trust policy and STS configuration are correct but no corresponding AssumeRole request reaches AWS, try creating the same storage credential using the same IAM role in a Databricks AWS trial workspace, if available.
If validation succeeds there but consistently fails in Free Edition, that would provide useful evidence of a Free Edition-specific limitation or issue. It would be worth reporting this to Databricks through the Free Edition feedback channel.
I wouldn't recommend changing S3 bucket permissions or making the bucket public at this stage, because the failure occurs before Databricks obtains the AWS role credentials.
Could you check CloudTrail specifically in us-east-2 and share the AssumeRole error details, if present? That would help identify whether this is an AWS trust-policy issue or something specific to the Free Edition environment.