diff --git a/src/runtime/pkg/data/data.go b/src/runtime/pkg/data/data.go index 22a6f0e95..3d68a5bc0 100644 --- a/src/runtime/pkg/data/data.go +++ b/src/runtime/pkg/data/data.go @@ -414,8 +414,17 @@ func MountURL(downloadType string, credentialInfo ConfigInfo, urlPath string, osmoChan <- fmt.Sprintf("Missing data credential for %s.", storageBackend.GetProfile()) return isEmpty } - os.Setenv("AWS_ACCESS_KEY_ID", dataCredential.AccessKeyId) - os.Setenv("AWS_SECRET_ACCESS_KEY", dataCredential.AccessKey) + // Only set static key env vars when keys are provided. + // When using DefaultDataCredential (ambient credentials via Pod Identity, + // IRSA, etc.), keys are empty — setting empty env vars would clobber the + // SDK's default credential chain. + if dataCredential.AccessKeyId != "" { + os.Setenv("AWS_ACCESS_KEY_ID", dataCredential.AccessKeyId) + os.Setenv("AWS_SECRET_ACCESS_KEY", dataCredential.AccessKey) + } + if dataCredential.Region != "" { + os.Setenv("AWS_REGION", dataCredential.Region) + } var commandArgs []string diff --git a/src/utils/connectors/postgres.py b/src/utils/connectors/postgres.py index d12d68d6f..56f7ff7ae 100644 --- a/src/utils/connectors/postgres.py +++ b/src/utils/connectors/postgres.py @@ -2557,7 +2557,7 @@ def construct_path(endpoint: str, bucket: str, path: str): class LogConfig(ExtraArgBaseModel): """ Config for storing information about data. """ - credential: credentials.StaticDataCredential | None = None + credential: credentials.DataCredential | None = None class WorkflowInfo(ExtraArgBaseModel): @@ -2574,7 +2574,7 @@ def validate_name(self, name: str): class DataConfig(ExtraArgBaseModel): """ Config for storing information about data. """ - credential: credentials.StaticDataCredential | None = None + credential: credentials.DataCredential | None = None base_url: str = '' # Timeout in mins for osmo-ctrl to retry connecting to the OSMO service until exiting the task diff --git a/src/utils/job/task.py b/src/utils/job/task.py index 2bbafe9c7..0469d8ac0 100644 --- a/src/utils/job/task.py +++ b/src/utils/job/task.py @@ -102,7 +102,7 @@ def create_login_dict(user: str, def create_config_dict( - data_info: dict[str, credentials.StaticDataCredential], + data_info: dict[str, credentials.DataCredential], ) -> dict: ''' Creates the config dict where the input should be a dict containing key values like: @@ -2339,7 +2339,7 @@ def convert_to_pod_spec( service_config: connectors.ServiceConfig | None = None, dataset_config: connectors.DatasetConfig | None = None, pool_info: connectors.Pool | None = None, - data_endpoints: Dict[str, credentials.StaticDataCredential] | None = None, + data_endpoints: Dict[str, credentials.DataCredential] | None = None, skip_refresh_token: bool = False, auth_token: str | None = None, ) -> Tuple[Dict, Dict[str, kb_objects.FileMount], Optional[Tuple[str, str]]]: