diff --git a/flytekit/configuration/__init__.py b/flytekit/configuration/__init__.py index 61818a0e36..f27bca2d3d 100644 --- a/flytekit/configuration/__init__.py +++ b/flytekit/configuration/__init__.py @@ -544,6 +544,7 @@ class S3Config(object): backoff: datetime.timedelta = datetime.timedelta(seconds=5) access_key_id: typing.Optional[str] = None secret_access_key: typing.Optional[str] = None + adressing_style: typing.Optional[str] = None @classmethod def auto(cls, config_file: typing.Union[str, ConfigFile] = None) -> S3Config: @@ -560,6 +561,7 @@ def auto(cls, config_file: typing.Union[str, ConfigFile] = None) -> S3Config: kwargs = set_if_exists(kwargs, "backoff", _internal.AWS.BACKOFF_SECONDS.read(config_file)) kwargs = set_if_exists(kwargs, "access_key_id", _internal.AWS.S3_ACCESS_KEY_ID.read(config_file)) kwargs = set_if_exists(kwargs, "secret_access_key", _internal.AWS.S3_SECRET_ACCESS_KEY.read(config_file)) + kwargs = set_if_exists(kwargs, "adressing_style", _internal.AWS.S3_ADDRESSING_STYLE.read(config_file)) return S3Config(**kwargs) diff --git a/flytekit/configuration/internal.py b/flytekit/configuration/internal.py index 32fe58d8f0..5899890bb5 100644 --- a/flytekit/configuration/internal.py +++ b/flytekit/configuration/internal.py @@ -55,6 +55,10 @@ class AWS(object): LegacyConfigEntry(SECTION, "backoff_seconds", datetime.timedelta), transform=lambda x: datetime.timedelta(seconds=int(x)), ) + S3_ADDRESSING_STYLE = ConfigEntry( + LegacyConfigEntry(SECTION, "addressing_style"), + YamlConfigEntry("storage.connection.addressing-style"), + ) class GCP(object): diff --git a/flytekit/core/data_persistence.py b/flytekit/core/data_persistence.py index 321851210e..329bfe3ff8 100644 --- a/flytekit/core/data_persistence.py +++ b/flytekit/core/data_persistence.py @@ -57,6 +57,9 @@ def s3_setup_args(s3_cfg: configuration.S3Config, anonymous: bool = False) -> Di if s3_cfg.endpoint is not None: kwargs["client_kwargs"] = {"endpoint_url": s3_cfg.endpoint} + if s3_cfg.adressing_style: + kwargs["config_kwargs"] = {"s3": {"addressing_style": "virtual"}} + if anonymous: kwargs[_ANON] = True