跳转到主要内容

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 有 descriptioncache_clusters 字段,而 IElastiCacheRedis 有 snapshot_retention_limit_dayssnapshot_window 字段。

  • IRDS 有新的 license_modelcloudwatch_logs_exportdeletion_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_nameprimary_hosted_zone 更改为 IDNS 对象。

修复

  • 警报覆盖现在转换为字段的模式。修复了当模式期望一个浮点数时,"threshold: 10" 加载为 int() 的问题。

6.0.0 (2019-09-27)

新增

  • ICloudWatchAlarms 有 enable_ok_actionsenable_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现在具有principalcondition字段。principal可以是键值字典,其中键可以是'AWS'、'Service'等,值可以是字符串或列表。它是aws字段的替代方案,该字段将保留用于设置更简单的仅AWS主体。condition字段是键值过滤器字典。

  • 警报现在具有'get_alarm_actions'和'get_alarm_description'以帮助构建警报。

  • CloudTrail有一个'get_accounts',它将CloudTrail.accounts字段解析为模型中Account对象的列表。

  • IAlarm具有descriptionrunbook_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 (102.7 kB 查看哈希值)

上传时间

由以下机构支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面