aws云信息创建库

troposphere的Python项目详细描述


PyPI VersionBuild Statuslicense: New BSD licenseDocumentation Status

关于

对流层-创建AWS CloudFormation描述的库

通过编写描述aws资源的python代码,对流层库允许更容易地创建AWS CloudFormation JSON。对流层也 包括一些通过heat对OpenStack resources的基本支持。

为了便于在早期捕获cloudformation或json错误,库具有 类中内置的属性和类型检查。

安装

对流层可以通过python的pip分发系统安装 发布:

$ pip install troposphere

awacs安装对流层 (推荐的软依赖):

$ pip install troposphere[policy]

或者,可以通过克隆此存储库来运行use setup.py进行安装 并发布:

$ python setup.py install  # you may need sudo depending on your python installation

示例

创建实例的简单示例如下:

>>>fromtroposphereimportRef,Template>>>importtroposphere.ec2asec2>>>t=Template()>>>instance=ec2.Instance("myinstance")>>>instance.ImageId="ami-951945d0">>>instance.InstanceType="t1.micro">>>t.add_resource(instance)<troposphere.ec2.Instanceobjectat0x101bf3390>>>>print(t.to_json()){"Resources":{"myinstance":{"Properties":{"ImageId":"ami-951945d0","InstanceType":"t1.micro"},"Type":"AWS::EC2::Instance"}}}

创建实例(yaml)的简单示例如下:

>>>fromtroposphereimportRef,Template>>>importtroposphere.ec2asec2>>>t=Template()>>>instance=ec2.Instance("myinstance")>>>instance.ImageId="ami-951945d0">>>instance.InstanceType="t1.micro">>>t.add_resource(instance)<troposphere.ec2.Instanceobjectat0x101bf3390>>>>print(t.to_yaml())Resources:myinstance:Properties:ImageId:ami-951945d0InstanceType:t1.microType:AWS::EC2::Instance

或者,可以使用参数代替属性:

>>>instance=ec2.Instance("myinstance",ImageId="ami-951945d0",InstanceType="t1.micro")>>>t.add_resource(instance)<troposphere.ec2.Instanceobjectat0x101bf3550>

并且add_resource()返回该对象,以便与Ref()一起使用:

>>>instance=t.add_resource(ec2.Instance("myinstance",ImageId="ami-951945d0",InstanceType="t1.micro"))>>>Ref(instance)<troposphere.Refobjectat0x101bf3490>

错误检查示例(为了清晰起见,删除了完整的回溯):

在aws资源上设置的属性不正确:

>>>importtroposphere.ec2asec2>>>ec2.Instance("ec2instance",image="i-XXXX")Traceback(mostrecentcalllast):...AttributeError:AWS::EC2::Instanceobjectdoesnotsupportattributeimage

aws资源属性的类型不正确:

>>>ec2.Instance("ec2instance",ImageId=1)Traceback(mostrecentcalllast):...TypeError:ImageIdis<type'int'>,expected<type'basestring'>

缺少aws资源的必需属性:

>>>fromtroposphereimportTemplate>>>importtroposphere.ec2asec2>>>t=Template()>>>t.add_resource(ec2.Instance("ec2instance",InstanceType="m3.medium"))<troposphere.ec2.Instanceobjectat0x109ee2e50>>>>print(t.to_json())Traceback(mostrecentcalllast):...ValueError:ResourceImageIdrequiredintypeAWS::EC2::Instance

当前支持的AWS资源类型

  • aws::amazonq
  • aws::放大
  • aws::apigateway
  • aws::apigatewayv2
  • aws::appmesh
  • aws::appstream
  • aws::appsync
  • aws::应用程序自动缩放
  • 雅典娜
  • 自动缩放
  • 自动缩放计划
  • aws::批次
  • aws::预算
  • aws::证书管理员
  • AWS::云9
  • 云信息
  • aws::云锋
  • aws::cloudtrail
  • aws::cloudwatch
  • aws::代码构建
  • aws::codecommit
  • aws::代码部署
  • aws::代码管道
  • aws::代码星
  • aws::干邑
  • aws::配置
  • aws::dax
  • aws::dlm
  • AWS::DMS
  • aws::数据管道
  • aws::目录服务
  • aws::文档数据库
  • AWS::发电机
  • aws::ec2
  • AWS::电子收银机
  • aws::ecs
  • aws::efs
  • aws::eks
  • AWS::电子病历
  • aws::弹性体
  • 弹性豆茎
  • aws::弹性负载平衡
  • AWS::弹性加载平衡v2
  • aws::弹性搜索
  • aws::事件
  • aws::fsx
  • aws::胶水
  • aws::绿草
  • aws::担保
  • aws::iam
  • AWS::检查员
  • AWS::物联网
  • aws::iot1单击
  • aws::物联网分析
  • aws::物联网事件
  • aws::kms
  • aws::动觉
  • 运动分析
  • 运动分析2
  • aws::动态消防软管
  • aws::lakeformation
  • aws::lambda
  • aws::日志
  • aws::managedblockchain
  • aws::媒体直播
  • aws::媒体商店
  • aws::msk
  • 海王星
  • AWS::Opsworks
  • aws::opsworkscm
  • aws::精确定位邮件
  • aws::ram
  • aws::rds
  • aws::红移
  • aws::罗博马克
  • AWS::路径53
  • AWS::路由53解析器
  • aws::s3
  • AWS::SDB
  • AWS::SES
  • aws::sns
  • aws::sqs
  • AWS::SSM
  • aws::sagemaker
  • aws::secretsmanager
  • aws::安全中心
  • aws::无服务器
  • aws::服务目录
  • aws::服务发现
  • aws::步骤函数
  • aws::传输
  • aws::waf
  • aws::waf地区
  • aws::工作区

