diff --git a/aws_lambda_powertools/utilities/parameters/__init__.py b/aws_lambda_powertools/utilities/parameters/__init__.py index 2a8ed1f7c83..3e64be44cbd 100644 --- a/aws_lambda_powertools/utilities/parameters/__init__.py +++ b/aws_lambda_powertools/utilities/parameters/__init__.py @@ -6,7 +6,7 @@ from .appconfig_extension import AppConfigExtensionProvider from .base import BaseProvider, clear_caches from .dynamodb import DynamoDBProvider -from .exceptions import GetParameterError, TransformParameterError +from .exceptions import GetParameterError, GetSecretError, TransformParameterError from .secrets import SecretsProvider, get_secret, get_secrets_by_name, set_secret from .ssm import SSMProvider, get_parameter, get_parameters, get_parameters_by_name, set_parameter @@ -15,6 +15,7 @@ "AppConfigProvider", "BaseProvider", "GetParameterError", + "GetSecretError", "DynamoDBProvider", "SecretsProvider", "SSMProvider", diff --git a/aws_lambda_powertools/utilities/parameters/exceptions.py b/aws_lambda_powertools/utilities/parameters/exceptions.py index 05945c837ed..5a0c98e8b0a 100644 --- a/aws_lambda_powertools/utilities/parameters/exceptions.py +++ b/aws_lambda_powertools/utilities/parameters/exceptions.py @@ -7,7 +7,7 @@ class GetParameterError(Exception): """When a provider raises an exception on parameter retrieval""" -class GetSecretError(Exception): +class GetSecretError(GetParameterError): """When a provider raises an exception on secret retrieval""" diff --git a/tests/functional/parameters/_boto3/test_utilities_parameters.py b/tests/functional/parameters/_boto3/test_utilities_parameters.py index 8442e4c9113..2530a35d352 100644 --- a/tests/functional/parameters/_boto3/test_utilities_parameters.py +++ b/tests/functional/parameters/_boto3/test_utilities_parameters.py @@ -3716,6 +3716,20 @@ def test_secrets_provider_get_multiple_empty_names(config): provider.get_multiple([]) +def test_secrets_provider_get_multiple_error_is_get_parameter_error(config): + """ + Test GetSecretError can be caught as GetParameterError, as the docstrings promise + """ + # GIVEN a SecretsProvider instance + provider = parameters.SecretsProvider(boto_config=config) + + # WHEN get_multiple fails + # THEN the error is a GetParameterError and is exported from the package + with pytest.raises(parameters.GetParameterError): + provider.get_multiple([]) + assert parameters.GetSecretError is GetSecretError + + def test_secrets_provider_non_existing_key(config): """ Test SecretsProvider.get_multiple() with additional filters