基于Equinox的AWS机密管理器的数据通用代码

datacoco-secretsmanager的Python项目详细描述


PyPI VersionDocumentation StatusCode Quality GradeCoverageCode of Conduct

datacoco secretsmanager提供与Amazon Web的基本交互 服务(AWS)机密管理器服务。在

安装

datacoco secretsmanager需要Python 3.6+

python3 -m venv venv
source venv/bin/activate
python -m pip install datacoco_secretsmanager

快速启动

datacocosecretsmanager使用boto3库与AWS secretsmanager服务交互,需要AWS凭据配置。boto3对凭证的查找记录为here。在

根据您存储AWS凭据的方式,您可以按以下方式使用datacoco secretsmanager。

如果您在默认情况下存储了AWS凭据 ~/.aws/credentials,使用以下命令实例化SecretsManager类:

^{pr2}$

您还可以直接传入AWS身份验证密钥:

from datacoco_secretsmanager import SecretsManager

sm = SecretsManager(

    aws_access_key_id,

    aws_secret_access_key,

    aws_role_arn, # only required if you are using role based access

)

否则,如果您在amazonec2实例上运行,并且凭证没有以上述任何一种方式传递,那么您可以从实例元数据服务中boto3加载凭证。 然后datacocosecretsmanager将承担与启动EC2实例时指定的相同的IAM角色。在

一个秘密

在AWS机密管理器中存储机密:

AWS Secret name

<AWS-secret-name-for-connection>
| Key        | Value        |
| ---------- | -------------|
| <db-name>  | <db-name>    |
| <user>     | <user-name>  |
| <host>     | <host>       |
| <port>     | <port-value> |
| ...        | ...          |

要获取单个机密,请使用:

sm.get_secret(<aws_secret_resource_name>)

许多秘密

对于一个项目,您可能有多个机密或凭据 不止一个系统。在

您可以通过存储所有必需凭据的键/值映射来进行处理 在项目的AWS机密中,然后在 为密钥值中指示的每个凭据名称单独设置AWS secret。在

例如,存储一个AWS机密来映射或提供对所有 所需的system/db连接在我们的 模块:

AWS Secret name

<project-name>/<environment>

注意:如果使用环境,则名为^{tt2}的环境变量$ 存储和分配的环境名称应与AWS机密名称中指定的环境名称相同。在

另外,如果与多个使用AWS的团队一起工作 机密管理器,您可以使用 命名约定:

<team-name>/<project-name>/<environment>.

cfg_store的键/值存储为以下内容:

| Key                   | Value                               |
| --------------------- | ----------------------------------- |
| <db-connection1-name> | <AWS-secret-name-for-db-connection1>|
| <db-connection2-name> | <AWS-secret-name-for-db-connection2>|

对于cfg\u存储中的每个机密值,将完整凭据存储在 另一个AWS机密,即:

AWS Secret name

<AWS-secret-name-for-db-connection1>
| Key        | Value        |
| ---------- | -------------|
| <db-name1> | <db-name1>   |
| <user>     | <user-name>  |
| <host>     | <host>       |
| <port>     | <port-value> |
| ...        | ...          |

{str}1秘密

<AWS-secret-name-for-db-connection2>
| Key        | Value        |
| ---------- | -------------|
| <db-name2> | <db-name2>   |
| <user>     | <user-name>  |
| <host>     | <host>       |
| <port>     | <port-value> |
| ...        | ...          |

要获取整个project/cfg存储区的机密,请使用:

sm.get_config(

    project_name='your-project-name',

    team_name='your-team-name',     # include only if you want to save as part of your cfg_store name

)

发展

入门

建议使用以下步骤设置虚拟环境进行开发:

python3 -m venv <virtual env name>
source <virtual env name>/bin/activate
pip install -r requirements.txt

测试

pip install -r requirements-dev.txt

要运行测试套件,只需运行命令:toxpython -m unittest discover tests

贡献

欢迎向datacoco峎secretsmanager投稿!在

请参考指导方针来帮助您设置开发 环境 here。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
二进制字符串的java NumberFormatExceprion   java如何在Neo4j中查找/匹配/选择标识符名称   java哪一年的日期与原始年份相同?   java什么时候JAXB可以用于Json而不是XML?   java使用PayPal权限API进行PayPal支付   java Getting error在使用安卓 vision api扫描二维码时加载图像失败   java直接突出显示RichTextFX中的一个文本范围   java Resolve@RegisteredAuth2AuthorizedClient,其令牌在spring Security 5.2的spring server之外获得。十、   yyyymmddhhmmss的Java正则表达式   java我试图将google recaptcha与spring mvc集成,但GreCaptCharResponse总是返回false。这里有一些代码   java使用JsonPath将文本转换为json   java无法解析符号。Maven依赖项已就位,但代码为红色   java使用循环查找范围内具有不同数字的数字   java这个SwingWorker是否不重用ThreadPoolExecutor中的线程?