Sumo Logic CloudFormation tester允许您测试CF以进行验证和部署。

sumologic-cfn-tester的Python项目详细描述


Sumo Logic AWS云信息测试框架

该框架可用于测试AWS云信息模板的整个生命周期,包括验证、部署、部署后和清理。在

该框架为AWS CloudFormation模板执行以下生命周期事件:

  1. 发布预CFN验证和预CFN验证。在
  2. 部署事件-执行云信息模板的部署。在
  3. 部署后事件-执行部署后验证,如资源、输出和参数检查。在
  4. 清除事件-执行CloudFormation堆栈的清理。在

先决条件

在使用测试框架之前

  1. 在计算机上安装AWS CLI。在
  2. 在机器中安装CFN NAG。要安装CFN NAG,请visit。在

安装

框架可以使用pip3 install sumologic-cfn-tester作为python包安装

使用

要测试CloudFormation模板,请运行命令sumocfntester -f <Test File>

一个额外的标志-d true可用于启用调试日志记录。在

测试文件

框架需要一个包含测试用例的测试文件(JSON或YAML)格式。下面是一个有效测试文件的示例。 为每个字段添加注释。在

---# Global ConfigurationGlobal:TemplatePath:"../../templates/ParentTemplate.yaml"# Path of the templateTestProjectName:BasicTestProject# Test Project NameParallelTestsRun:5# Number of parallel Tests run. Number of stacks will be deployed parallel on AWS.GlobalParameters:# Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.SumoDeployment:us1SumoAccessID:Parameter_value_2# You can also provide env variables like ${ENV_1}SumoAccessKey:Parameter_value_1SumoOrganizationId:Parameter_value_2RemoveSumoResourcesOnDeleteStack:'true'# Tests ConfigurationTests:-TestName:Do_Not_Install_Nested_Stack# Test Case Number 1Regions:# List of regions where you want to deploy the stack.-ap-south-1Parameters:# Contains Path Or Values. Values: Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.Values:InstallApp:'No'CreateCloudWatchMetricsSource:'No'Skip:false# True if need to skip the test case.Assertions:# All Assertions for post deployment validation. Nested Resources can be provided separated by '.'.-AssertType:ResourceExistence# ResourceExistence validation. Can have list of Resources in Assert object.Assert:Resources:-SumoLogicHelperRole-SumoLogicHelperFunction-SumoRole-sumoNestedAppStack.SumoRole# Shows Nested Stack Resource logical ID. sumoNestedAppStack -> Resource Logical ID of Stack in Parent stack. SumoRole = A Resource in Nested Stack.-AssertType:OutputsCheck# OutputsCheck validation. Can have list of Outputs in Assert object.Assert:Outputs:-LambdaHelperARN-LambdaRoleARN-SumoRoleARN-sumoNestedAppStack.SumoRoleARN-AssertType:ParameterCheck# ParameterCheck validation. Can have Dictionary of Parameters in Assert object.Assert:sumoNestedAppStack:# Resource logical ID. Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.ParentStackName:MasterTemplateInstallApp:'Yes'sumoNestedAppStack.sumoNestedAppStack:# Resource logical ID. Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.ParentStackName:DoNotInstallInstallApp:'Yes'-TestName:Install_Nested_Stack# Test Case Number 2Regions:-ap-south-1Parameters:Path:Install_Nested_Stack.yaml# Contains Path Or Values. Path: Path of the parameter file.Skip:falseAssertions:-AssertType:ResourceExistenceAssert:Resources:-SumoLogicHelperRole-SumoLogicHelperFunction-SumoRole-sumoNestedAppStack.SumoRole-sumoNestedAppStack-sumoNestedAppStack.sumoNestedAppStack-AssertType:OutputsCheckAssert:Outputs:-LambdaHelperARN-LambdaRoleARN-SumoRoleARN-sumoNestedAppStack-sumoNestedAppStack.SumoRoleARN-sumoNestedAppStack.sumoNestedAppStack-AssertType:ParameterCheckAssert:sumoNestedAppStack:ParentStackName:MasterTemplateInstallApp:'Yes'sumoNestedAppStack.sumoNestedAppStack:ParentStackName:DoNotInstallInstallApp:'Yes'

工艺流程

下面的步骤解释了CF模板所经历的所有过程。在

预部署

对于部署前测试(在将CF模板部署到AWS上之前对其进行验证),我们使用以下第三方软件包。在

A.CFN PYTHON LINT

  • 使用pip install cfn-lint安装依赖项。在
  • 帮助对CF模板执行一些基本验证,以检查资源、映射和参数。在
  • 它还检查CF模板中的条件依赖关系。在
  • 有关所有规则的详细信息,请在安装依赖项后尝试运行cfn-lint -l。在

B.CFN NAG

  • 依赖性要求在机器上安装ruby。在
  • 可以使用gem install cfn-nag安装依赖项
  • 基本的策略有助于检查通配符等

部署

部署过程将CloudFormation模板部署到具有上述区域的AWS帐户。在

部署后

部署后流程检查已部署云信息堆栈上的以下验证。在

A.ResourceExistence——验证检查CloudInformation堆栈和相应的嵌套堆栈中提到的所有资源。 B、 OutputsCheck-验证检查CloudFormation堆栈和相应的嵌套堆栈中提到的所有资源。 C、 ParameterCheck-验证检查CloudFormation堆栈和相应的嵌套堆栈中提到的所有资源。在

清理

清理过程从AWS帐户中删除已部署的堆栈。在

报告生成

将为每个测试文件生成一个报告,其中包含测试文件中测试用例的状态。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在hazelcast中从地图中取出第一把未锁定的钥匙?   将个人记录从一个数据库复制到另一个数据库Oracle和Java   java Spring boot招摇过市404   ArrayList中的数组问题,Java   例外我保存了文本1。txt文件位于与Algo相同的文件夹中。java文件在中。但我得到了一个Filenotfoundexception,我找不到任何原因   雅加达ee如何解决java中“字符串或二进制数据将被截断”的问题?   Java中的swing遍历数组列表   javascript我在Ext js中有一个表,我需要在<td>标记中编写一些逻辑   java Servlet过滤器是否可以检索其url路径?   java GXT如何将网格过滤器参数添加到请求URL(获取参数)?   java无法获取maven安装路径   安卓 java。ServerSocket中的lang.nullpointerexception。接受   java jquery数据表一个数据表中的最大列数   java Spring数据jpa,jpa替换DTO对象的字符串的正向返回列表   java为什么增量后操作符在此代码中无法增量“a”?   Java包装集合   java匹配包含子域的URL   java获取计算机ip时,显示为0.0.0.0   java使用JGit从Git存储库中检出特定版本