From 4b78ee707ee3fea3e2cda4a5b89985c84b01afa9 Mon Sep 17 00:00:00 2001 From: zhuxiaolong37 Date: Fri, 5 Sep 2025 16:15:56 +0800 Subject: [PATCH 1/2] Fix vector endpoint issues and supplement test cases --- alibabacloud_oss_v2/vectors/endpoints.py | 2 +- tests/unit/vectors/test_endpoints.py | 64 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 tests/unit/vectors/test_endpoints.py diff --git a/alibabacloud_oss_v2/vectors/endpoints.py b/alibabacloud_oss_v2/vectors/endpoints.py index 0e26436..71ffbd8 100644 --- a/alibabacloud_oss_v2/vectors/endpoints.py +++ b/alibabacloud_oss_v2/vectors/endpoints.py @@ -27,7 +27,7 @@ def build_url(self, op_input: OperationInput) -> str: if op_input.bucket is None: host = self._endpoint.netloc else: - host = f'{self._account_id}-{op_input.bucket}.{self._endpoint.netloc}' + host = f'{op_input.bucket}-{self._account_id}.{self._endpoint.netloc}' if op_input.key is not None: paths.append(quote(op_input.key)) diff --git a/tests/unit/vectors/test_endpoints.py b/tests/unit/vectors/test_endpoints.py new file mode 100644 index 0000000..580a37a --- /dev/null +++ b/tests/unit/vectors/test_endpoints.py @@ -0,0 +1,64 @@ +import unittest +from urllib.parse import urlparse +from alibabacloud_oss_v2.vectors.endpoints import VectorsEndpointProvider, from_region +from alibabacloud_oss_v2.types import OperationInput + +class TestVectorsEndpoints(unittest.TestCase): + + def test_from_region(self): + result = from_region("cn-hangzhou", "") + self.assertEqual("oss-cn-hangzhou.oss-vectors.aliyuncs.com", result) + + result = from_region("cn-hangzhou", "internal") + self.assertEqual("oss-cn-hangzhou-internal.oss-vectors.aliyuncs.com", result) + + def test_vectors_endpoint_provider_init(self): + endpoint = urlparse("https://oss-cn-hangzhou.oss-vectors.aliyuncs.com") + provider = VectorsEndpointProvider(endpoint, "123456") + + self.assertEqual(endpoint, provider._endpoint) + self.assertEqual("123456", provider._account_id) + + provider = VectorsEndpointProvider(endpoint, None) + self.assertEqual("", provider._account_id) + + def test_vectors_endpoint_provider_build_url(self): + endpoint = urlparse("https://oss-cn-hangzhou.oss-vectors.aliyuncs.com") + provider = VectorsEndpointProvider(endpoint, "123456") + + op_input = OperationInput( + op_name="TestOperation", + method="GET" + ) + url = provider.build_url(op_input) + self.assertEqual("https://oss-cn-hangzhou.oss-vectors.aliyuncs.com/", url) + + op_input = OperationInput( + op_name="TestOperation", + method="GET", + bucket="test-bucket" + ) + url = provider.build_url(op_input) + self.assertEqual("https://test-bucket-123456.oss-cn-hangzhou.oss-vectors.aliyuncs.com/", url) + + op_input = OperationInput( + op_name="TestOperation", + method="GET", + bucket="test-bucket", + key="test-key" + ) + url = provider.build_url(op_input) + self.assertEqual("https://test-bucket-123456.oss-cn-hangzhou.oss-vectors.aliyuncs.com/test-key", url) + + op_input = OperationInput( + op_name="TestOperation", + method="GET", + bucket="test-bucket", + key="test key+value" + ) + url = provider.build_url(op_input) + self.assertEqual("https://test-bucket-123456.oss-cn-hangzhou.oss-vectors.aliyuncs.com/test%20key%2Bvalue", url) + + +if __name__ == '__main__': + unittest.main() From 82bcc393c75768df9de03161654eefb5ddcdd88e Mon Sep 17 00:00:00 2001 From: zhuxiaolong37 Date: Mon, 8 Sep 2025 17:40:32 +0800 Subject: [PATCH 2/2] Change user ID to account ID --- alibabacloud_oss_v2/config.py | 6 ++--- alibabacloud_oss_v2/signer/vectors_v4.py | 10 ++++---- alibabacloud_oss_v2/vectors/client.py | 4 ++-- sample/vector/vector_delete_bucket.py | 4 ++-- sample/vector/vector_delete_bucket_logging.py | 4 ++-- sample/vector/vector_delete_bucket_policy.py | 4 ++-- sample/vector/vector_delete_bucket_tags.py | 4 ++-- sample/vector/vector_delete_vector_index.py | 4 ++-- sample/vector/vector_delete_vectors.py | 4 ++-- sample/vector/vector_get_bucket.py | 4 ++-- sample/vector/vector_get_bucket_logging.py | 4 ++-- sample/vector/vector_get_bucket_policy.py | 4 ++-- .../vector_get_bucket_resource_group.py | 4 ++-- sample/vector/vector_get_bucket_tags.py | 4 ++-- sample/vector/vector_get_vector_index.py | 4 ++-- sample/vector/vector_get_vectors.py | 4 ++-- sample/vector/vector_list_buckets.py | 4 ++-- sample/vector/vector_list_vector_index.py | 4 ++-- sample/vector/vector_list_vectors.py | 4 ++-- sample/vector/vector_put_bucket.py | 4 ++-- sample/vector/vector_put_bucket_logging.py | 4 ++-- sample/vector/vector_put_bucket_policy.py | 4 ++-- .../vector_put_bucket_resource_group.py | 4 ++-- sample/vector/vector_put_bucket_tags.py | 4 ++-- sample/vector/vector_put_vector_index.py | 4 ++-- sample/vector/vector_put_vectors.py | 4 ++-- sample/vector/vector_query_vectors.py | 4 ++-- tests/integration/__init__.py | 2 +- tests/unit/signer/test_v4.py | 24 +++++++++---------- 29 files changed, 71 insertions(+), 71 deletions(-) diff --git a/alibabacloud_oss_v2/config.py b/alibabacloud_oss_v2/config.py index 6a963fa..874690a 100644 --- a/alibabacloud_oss_v2/config.py +++ b/alibabacloud_oss_v2/config.py @@ -30,7 +30,7 @@ def __init__( user_agent: Optional[str] = None, cloud_box_id: Optional[str] = None, enable_auto_detect_cloud_box_id: Optional[bool] = None, - user_id: Optional[str] = None + account_id: Optional[str] = None ) -> None: """ Args: @@ -74,7 +74,7 @@ def __init__( user_agent: (str, optional): The optional user specific identifier appended to the User-Agent header. cloud_box_id: (str, optional): The cloud box id. enable_auto_detect_cloud_box_id: (bool, optional): The cloud box id is automatically extracted from endpoint. - user_id: (str, optional): The user id, must be required in vectors options. + account_id: (str, optional): The account id, must be required in vectors options. """ self.region = region self.endpoint = endpoint @@ -100,7 +100,7 @@ def __init__( self.user_agent = user_agent self.cloud_box_id = cloud_box_id self.enable_auto_detect_cloud_box_id = enable_auto_detect_cloud_box_id - self.user_id = user_id + self.account_id = account_id def load_default() -> Config: """Using the SDK's default configuration""" diff --git a/alibabacloud_oss_v2/signer/vectors_v4.py b/alibabacloud_oss_v2/signer/vectors_v4.py index 18b8b9c..cd8c2a7 100644 --- a/alibabacloud_oss_v2/signer/vectors_v4.py +++ b/alibabacloud_oss_v2/signer/vectors_v4.py @@ -15,8 +15,8 @@ class VectorsSignerV4(Signer): """Signer Vectors V4 """ - def __init__(self, user_id: str) -> None: - self._user_id = user_id + def __init__(self, account_id: str) -> None: + self._account_id = account_id def sign(self, signing_ctx: SigningContext) -> None: if signing_ctx is None: @@ -30,9 +30,9 @@ def sign(self, signing_ctx: SigningContext) -> None: raise exceptions.ParamNullOrEmptyError( field="SigningContext.request") - if self._user_id is None or self._user_id == '': + if self._account_id is None or self._account_id == '': raise exceptions.ParamNullOrEmptyError( - field="SignerVectorsV4.user_id") + field="SignerVectorsV4.account_id") if signing_ctx.auth_method_query: return self._auth_query(signing_ctx) @@ -238,7 +238,7 @@ def _calc_canonical_request(self, request = signing_ctx.request # canonical uri - uri = f'/acs:ossvector:{signing_ctx.region}:{self._user_id}:' + uri = f'/acs:ossvector:{signing_ctx.region}:{self._account_id}:' if signing_ctx.bucket is not None: uri = uri + signing_ctx.bucket + '/' if signing_ctx.key is not None: diff --git a/alibabacloud_oss_v2/vectors/client.py b/alibabacloud_oss_v2/vectors/client.py index fc18144..395e458 100644 --- a/alibabacloud_oss_v2/vectors/client.py +++ b/alibabacloud_oss_v2/vectors/client.py @@ -33,9 +33,9 @@ def __init__(self, config: Config, **kwargs) -> None: self._resolve_vectors_endpoint(_config) self._build_vectors_user_agent(_config) self._client = _SyncClientImpl(_config, **kwargs) - self._client._options.signer = VectorsSignerV4(user_id=config.user_id) + self._client._options.signer = VectorsSignerV4(account_id=config.account_id) self._client._options.endpoint_provider = endpoints.VectorsEndpointProvider( - account_id=config.user_id, + account_id=config.account_id, endpoint=self._client._options.endpoint ) diff --git a/sample/vector/vector_delete_bucket.py b/sample/vector/vector_delete_bucket.py index a32d722..721327a 100644 --- a/sample/vector/vector_delete_bucket.py +++ b/sample/vector/vector_delete_bucket.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_delete_bucket_logging.py b/sample/vector/vector_delete_bucket_logging.py index 6fc299e..230ad9c 100644 --- a/sample/vector/vector_delete_bucket_logging.py +++ b/sample/vector/vector_delete_bucket_logging.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_delete_bucket_policy.py b/sample/vector/vector_delete_bucket_policy.py index 03ab7fd..b1e3c18 100644 --- a/sample/vector/vector_delete_bucket_policy.py +++ b/sample/vector/vector_delete_bucket_policy.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_delete_bucket_tags.py b/sample/vector/vector_delete_bucket_tags.py index cd4b936..0bba50f 100644 --- a/sample/vector/vector_delete_bucket_tags.py +++ b/sample/vector/vector_delete_bucket_tags.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_delete_vector_index.py b/sample/vector/vector_delete_vector_index.py index 5fd785f..b153fc3 100644 --- a/sample/vector/vector_delete_vector_index.py +++ b/sample/vector/vector_delete_vector_index.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--index_name', help='The name of the vector index.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_delete_vectors.py b/sample/vector/vector_delete_vectors.py index 6a746fa..057ba1c 100644 --- a/sample/vector/vector_delete_vectors.py +++ b/sample/vector/vector_delete_vectors.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--index_name', help='The name of the vector index.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_get_bucket.py b/sample/vector/vector_get_bucket.py index 2a6215f..f6826e0 100644 --- a/sample/vector/vector_get_bucket.py +++ b/sample/vector/vector_get_bucket.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_get_bucket_logging.py b/sample/vector/vector_get_bucket_logging.py index 3a23eb1..249caed 100644 --- a/sample/vector/vector_get_bucket_logging.py +++ b/sample/vector/vector_get_bucket_logging.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_get_bucket_policy.py b/sample/vector/vector_get_bucket_policy.py index 1a76f88..526e367 100644 --- a/sample/vector/vector_get_bucket_policy.py +++ b/sample/vector/vector_get_bucket_policy.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_get_bucket_resource_group.py b/sample/vector/vector_get_bucket_resource_group.py index 33c8d9d..6cdcd92 100644 --- a/sample/vector/vector_get_bucket_resource_group.py +++ b/sample/vector/vector_get_bucket_resource_group.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_get_bucket_tags.py b/sample/vector/vector_get_bucket_tags.py index eb3b426..eda3b69 100644 --- a/sample/vector/vector_get_bucket_tags.py +++ b/sample/vector/vector_get_bucket_tags.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_get_vector_index.py b/sample/vector/vector_get_vector_index.py index cb4e244..aaf732f 100644 --- a/sample/vector/vector_get_vector_index.py +++ b/sample/vector/vector_get_vector_index.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--index_name', help='The name of the vector index.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_get_vectors.py b/sample/vector/vector_get_vectors.py index 151ec3f..5773122 100644 --- a/sample/vector/vector_get_vectors.py +++ b/sample/vector/vector_get_vectors.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--index_name', help='The name of the vector index.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_list_buckets.py b/sample/vector/vector_list_buckets.py index 883d708..2ca2bb9 100644 --- a/sample/vector/vector_list_buckets.py +++ b/sample/vector/vector_list_buckets.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_list_vector_index.py b/sample/vector/vector_list_vector_index.py index 83dac29..b15be62 100644 --- a/sample/vector/vector_list_vector_index.py +++ b/sample/vector/vector_list_vector_index.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) def main(): @@ -20,7 +20,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_list_vectors.py b/sample/vector/vector_list_vectors.py index e7c1a04..a3c8067 100644 --- a/sample/vector/vector_list_vectors.py +++ b/sample/vector/vector_list_vectors.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--iindex_name', help='The name of the vector index.', required=True) @@ -21,7 +21,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_put_bucket.py b/sample/vector/vector_put_bucket.py index 3b9412f..58f46fa 100644 --- a/sample/vector/vector_put_bucket.py +++ b/sample/vector/vector_put_bucket.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_put_bucket_logging.py b/sample/vector/vector_put_bucket_logging.py index 6d6b216..ae1cfdc 100644 --- a/sample/vector/vector_put_bucket_logging.py +++ b/sample/vector/vector_put_bucket_logging.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_put_bucket_policy.py b/sample/vector/vector_put_bucket_policy.py index 26fc72f..8f2f10b 100644 --- a/sample/vector/vector_put_bucket_policy.py +++ b/sample/vector/vector_put_bucket_policy.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -18,7 +18,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_put_bucket_resource_group.py b/sample/vector/vector_put_bucket_resource_group.py index f20ba4e..7268aa7 100644 --- a/sample/vector/vector_put_bucket_resource_group.py +++ b/sample/vector/vector_put_bucket_resource_group.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--resource_group_id', help='The ID of the resource group.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_put_bucket_tags.py b/sample/vector/vector_put_bucket_tags.py index 33b235c..dd96632 100644 --- a/sample/vector/vector_put_bucket_tags.py +++ b/sample/vector/vector_put_bucket_tags.py @@ -6,7 +6,7 @@ parser.add_argument('--region', help='The region in which the bucket is located.', required=True) parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_put_vector_index.py b/sample/vector/vector_put_vector_index.py index 1365c13..68a0b2a 100644 --- a/sample/vector/vector_put_vector_index.py +++ b/sample/vector/vector_put_vector_index.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--index_name', help='The name of the vector index.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_put_vectors.py b/sample/vector/vector_put_vectors.py index 985b4ae..312911e 100644 --- a/sample/vector/vector_put_vectors.py +++ b/sample/vector/vector_put_vectors.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--index_name', help='The name of the vector index.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/sample/vector/vector_query_vectors.py b/sample/vector/vector_query_vectors.py index 4473ba9..a09aa5d 100644 --- a/sample/vector/vector_query_vectors.py +++ b/sample/vector/vector_query_vectors.py @@ -7,7 +7,7 @@ parser.add_argument('--bucket', help='The name of the bucket.', required=True) parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS') parser.add_argument('--index_name', help='The name of the vector index.', required=True) -parser.add_argument('--uid', help='The user id.', required=True) +parser.add_argument('--account_id', help='The account id.', required=True) def main(): args = parser.parse_args() @@ -19,7 +19,7 @@ def main(): cfg = oss.config.load_default() cfg.credentials_provider = credentials_provider cfg.region = args.region - cfg.user_id = args.uid + cfg.account_id = args.account_id if args.endpoint is not None: cfg.endpoint = args.endpoint diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py index 0e97314..2306d03 100644 --- a/tests/integration/__init__.py +++ b/tests/integration/__init__.py @@ -102,7 +102,7 @@ def get_vectors_client() -> oss_vectors.Client: cfg.credentials_provider = oss.credentials.StaticCredentialsProvider(ACCESS_ID, ACCESS_KEY) cfg.region = REGION cfg.endpoint = ENDPOINT - cfg.user_id = USER_ID + cfg.account_id = USER_ID return oss_vectors.Client(cfg) def get_client_use_ststoken(region:str, endpoint:str) -> oss.Client: diff --git a/tests/unit/signer/test_v4.py b/tests/unit/signer/test_v4.py index 637eb21..632a337 100644 --- a/tests/unit/signer/test_v4.py +++ b/tests/unit/signer/test_v4.py @@ -634,8 +634,8 @@ def test_signer_vector_v4_build_bucket_arn(self) -> None: Since the URI construction is internal, we test it by examining the string_to_sign which contains the canonical request. """ - user_id = "123" - signer = VectorsSignerV4(user_id) + account_id = "123" + signer = VectorsSignerV4(account_id) # Test 1: Only region sign_ctx = SigningContext( @@ -645,7 +645,7 @@ def test_signer_vector_v4_build_bucket_arn(self) -> None: signing_time=datetime.datetime.fromtimestamp(1702743657, tz=datetime.timezone.utc) ) signer.sign(sign_ctx) - expected_uri_1 = f'/acs:ossvector:cn-hangzhou:{user_id}:' + expected_uri_1 = f'/acs:ossvector:cn-hangzhou:{account_id}:' self.assertIn(expected_uri_1, sign_ctx.string_to_sign) @@ -658,7 +658,7 @@ def test_signer_vector_v4_build_bucket_arn(self) -> None: signing_time=datetime.datetime.fromtimestamp(1702743657, tz=datetime.timezone.utc) ) signer.sign(sign_ctx) - expected_uri_2 = f'/acs:ossvector:cn-hangzhou:{user_id}:bucket/' + expected_uri_2 = f'/acs:ossvector:cn-hangzhou:{account_id}:bucket/' self.assertIn(expected_uri_2, sign_ctx.string_to_sign) # Test 3: Region, bucket, and simple key @@ -671,7 +671,7 @@ def test_signer_vector_v4_build_bucket_arn(self) -> None: signing_time=datetime.datetime.fromtimestamp(1702743657, tz=datetime.timezone.utc) ) signer.sign(sign_ctx) - expected_uri_3 = f'/acs:ossvector:cn-hangzhou:{user_id}:bucket/key' + expected_uri_3 = f'/acs:ossvector:cn-hangzhou:{account_id}:bucket/key' self.assertIn(expected_uri_3, sign_ctx.string_to_sign) # Test 4: Region, bucket, and complex key that needs escaping @@ -687,7 +687,7 @@ def test_signer_vector_v4_build_bucket_arn(self) -> None: ) signer.sign(sign_ctx) # The key should be URL-encoded in the final URI - expected_uri_4 = f'/acs:ossvector:cn-hangzhou:{user_id}:bucket/{escaped_key}' + expected_uri_4 = f'/acs:ossvector:cn-hangzhou:{account_id}:bucket/{escaped_key}' self.assertIn(expected_uri_4, sign_ctx.string_to_sign) def test_signer_vector_v4_build_bucket_arn(self) -> None: @@ -696,8 +696,8 @@ def test_signer_vector_v4_build_bucket_arn(self) -> None: _calc_canonical_request. Corresponds to TestSignerVectorV4BuildBucketArn in Go. """ - user_id = "123" - signer = VectorsSignerV4(user_id) + account_id = "123" + signer = VectorsSignerV4(account_id) # Create a minimal, valid SigningContext for _calc_canonical_request # It doesn't need credentials or a full request for this specific test @@ -718,7 +718,7 @@ def mock_common_additional_headers(*args, **kwargs): sign_ctx.__dict__.update(base_sign_ctx.__dict__) # Merge base context sign_ctx.region = 'cn-hangzhou' canonical_request_output = signer._calc_canonical_request(sign_ctx, set()) - expected_uri_1 = f'/acs:ossvector:cn-hangzhou:{user_id}:' + expected_uri_1 = f'/acs:ossvector:cn-hangzhou:{account_id}:' # The canonical request format is METHOD\nURI\nQUERY\nHEADERS\nADDITIONAL_HEADERS\nPAYLOAD # So the URI should be the second line. lines = canonical_request_output.split('\n') @@ -730,7 +730,7 @@ def mock_common_additional_headers(*args, **kwargs): sign_ctx.region = 'cn-hangzhou' sign_ctx.bucket = 'bucket' canonical_request_output = signer._calc_canonical_request(sign_ctx, set()) - expected_uri_2 = f'/acs:ossvector:cn-hangzhou:{user_id}:bucket/' + expected_uri_2 = f'/acs:ossvector:cn-hangzhou:{account_id}:bucket/' lines = canonical_request_output.split('\n') self.assertEqual(lines[1], quote(expected_uri_2), "URI mismatch for region-bucket case") @@ -741,7 +741,7 @@ def mock_common_additional_headers(*args, **kwargs): sign_ctx.bucket = 'bucket' sign_ctx.key = 'key' canonical_request_output = signer._calc_canonical_request(sign_ctx, set()) - expected_uri_3 = f'/acs:ossvector:cn-hangzhou:{user_id}:bucket/key' + expected_uri_3 = f'/acs:ossvector:cn-hangzhou:{account_id}:bucket/key' lines = canonical_request_output.split('\n') self.assertEqual(lines[1], quote(expected_uri_3), "URI mismatch for region-bucket-key case") @@ -755,7 +755,7 @@ def mock_common_additional_headers(*args, **kwargs): sign_ctx.key = escaped_key canonical_request_output = signer._calc_canonical_request(sign_ctx, set()) # The key should be URL-encoded in the final URI by the quote() function inside _calc_canonical_request - expected_uri_4 = f'/acs:ossvector:cn-hangzhou:{user_id}:bucket/{escaped_key}' + expected_uri_4 = f'/acs:ossvector:cn-hangzhou:{account_id}:bucket/{escaped_key}' lines = canonical_request_output.split('\n') self.assertEqual(lines[1], quote(expected_uri_4), "URI mismatch for region-bucket-complex-key case")