[DOCKER] Utiliser le magasin de paramètres en Python

introduction

Je me suis souvenu que je devais utiliser à nouveau le Parameter Store (AWS Systems Manager) que j'avais utilisé au travail.

Cette fois également, Poetry + Docker est utilisé comme environnement de développement. La source est répertoriée sur Github.

Définir le magasin de paramètres

Créé pour commencer par / aaa スクリーンショット 2020-10-19 16.58.17.png

Fichier

Les fichiers sont séparés en tant que principal et bibliothèque.

main.py



from src.ssm_manager import SsmManager

print("start")

ssm_manager = SsmManager(region_name="ap-northeast-1")
ssm_manager.load_parameter(base_ssm_path="/aaa")
print(ssm_manager.parameters)

ssm_manager.py


from typing import List, Dict

import boto3


class SsmManager:
    def __init__(self, region_name: str):
        self.__ssm = boto3.client('ssm', region_name=region_name)
        self.__parameters = []
        self.__base_ssm_path = None

    @property
    def parameters(self) -> List[Dict[str, any]]:
        return [{
            'name': item['Name'].replace(f'{self.__base_ssm_path}/', ''),
            'value': item['Value']
        } for item in self.__parameters]

    def load_parameter(self, base_ssm_path: str) -> None:
        self.__base_ssm_path = base_ssm_path
        result = []
        next_token = None
        while True:
            dict_parameter = {
                'Path': base_ssm_path,
                'Recursive': True,
                'WithDecryption': True,
            }
            if next_token is not None:
                dict_parameter['NextToken'] = next_token
            response = self.__ssm.get_parameters_by_path(**dict_parameter)
            parameters = response['Parameters']
            result.extend(parameters)
            if 'NextToken' not in response:
                break
            next_token = response['NextToken']
        self.__parameters = result

À la fin

Vous pouvez maintenant enregistrer le mot de passe RDS, etc. que vous avez mis dans les variables d'environnement, etc.

Recommended Posts

Utiliser le magasin de paramètres en Python
Utilisez config.ini avec Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
Utiliser le profileur en Python
Voyons comment utiliser def en python
Utiliser l'expression let en Python
Utiliser le protocole de mesure avec Python
Utiliser la fonction de rappel en Python
Utiliser le cache HTTP en Python
Utilisez l'ODM de MongoDB avec Python
Utiliser un dict clé de liste en Python
Utiliser Random Forest avec Python
Utilisez Spyder de Python IDE
Transférer les valeurs des paramètres en Python
Utilisez le tissu tel quel en python (fabric3)
Optimisation des paramètres de systole FX en Python
Implémentation de l'estimation des paramètres HMM en python
Comment utiliser SQLite en Python
Utiliser rospy avec virtualenv dans Python3
Comment utiliser Mysql avec python
Utiliser Python mis en pyenv avec NeoVim
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Utiliser OpenCV avec Python 3 dans Window
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
[Introduction à Python] Comment utiliser la classe en Python?
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Utilisez facilement vos propres fonctions en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Un moyen simple d'utiliser Wikipedia avec Python
Plink en Python
Constante en Python
N'utilisez pas \ d dans les expressions régulières Python 3!
FizzBuzz en Python
Comment utiliser __slots__ dans la classe Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7