docs: document refresh_secret_now() in the README (#78)
Description
Adds a “Forcing a Refresh” section to the README under Usage, documenting
refresh_secret_now().
Co-authored-by: SaiTejaKundety tejakund@amazon.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
AWS Secrets Manager Python caching client
The AWS Secrets Manager Python caching client enables in-process caching of secrets for Python applications.
Getting Started
Required Prerequisites
To use this client you must have:
Python 3.8 or newer. Use of Python versions 3.7 or older are not supported.
An Amazon Web Services (AWS) account to access secrets stored in AWS Secrets Manager.
To create an AWS account, go to Sign In or Create an AWS Account and then choose I am a new user. Follow the instructions to create an AWS account.
To create a secret in AWS Secrets Manager, go to Creating Secrets and follow the instructions on that page.
This library makes use of botocore, the low-level core functionality of the boto3 SDK. For more information on boto3 and botocore, please review the AWS SDK for Python and Botocore documentation.
For Post-Quantum TLS support, use OpenSSL 3.5 or newer (system-level dependency).
Dependencies
This library requires the following standard dependencies:
For development and testing purposes, this library requires the following additional dependencies:
Please review the
requirements.txtanddev-requirements.txtfile for specific version requirements.Installation
Installing the latest release via pip:
Installing the latest development release:
Development
Getting Started
Assuming that you have Python and virtualenv installed, set up your environment and install the required dependencies like this instead of the
pip install aws_secretsmanager_cachingdefined above:NOTE: Please use Ruff for formatting.
Running Tests
You can run tests in all supported Python versions using tox. By default, it will run all of the unit and integration tests, but you can also specify your own arguments to past to
pytest.Documentation
You can locally-generate the Sphinx-based documentation via:
Which will subsequently be viewable at
file://${CLONE_DIR}/.tox/docs_out/index.htmlUsage
Using the client consists of the following steps:
SecretCacheConfig()object to theconfigparameter. You can also pass in an existingbotocore.client.BaseClientclient to the client parameter.Forcing a Refresh
The cache normally refreshes a secret only once
secret_refresh_intervalseconds have passed since the last refresh (1 hour by default). Within that windowget_secret_string()returns the cached value without calling Secrets Manager, so a secret rotated in the meantime will not be picked up until the interval elapses.refresh_secret_now()fetches the secret from Secrets Manager immediately instead of waiting for that interval, and stores the retrieved value in the cache so subsequent retrievals return it. It returnsTrueif the refresh succeeded, orFalseif it failed, in which case the previously cached value is kept.This call blocks for a few seconds before it retrieves the secret. If a recent refresh failed, the call also waits for the pending retry delay, up to a maximum of 10 seconds.
Cache Configuration
You can configure the cache config object with the following parameters:
max_cache_size- The maximum number of secrets to cache. The default value is1024.exception_retry_delay_base- The number of seconds to wait after an exception is encountered and before retrying the request. The default value is1.exception_retry_growth_factor- The growth factor to use for calculating the wait time between retries of failed requests. The default value is2.exception_retry_delay_max- The maximum amount of time in seconds to wait between failed requests. The default value is3600.default_version_stage- The default version stage to request. The default value is'AWSCURRENT'secret_refresh_interval- The number of seconds to wait between refreshing cached secret information. The default value is3600.0.secret_cache_hook- An implementation of the SecretCacheHook abstract class. The default value isNone.Decorators
The library also includes several decorator functions to wrap existing function calls with SecretString-based secrets:
@InjectedKeywordedSecretString- This decorator expects the secret id and cache as the first and second arguments, with subsequent arguments mapping a parameter key from the function that is being wrapped to a key in the secret. The secret being retrieved from the cache must contain a SecretString and that string must be JSON-based.@InjectSecretString- This decorator also expects the secret id and cache as the first and second arguments. However, this decorator simply returns the result of the cache lookup directly to the first argument of the wrapped function. The secret does not need to be JSON-based but it must contain a SecretString.Getting Help
Please use these community resources for getting help:
License
This library is licensed under the Apache 2.0 License.