当前支持的OpenStack资源类型

  • 操作系统::中子::防火墙
  • 操作系统::中子::防火墙策略
  • <升i>操作系统::中子::防火墙规则
  • 操作系统::中子::浮动IP
  • 操作系统::中子::浮动关联
  • 操作系统::中子::健康监测器
  • 操作系统::中子::池
  • 操作系统::中子::负载均衡器
  • 操作系统::中子::净
  • os::中子::池成员
  • 操作系统::中子::端口
  • 操作系统::中子::安全组
  • 操作系统::nova::浮动IP
  • os::nova::浮动关联
  • os::nova::密钥对
  • 操作系统::nova::服务器

待办事项:

  • 添加其他有效性检查

复制单个实例示例如下所示

# Converted from EC2InstanceSample.template located at:# http://aws.amazon.com/cloudformation/aws-cloudformation-templates/fromtroposphereimportBase64,FindInMap,GetAttfromtroposphereimportParameter,Output,Ref,Templateimporttroposphere.ec2asec2template=Template()keyname_param=template.add_parameter(Parameter("KeyName",Description="Name of an existing EC2 KeyPair to enable SSH ""access to the instance",Type="String",))template.add_mapping('RegionMap',{"us-east-1":{"AMI":"ami-7f418316"},"us-west-1":{"AMI":"ami-951945d0"},"us-west-2":{"AMI":"ami-16fd7026"},"eu-west-1":{"AMI":"ami-24506250"},"sa-east-1":{"AMI":"ami-3e3be423"},"ap-southeast-1":{"AMI":"ami-74dda626"},"ap-northeast-1":{"AMI":"ami-dcfa4edd"}})ec2_instance=template.add_resource(ec2.Instance("Ec2Instance",ImageId=FindInMap("RegionMap",Ref("AWS::Region"),"AMI"),InstanceType="t1.micro",KeyName=Ref(keyname_param),SecurityGroups=["default"],UserData=Base64("80")))template.add_output([Output("InstanceId",Description="InstanceId of the newly created EC2 instance",Value=Ref(ec2_instance),),Output("AZ",Description="Availability Zone of the newly created EC2 instance",Value=GetAtt(ec2_instance,"AvailabilityZone"),),Output("PublicIP",Description="Public IP address of the newly created EC2 instance",Value=GetAtt(ec2_instance,"PublicIp"),),Output("PrivateIP",Description="Private IP address of the newly created EC2 instance",Value=GetAtt(ec2_instance,"PrivateIp"),),Output("PublicDNS",Description="Public DNSName of the newly created EC2 instance",Value=GetAtt(ec2_instance,"PublicDnsName"),),Output("PrivateDNS",Description="Private DNSName of the newly created EC2 instance",Value=GetAtt(ec2_instance,"PrivateDnsName"),),])print(template.to_json())

社区

我们有一个google群组cloudtools-dev,你可以在这里提问 与对流层社区接触。问题和请求总是 欢迎!

许可

对流层是根据BSD 2-Clause license授权的。 对流层许可证全文见LICENSE

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

推荐PyPI第三方库


热门话题
java使用ApachePOI将excel文件导入postgreSQL表   java多线程从iText pdf提取文本   winapi Java和SetWindowDisplayAffinity   eclipse juno的java Websphere 6.1插件   java MPAndroidChart:为Y轴提供一些偏移   java中作为参数传递枚举类型的继承   java Gui jframe的工作原理与netbeans不同   使用Bouncy Castle和PDFBox在Java中验证PDF签名   优化缩小Java代码   java无法在安卓中从Firebase取回子数据   返回的java方法?我应该什么时候用?   java错误处理已完成,退出代码为1。与穿过阵列的for循环有关   多线程Java volatile是否阻止缓存或强制执行写缓存?   java Multi-collectItems如何提前终止并返回已收集的项目   java为什么不在服务(请求,响应)中直接调用processRequest(请求,响应)?   java如何从字符串生成int数组?   打印获取用户输入的值并在其他预选文本中显示。JAVA   未显示java DynamicAsper UTF8字符   java Eclipse RCP:不启动应用程序的命令行参数