loader#
该模块为使用 acore_server_config
库的外部项目提供了一套能读取服务器 config 的接口.
相比之下 acore_server_config.config.init
模块是为 acore_server_config
库
内部用来从本地文件系统读取配置数据的, 外部项目不应该使用它.
该模块有两个 Public API:
Ec2ConfigLoader
: 用于在 EC2 上运行脚本, 用 “自省” 的方式获得自己的配置数据.ConfigLoader
: 用于在任意其他环境显式的加载配置数据.
- acore_server_config.config.loader.get_this_server_id(bsm: BotoSesManager) str [source]#
在 EC2 上通过 “自省”, 获得这个服务器的 server_id. 它的 naming convention 是
${env_name}-${server_name}
.
- acore_server_config.config.loader.parse_server_id(server_id: str) Tuple[str, str] [source]#
解析 server_id, 返回 (env_name, server_name) 的 tuple.
- acore_server_config.config.loader.get_config(bsm: BotoSesManager = None, parameter_name_prefix: Optional[str] = None, env_name: Optional[str] = None, s3folder_config: Optional[str] = None) Config [source]#
获取这个
Config
对象的数据. 详细的数据结构请参考acore_server_config.config.main.Config
.- Parameters:
bsm – BotoSesManager 实例.
parameter_name_prefix – the parameter name prefix, the full name will be ${parameter_name_prefix}-${env_name}.
env_name – the environment name of the env specific config you want to load from, stx, tst, prd, etc. If None, then load the master config.
s3folder_config – S3 配置数据的根目录, 默认为 s3://aws_account_id}-{aws_region}-artifacts/projects/acore_server_config/config/
- class acore_server_config.config.loader.Ec2ConfigLoader[source]#
用于在 EC2 上运行脚本, 用 “自省” 的方式获得自己的配置数据. 开始时请使用
Ec2ConfigLoader.load()
方法获得当前 EC2 的配置数据.用法:
>>> server = Ec2ConfigLoader.load(...) >>> server Server(id='sbx-blue', db_admin_password='sbx*dummy4test', db_username='myuser', db_password='sbx*dummy4test')
- classmethod load(parameter_name_prefix: Optional[str] = None, s3folder_config: Optional[str] = None, server_id: Optional[str] = None, bsm: BotoSesManager = None) Server [source]#
获得当前 EC2 的配置数据, 返回一个
Server
对象.- Parameters:
parameter_name_prefix – the parameter name prefix, the full name will be ${parameter_name_prefix}-${env_name}.
s3folder_config – S3 配置数据的根目录, 默认为 s3://aws_account_id}-{aws_region}-artifacts/projects/acore_server_config/config/
server_id – 强制指定 server_id, 跳过 “自省” 阶段. 常用于测试. 这个 server_id 的格式为: ${env_name}-${server_name}, 例如: sbx-blue
bsm –
boto_session_manager.BotoSesManager
object, if not provided, then use the current runtime default AWS CLI profile.
- class acore_server_config.config.loader.ConfigLoader[source]#
用于在任意其他环境显式的加载配置数据. 开始时请使用
ConfigLoader.new()
方法创建 一个新的 Loader 对象, 将配置数据加载到内存中. 然后再对特定的 Server 的配置数据进行访问.用法:
>>> config_loader = ConfigLoader.new(env_name="sbx") >>> for server_name, server in config_loader.iter_servers(): ... >>> server = config_loader.get_server(server_name="blue") >>> server Server(id='sbx-blue', db_admin_password='sbx*dummy4test', db_username='myuser', db_password='sbx*dummy4test')
- classmethod new(env_name: str, parameter_name_prefix: Optional[str] = None, s3folder_config: Optional[str] = None, bsm: BotoSesManager = None) ConfigLoader [source]#
创建一个新的 ConfigLoader 对象,
- Parameters:
env_name – the environment name of the env specific config you want to load from, stx, tst, prd, etc. If None, then load the master config.
parameter_name_prefix – the parameter name prefix, the full name will be ${parameter_name_prefix}-${env_name}.
s3folder_config – S3 配置数据的根目录, 默认为 s3://aws_account_id}-{aws_region}-artifacts/projects/acore_server_config/config/
bsm –
boto_session_manager.BotoSesManager
object, if not provided, then use the current runtime default AWS CLI profile.