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

  • bsmboto_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/

  • bsmboto_session_manager.BotoSesManager object, if not provided, then use the current runtime default AWS CLI profile.

iter_servers() Iterable[Tuple[str, Server]][source]#

遍历所有的 server. 返回许多 (server_name, server) 的 tuple. 这类似于字典中的 dict.items() 方法

get_server(server_name: str) Server[source]#

获得特定 server 的配置数据.

Parameters:

server_name – 服务器的名字 (不包括环境名, 包括环境名的字符串是 server_id). 例如 “blue”, “green” 等.