Metadata-Version: 2.1
Name: aliyun-secret-manager-client
Version: 0.1.5
Summary: Alibaba Cloud Secrets Manager Client implementation for Python
Author: Alibaba Cloud
Maintainer: Alibaba Cloud
License: Apache License 2.0
Keywords: aliyun,kms,secrets-manager
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Security
License-File: LICENSE
Requires-Dist: aliyun-python-sdk-core (>=2.13.30)
Requires-Dist: aliyun-python-sdk-kms (>=2.14.0)
Requires-Dist: apscheduler (>=3.5.2)
Requires-Dist: bytebuffer (>=0.1.0)
Requires-Dist: cryptography (>=3.2.1)
Requires-Dist: pyopenssl (>=16.2.0)
Requires-Dist: alibabacloud-dkms-gcs-python2 (==1.0.4) ; python_version < "3"
Requires-Dist: alibabacloud-dkms-transfer-python2 (==0.1.3) ; python_version < "3"
Requires-Dist: protobuf (<=3.17.0) ; python_version <= "3.6"
Requires-Dist: apscheduler (<=3.8.0) ; python_version == "2.7"
Requires-Dist: cryptography (<=3.3.2) ; python_version == "2.7"
Requires-Dist: futures ; python_version == "2.7"
Requires-Dist: pyopenssl (<=21.0.0) ; python_version == "2.7"
Requires-Dist: typing-extensions (<=3.10.0.2) ; python_version == "2.7"
Requires-Dist: alibabacloud-dkms-transfer-python (==0.1.2) ; python_version > "3"
Requires-Dist: alibabacloud-dkms-gcs (==1.0.2) ; python_version >= "3"
Requires-Dist: cryptography (<=38.0.3) ; python_version >= "3"
Requires-Dist: multidict (<=5.1.0) ; python_version >= "3"
Requires-Dist: typing-extensions (<=4.1.1) ; python_version >= "3"
Requires-Dist: protobuf (<=3.20.2) ; python_version >= "3.7"

Aliyun Secrets Manager Client for Python
========================================

The Aliyun Secrets Manager Client for Python enables Python developers
to easily work with Aliyun KMS Secrets.

Read this in other languages: 简体中文
<https://github.com/aliyun/aliyun-secretsmanager-client-python/blob/master/README.zh-cn.rst>

-  `Aliyun Secrets Manager Client
   Homepage <https://help.aliyun.com/document_detail/190269.html?spm=a2c4g.11186623.6.621.201623668WpoMj>`__
-  `Issues <https://github.com/aliyun/aliyun-secretsmanager-client-python/issues>`__
-  `Release <https://github.com/aliyun/aliyun-secretsmanager-client-python/releases>`__

License
-------

`Apache License
2.0 <https://www.apache.org/licenses/LICENSE-2.0.html>`__

Features
--------

-  Provide quick integration capability to gain secret information
-  Provide Alibaba secrets cache ( memory cache or encryption file cache
   )
-  Provide tolerated disaster by the secrets with the same secret name
   and secret data in different regions
-  Provide default backoff strategy and user-defined backoff strategy

Requirements
------------

Python 2.7，3.5，3.6，3.7，3.8，3.9

Install
-------

Install the official release version through PIP (taking Linux as an
example):

.. code:: bash

   $ pip install aliyun-secret-manager-client

You can also install the unzipped installer package directly:

.. code:: bash

   $ sudo python setup.py install

Sample Code
-----------

Ordinary User Sample Code
~~~~~~~~~~~~~~~~~~~~~~~~~

-  Build Secrets Manager Client by system environment variables or
   configuration file (secretsmanager.properties) (`system environment
   variables setting for details <README_environment.md>`__,\ `configure
   configuration details <README_config.md>`__)

.. code:: python

   from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder

   if __name__ == '__main__':
       secret_cache_client = SecretManagerCacheClientBuilder.new_client()
       secret_info = secret_cache_client.get_secret_info("#secretName#")
       print(secret_info.__dict__)

-  Build Secrets Manager Client by the given parameters(accessKey,
   accessSecret, regionId, etc)

.. code:: python

   import os

   from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
   from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder

   if __name__ == '__main__':
       secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(DefaultSecretManagerClientBuilder.standard() \
           .with_access_key(os.getenv("#accessKeyId#"), os.getenv("#accessKeySecret#")) \
           .with_region("#regionId#").build()) \
       .build();
       secret_info = secret_cache_client.get_secret_info("#secretName#")
       print(secret_info.__dict__)

Particular User Sample Code
~~~~~~~~~~~~~~~~~~~~~~~~~~~

-  Use custom parameters or customized implementation

.. code:: python

   import os

   from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
   from alibaba_cloud_secretsmanager_client.cache.file_cache_secret_store_strategy import FileCacheSecretStoreStrategy
   from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
   from alibaba_cloud_secretsmanager_client.service.default_refresh_secret_strategy import DefaultRefreshSecretStrategy
   from alibaba_cloud_secretsmanager_client.service.full_jitter_back_off_strategy import FullJitterBackoffStrategy

   if __name__ == '__main__':
       secret_cache_client = SecretManagerCacheClientBuilder \
       .new_cache_client_builder(DefaultSecretManagerClientBuilder.standard().with_access_key(os.getenv("#accessKeyId#"), os.getenv("#accessKeySecret#")) \
            .with_back_off_strategy(FullJitterBackoffStrategy(3, 2000, 10000)) \
            .with_region("#regionId#").build()) \
        .with_cache_secret_strategy(FileCacheSecretStoreStrategy("#cacheSecretPath#", True,"#salt#")) \
        .with_refresh_secret_strategy(DefaultRefreshSecretStrategy("#ttlName#")) \
        .with_cache_stage("#stage#") \
        .with_secret_ttl("#secretName#", 1 * 60 * 1000l) \
        .build()
       secret_info = secret_cache_client.get_secret_info("#secretName#")
       print(secret_info.__dict__)
