aim.models:语义云基础设施配置文件格式和对象模型
项目描述
aim.models
语义云基础设施的对象模型。
aim.models
解析由YAML文件组成的AIM项目目录,并将它们加载到完整的对象模型中。
模型中有什么?
模型定义了常见的云基础设施逻辑概念,例如网络、帐户、应用程序和环境。
模型使用网络和应用作为配置的层次树,可以在它们放置到环境中时覆盖它们的值。环境生活在网络中,包含应用程序,通常代表软件开发生命周期(SDLC)的阶段,如“开发”、“测试”和“生产”。
模型具有声明性模式,该模式明确定义了模型中每种对象类型的字段。此模式不仅声明类型(例如,字符串、整数),还可以声明默认值、最小值和最大值、约束到特定值,并定义不变性,以确保如果一个字段具有特定值,另一个字段的值与此兼容。当模型加载AIM项目时,它将验证这些字段。
开发
使用您选择的Python工具安装此包。通常设置虚拟环境并在其中安装依赖项
python -m venv env
./env/bin/pip install -e .
使用PyTest进行单元测试。如果您使用VS Code,可以打开“Py Test已启用”设置并运行“发现单元测试”命令。
aim.models 更新日志
6.1.0 (2019-11-06)
新增
-
应用程序可以在同一环境中使用新的 "app{后缀}" 语法重复部署,用于环境的应用程序密钥。
-
INotificationGroups 有一个 regions 字段,如果它是默认的 ['ALL'],则将应用于项目中的所有活动区域。否则,它只会在所选区域中部署。
-
ICloudFormationInit 用于建模 AWS::CloudFormation::Init,可以应用于 IASG.cfn_init 字段。
-
ICloudWatchLogAlarm 架构。ICloudWatchAlarm 现在具有 "type: Alarm" 类型,如果它是 "type: LogAlarm",则将创建一个 ICloudWatchLogAlarm,可以用来将警报连接到 LogGroup 的 MetricFilter。
-
IDBParameterGrouups 资源。
-
IElastiCache 有
description
和cache_clusters
字段,而 IElastiCacheRedis 有snapshot_retention_limit_days
和snapshot_window
字段。 -
IRDS 有新的
license_model
、cloudwatch_logs_export
和deletion_protection
字段。 -
IAM 角色的
global_role_name
字段可以设置为 True,RoleName 不会进行哈希处理。只能用于全局角色,否则如果这些角色在每个环境中重叠,则可能会出现问题! -
monitoring.health_checks
可以包含 HealthCheck 资源。IRoute53HealthCheck 资源用于 Route53 健康检查。 -
如果设置了
overrode_region_name
属性,则可以覆盖region_name
属性。 -
为 IAM 用户添加了 CodeBuild IAM 权限。
-
将
resolve_ref
方法添加到 DeploymentPipelineConfiguration。 -
添加了 EIP 应用程序资源,并在 ASG 资源中添加了对 'eip' 字段的支持,以便将 EIP 与单个实例 ASG 关联。
-
将 AWS Cli 安装命令添加到词汇表中。
-
将
dns
添加到 EIP 应用程序资源。 -
添加了
cftemplate_iam_user_delegates_2019_10_02
过时标志,以使用户委托堆栈名称与其他堆栈名称保持一致。 -
添加了
route53_hosted_zone_2019_10_12
过时标志,用于 Route53 CFTemplate 重构。 -
添加了
route53_record_set_2019_10_16
过时标志,用于 Route53 RecordSet 重构。 -
添加了
availability_zone
以将 ASG 锁定到单个可用区。 -
将
parameter_group
添加到 IElastiCache 应用程序资源。 -
将
vpc_associations
添加到 IPrivateHosted。 -
将
vpc_config
添加到 ILambda 应用程序资源。 -
将
secrets_manager
添加到 IIEnvironmentDefault。 -
将
ttl
添加到 IDNS。 -
将缓存添加到实例 AMI ID function.ref 查找。
-
添加了 EBS 应用程序资源。将
ebs_volume_mounts
添加到 IASG,以便将卷挂载到单个实例组。 -
将
launch_options
添加到 IASG,作为 IEC2LaunchOptions 对象。初始选项是 update_packages,将在启动时更新 Linux 发行版的软件包。 -
将 resolve_ref() 添加到 base.py 中的 Resource,作为一个通配符。
更改
-
ISecurityGroupRule 的
source_security_group
已移动到 IIngressRule 和 IEgressRule(终于!),并且 IEgressRule 现在有destination_security_group
字段。 -
已删除
load_resources
,现在可以简单地将apply_attributes
应用到应用程序,它将递归地通过 app.groups..resources.,而无需任何外部操作。 -
将 deepdiff CLI 函数移动到
aim
项目中。 -
IApplication 现在是 IMonitorable。应用程序级别的警报必须指定其命名空间和维度。
-
将 RDS 的
primary_domain_name
和primary_hosted_zone
更改为 IDNS 对象。
修复
- 警报覆盖现在转换为字段的模式。修复了当模式期望一个浮点数时,"threshold: 10" 加载为 int() 的问题。
6.0.0 (2019-09-27)
新增
-
ICloudWatchAlarms 有
enable_ok_actions
和enable_insufficient_data_actions
布尔值,当警报进入 OK 或 INSUFFICIENT_DATA 状态时,将发送到通知组。 -
references.get_model_obj_ref
将 aim.ref 解析为模型对象,并且不会尝试执行堆栈输出查找。 -
服务插件根据每个插件提供的
initilization_order
整数进行加载。如果没有提供整数,则无序插件的加载从 1000 开始计数。 -
最小 API 网关模型用于方法、资源、模型和阶段。
-
S3Bucket 通知配置用于 Lambdas。
-
S3Bucket 有
get_bucket_name()
用于返回完整的计算桶名称。 -
IGlobalResources为项目['resource']包含来自./Resources/目录的配置。S3和EC2等资源现在实现INamed并加载到project['resource']中。
-
ISNSTopic具有
cross_account_access
,它授予AIM项目中所有账户的sns:Publish
权限。 -
IAccountContainer和IRegionContainer是轻量级的账户和区域信息容器。它们可以被希望以多账户、多区域方式设置资源的Services使用。
更改
-
CloudTrail将CloudWatchLogGroup定义为一个子对象,而不是aim.ref。
-
警报的
get_alarm_actions_aim_refs
已从get_alarm_actions
重命名,因为警报只能提供aim.ref,需要从堆栈中获取ARN。 -
NotificationGroups现在成为资源。现在它们有常规工作的aim.ref。
5.0.0 (2019-08-26)
新增
-
新增字段
aim.models.reference.FileReference
,它解析路径并使用该路径指示的文件值替换原始值。IApiGatewayRestApi.body_file_location使用这个新字段。 -
ApiGatewayRestApi和CloudWatchAlarm有一个
cfn_export_dict
属性,它返回一个新字典,可用于创建Troposphere资源。 -
向ACM添加了外部资源支持。
-
向Administrator IAMUserPermission添加了ReadOnly支持。
更改
-
多维警报现在需要指定一个
aim.ref
作为值。 -
添加了IAMUser架构和IAM用户的加载。
-
添加了CommaList()架构类型,用于将逗号分隔的列表加载到schema.List()中。
-
将aim引用生成移动到模型中。模型对象现在具有.aim_ref和.aim_ref_parts属性,它们包含它们的aim.ref引用。
-
将project['ne']重命名为project['netenv']。
-
修改了NatGateway段以使用aim引用。
修复
- 资源没有检查不变性。如果它们不包含在
zope.schema.Object
字段中,则加载器需要检查不变性,这将幕后运行检查。
4.0.0 (2019-08-21)
新增
-
为VPC Peering支持在模型中添加了IVPCPeering和IVPCPeeringRoute。
-
在
Resources/CloudTrail.yaml
中配置了CloudTrail架构。 -
IS3BucketPolicy现在具有
principal
和condition
字段。principal
可以是键值字典,其中键可以是'AWS'、'Service'等,值可以是字符串或列表。它是aws
字段的替代方案,该字段将保留用于设置更简单的仅AWS主体。condition
字段是键值过滤器字典。 -
警报现在具有'get_alarm_actions'和'get_alarm_description'以帮助构建警报。
-
CloudTrail有一个'get_accounts',它将CloudTrail.accounts字段解析为模型中Account对象的列表。
-
IAlarm具有
description
和runbook_url
字段。 -
CodePipeBuildDeploy.resolve_ref()函数覆盖了更广泛的ref查找范围。
-
向模型添加了VPCPeering。
-
向模型添加了IElastiCache和IElastiCacheRedis。
更改
-
MonitorConfig/LogSets.yaml
已重命名为MonitorConfig/Logging.yaml
。CloudWatch日志位于顶级cw_logging
键下。该架构已完全重新设计,以便正确地模拟LogGroups和LogSets。 -
IAccount.region、IEC2KeyPair.region和ICredentials.aws_default_region不再默认为
us-west-2
。区域需要显式设置。
修复
- IAlarm.classification现在是必需字段。
3.1.0 (2019-08-08)
新增
-
根目录中的aim-project-version.txt文件现在可以包含AIM项目的YAML版本。IProject现在有一个aim_project_version字段来存储此值。
-
ICloudWatchAlarm获得一个命名空间字段。可用于覆盖默认资源命名空间,例如,使用'CWAgent'用于CloudWatch代理指标。
-
IResource现在有一个resource_fullname字段。这是在CloudWatch警报中指定度量所需的名称。
-
ICloudWatchAlarm现在有一个维度字段,它是一个Dimension对象列表。
-
ITargetGroup现在继承自IResource。它从输出中加载resource_name。
3.0.0 (2019-08-06)
新增
-
新增包含通知订阅组的
MonitorConfig/NotificationGroups.yaml
。 -
为 Lambda 添加了 sdb_cache 字段。
-
Lambda 可具有警报。
-
使用 ISNSTopic 和 ISNSTopicSubscription 来建模 SNS。
更改
-
所有引用都已重命名为以
aim.ref
开头,以保持一致性。 -
AlarmSets、AlarmSet 和 Alarm 现在实现 INamed,并在模型中可定位。
-
服务插件可以加载它们的输出。
2.0.0 (2019-07-23)
新增
-
订阅警报的警报通知模式。
-
为 Resources/S3.yml 配置添加了 S3Resource。
-
添加了对 Lambda resolve_ref 的支持。
更改
-
服务以
aim.services
命名的入口点插件的形式加载。 -
重构了模型的应用程序、资源和服务。
-
将 IRoute53 重命名为 IRoute53Resource。
修复
- CloudWatchAlarms 现在验证了分类字段值 'performance'、'health' 或 'security' 是否提供。
1.1.0 (2019-07-06)
新增
-
添加了 function.ref,以便能够查找最新的 AMI ID。
-
增加了更多模式约束。
-
为 IS3Bucket.policy 添加了默认值。
-
将 Route53 添加到模式和模型中。
-
在 ALB 中添加了 Listener 规则的重定向。
更改
-
现在使用字段的描述属性来描述约束。
-
将 CodeCommit 移植到模式和模型中。
-
重构 S3 以使用 Application StackGroup。
-
CPBD 艺术品 s3 存储桶现在在 NetEnv yaml 中使用 S3 资源。
-
将 ALB 的监听器和监听器规则从列表转换为字典。
移除
- 从 fixtures 下的 aimdemo 中移除了未使用的 yaml 配置。
1.0.1 (2019-06-19)
- 改进了 Python 打包元数据。
1.0.0 (2019-06-19)
- 第一个开源版本
项目详情
aim.models-6.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 20b15772356c3b99607f512f5c25bb805abef999bcf8546b9acfd0cbd86d3b0e |
|
MD5 | 4cd5596d5391042f91d6d39700494797 |
|
BLAKE2b-256 | a39f2f5ab4eb015f872d1307b677942729039edb38aeb9fb294f94f7d71ce1d1 |