clear-skies-aws 2.0.13__tar.gz → 2.0.15__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.copier-answers.yml +1 -1
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.github/workflows/docs.yaml +2 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/CHANGELOG.md +19 -0
- clear_skies_aws-2.0.15/LATEST_CHANGELOG.md +5 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/PKG-INFO +1 -1
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/pyproject.toml +1 -1
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/cache_storage/parameter_store_cache.py +1 -1
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/parameter_store.py +21 -1
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/uv.lock +1 -1
- clear_skies_aws-2.0.13/LATEST_CHANGELOG.md +0 -9
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.editorconfig +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.github/workflows/create-version.yaml +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.github/workflows/run-tests.yml +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.github/workflows/tests-matrix.yaml +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.github/workflows/tests.yaml +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.gitignore +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.pre-commit-config.yaml +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.python-version +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/.vscode/settings.json +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/LICENSE +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/README.md +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/cliff.toml +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/ruff.toml +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/action_aws.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/assume_role.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/ses.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/sns.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/sqs.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/step_function.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/backend.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/dynamo_db_backend.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/dynamo_db_condition_parser.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/dynamo_db_parti_ql_backend.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/sqs_backend.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/configs/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/cli_web_socket_mock.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_alb.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_api_gateway.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_api_gateway_web_socket.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_invoke.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_sns.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_sqs_standard.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_step_function.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/iam/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/iam/rds_mysql.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/port_forwarding/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/port_forwarding/ssm.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/aws_additional_config_auto_import.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/inject/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/inject/boto3.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/inject/boto3_session.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/inject/parameter_store.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/endpoints/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/endpoints/secrets_manager_rotation.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/endpoints/simple_body_routing.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/cli_web_socket_mock.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_alb.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_api_gateway.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_api_gateway_web_socket.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_input_output.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_invoke.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_sns.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_sqs_standard.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_step_function.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/actions/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/actions/ses.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/actions/sns.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/actions/sqs.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/actions/step_function.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/models/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/models/web_socket_connection_model.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/cache_storage/__init__.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/secrets.py +0 -0
- {clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/secrets_manager.py +0 -0
|
@@ -5,12 +5,29 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.0.15] - 2026-02-03
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Paramater not found exception
|
|
12
|
+
|
|
13
|
+
## [2.0.14] - 2026-01-28
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Add retry for parameter store
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Bump version to v2.0.14 by @github-actions[bot]
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- Docs by updating to latest copier version
|
|
23
|
+
|
|
8
24
|
## [2.0.13] - 2026-01-28
|
|
9
25
|
|
|
10
26
|
### Added
|
|
11
27
|
- Add support for aws secrets
|
|
12
28
|
|
|
13
29
|
### Changed
|
|
30
|
+
- Bump version to v2.0.13 by @github-actions[bot]
|
|
14
31
|
- Update dependencies in [#13](https://github.com/clearskies-py/aws/pull/13)
|
|
15
32
|
- Update to clearskies >=2.0.39
|
|
16
33
|
|
|
@@ -176,6 +193,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
176
193
|
* @cmancone made their first contribution
|
|
177
194
|
* @ made their first contribution
|
|
178
195
|
* @github-actions[bot] made their first contribution
|
|
196
|
+
[2.0.15]: https://github.com/clearskies-py/aws/compare/v2.0.14..v2.0.15
|
|
197
|
+
[2.0.14]: https://github.com/clearskies-py/aws/compare/v2.0.13..v2.0.14
|
|
179
198
|
[2.0.13]: https://github.com/clearskies-py/aws/compare/v2.0.12..v2.0.13
|
|
180
199
|
[2.0.12]: https://github.com/clearskies-py/aws/compare/v2.0.11..v2.0.12
|
|
181
200
|
[2.0.11]: https://github.com/clearskies-py/aws/compare/v2.0.10..v2.0.11
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clear-skies-aws
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.15
|
|
4
4
|
Summary: clearskies bindings for working in AWS
|
|
5
5
|
Project-URL: Repository, https://github.com/clearskies-py/clearskies-aws
|
|
6
6
|
Project-URL: Issues, https://github.com/clearskies-py/clearskies-aws/issues
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
name = "clear-skies-aws"
|
|
4
4
|
description = "clearskies bindings for working in AWS"
|
|
5
5
|
license = "MIT"
|
|
6
|
-
version = "2.0.
|
|
6
|
+
version = "2.0.15"
|
|
7
7
|
readme = "./README.md"
|
|
8
8
|
authors = [{name = "tnijboer"}, {name = "Conor Mancone", email = "cmancone@gmail.com"}]
|
|
9
9
|
requires-python = '>=3.11,<4.0'
|
|
@@ -55,7 +55,7 @@ class ParameterStoreCache(SecretCache):
|
|
|
55
55
|
allow_cleanup = Boolean(default=False)
|
|
56
56
|
|
|
57
57
|
@parameters_to_properties
|
|
58
|
-
def __init__(self, prefix: str | None = None, allow_cleanup: bool = False):
|
|
58
|
+
def __init__(self, prefix: str | None = None, allow_cleanup: bool = False) -> None:
|
|
59
59
|
"""
|
|
60
60
|
Initialize the Parameter Store cache.
|
|
61
61
|
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/parameter_store.py
RENAMED
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import re
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
|
+
from botocore.config import Config
|
|
6
7
|
from botocore.exceptions import ClientError
|
|
7
8
|
from clearskies.exceptions.not_found import NotFound
|
|
8
9
|
from types_boto3_ssm import SSMClient
|
|
@@ -22,6 +23,9 @@ class ParameterStore(secrets.Secrets[SSMClient]):
|
|
|
22
23
|
AWS SSM parameter paths only allow: a-z, A-Z, 0-9, -, _, ., /, @, and :
|
|
23
24
|
Any disallowed characters in the path are replaced with hyphens.
|
|
24
25
|
|
|
26
|
+
The client is configured with adaptive retry mode which automatically handles
|
|
27
|
+
throttling exceptions with exponential backoff (up to 10 retries).
|
|
28
|
+
|
|
25
29
|
### Example Usage
|
|
26
30
|
|
|
27
31
|
```python
|
|
@@ -61,12 +65,25 @@ class ParameterStore(secrets.Secrets[SSMClient]):
|
|
|
61
65
|
Return the boto3 SSM client.
|
|
62
66
|
|
|
63
67
|
Creates a new client if one doesn't exist yet, using the AWS_REGION environment variable.
|
|
68
|
+
Configured with adaptive retry mode for better throttling handling.
|
|
64
69
|
"""
|
|
65
70
|
if hasattr(self, "ssm"):
|
|
66
71
|
return self.ssm
|
|
72
|
+
|
|
73
|
+
# Configure adaptive retry mode with increased max attempts for throttling
|
|
74
|
+
# Adaptive mode automatically adjusts retry behavior based on error responses
|
|
75
|
+
# and includes exponential backoff with jitter
|
|
76
|
+
retry_config = Config(
|
|
77
|
+
retries={
|
|
78
|
+
"max_attempts": 10,
|
|
79
|
+
"mode": "adaptive",
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
|
|
67
83
|
self.ssm = self.boto3.client(
|
|
68
84
|
"ssm",
|
|
69
85
|
region_name=self.environment.get("AWS_REGION"),
|
|
86
|
+
config=retry_config,
|
|
70
87
|
)
|
|
71
88
|
return self.ssm
|
|
72
89
|
|
|
@@ -84,13 +101,16 @@ class ParameterStore(secrets.Secrets[SSMClient]):
|
|
|
84
101
|
|
|
85
102
|
Returns the decrypted parameter value for the given path. If silent_if_not_found
|
|
86
103
|
is True, returns None when the parameter is not found instead of raising NotFound.
|
|
104
|
+
|
|
105
|
+
Throttling is handled automatically by boto3's adaptive retry mode configured
|
|
106
|
+
on the client (up to 10 retries with exponential backoff and jitter).
|
|
87
107
|
"""
|
|
88
108
|
sanitized_path = self._sanitize_path(path)
|
|
89
109
|
try:
|
|
90
110
|
result = self.boto3_client.get_parameter(Name=sanitized_path, WithDecryption=True)
|
|
91
111
|
except ClientError as e:
|
|
92
112
|
error = e.response.get("Error", {})
|
|
93
|
-
if error.get("Code") == "
|
|
113
|
+
if error.get("Code") == "ParameterNotFound":
|
|
94
114
|
if silent_if_not_found:
|
|
95
115
|
return None
|
|
96
116
|
raise NotFound(f"Could not find secret '{path}' in parameter store")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/actions/step_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/dynamo_db_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/backends/sqs_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/cli_web_socket_mock.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_api_gateway.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_invoke.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/contexts/lambda_sqs_standard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/iam/__init__.py
RENAMED
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/iam/rds_mysql.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/cursors/port_forwarding/ssm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/inject/boto3_session.py
RENAMED
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/di/inject/parameter_store.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_alb.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_invoke.py
RENAMED
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/input_outputs/lambda_sns.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/actions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/mocks/actions/step_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clear_skies_aws-2.0.13 → clear_skies_aws-2.0.15}/src/clearskies_aws/secrets/secrets_manager.py
RENAMED
|
File without changes
|