netflix oss ice工具的python数据访问接口

ice_pick的Python项目详细描述


#ice pick

一个python库,它允许轻松访问netflix oss ice工具收集的aws计费数据,
以及对配置的应用程序组的操作。




一旦为您的aws帐户配置了netflix oss ice应用程序的实例,您就可以导入apirest,指向您的ice url,然后开始查询。

/>api_request=apirest(ice_url)
data=api_request.get_data()


print data
{
‘data’:{
‘aws数据管道’:[0.251488829999966],
‘alexa web信息服务’:[0.1113000000000001],
‘聚合’:[48884.90918908445],
‘cloudfront':[3241.575401989994],




‘vpc':[296.782484480026]
},
‘groupby':‘product’,
‘hours':[588],
‘start':1391212800000,
‘stats':{
‘aws数据管道’:{
‘平均值’:0.25148882999999966,
"最大":0.2514888299999966,
"总计":0.2514888299999966
},
"Alexa Web信息服务":{
"平均":0.11130000000000001,
"最大":0.11130000000000001,
"总计":0.11130000000000001
"聚合":{
"平均":48884.90918908445,
"最大":48884.90918908445,
"总计":48884.90918908445
},
"云锋":{
"平均":3241.575401989994,
"最大":3241.575401989994,
"总计":3241。575401989994
},



‘vpc’:{
‘平均值’:296.782484480026,
‘最大值’:296.782484480026,
‘总计’:296.782484480026
}
,‘状态’:200,
‘时间’:[139121"2800000]
}

":false,
‘start’:'2014-02-01 12am'
}


默认情况下,*start*和*end*日期基于当前(UTC)时间。


data=api_request.get_data()


print data

{
‘data’:{
‘aggregated’:[27643.726958229963],
‘ec2’:[1663.472958229997],
‘ec2实例’:[25980.25399999964]
,‘groupby’:‘product’,
‘hours’:[588],
‘start’:1391212800000,
"统计":{
"汇总":{
"平均":27643.726958229963,
"最大":27643.726958229963,
"总计":27643.726958229963
},
"ec2":{
"平均":1663.472958229997,
"最大":1663.472958229997,
"总计":1663.472958229997
},
"EC2_实例":{
"平均":25980.2539999964,
"最大"":25980.25399999964,
‘总计’:25980.2539999964
}
},
‘状态’:200,
‘时间’:[1391212800000]
}


美国西部1,美国西部2,美国西部2,美国西部2,美国西部2,美国西部1,美国西部2,美国西部2,美国西部2,美国西部2,美国西部2,美国西部2_实例":[3801.1699999969]
},
‘groupby’:‘product’,
‘hours’:[588],
‘start’:1391212800000,
‘stats’:{
‘aggregated’:{
‘average’:3901.7434038694,
‘max’:3901.7434038694,
"总计":3901.7434038694
},
"ec2":{
"平均":100.5734038700029,
"最大":100.5734038700029,
"总计":100.5734038700029
},
"ec2实例":{
"平均":3801.16999999969,
"最大":3801.16999999969,
"总计":3801.16999999969
}
},
"状态":200,
"时间":[1391212800000]
}







ick.filters将使用类型导入为使用类型
usage\u types=[\u usage\u types.load\u balancer\u usage,\u usage\u types.m1\u xlarge]


api\u请求。设置使用类型(使用类型)



t在初始化apirest时应用。

from ice_pick.filters import consolidate as_consolidate
from ice_pick.filters import group_by as_group_by
from ice_pick.filters import operations as_operations

filters={
apifilters.acc计数:['012345678900','009876543210',
apifilters.regions:[_regions.us_west_1,_regions.us_west_2],
apifilters.breakdown:true,
apifilters.consolidate:_consolidate.monthly,
apifilters.factor_sps:false,
apifilters.group_by.p产品,
apifilters.is_cost:true,
apifilters.operations:[_operations.create_bucket,_operations.create_snapshot],
apifilters.show_sps:false,
apifilters.usage_types:usage_types
.
.
.
}

uest=APIRequest(ICE_url,**filters)



\r/>如果您的ICE安装落后于HTTP身份验证(即由启用了
HTTP身份验证的代理提供服务),则可以使用[请求库](http://docs.python requests.org/en/latest/user/authentication/)支持的任何形式的身份验证;
只需调用``使用需要传递给requests对象的相同参数设置'u http_auth()``方法。


http基本身份验证:

st(ice_url)
api_request.set_http_auth(("myuser","mypass")
data=api_request.get_data()

http摘要身份验证:

from ice_pick.api import apirest
from requests.auth import httpdigestauth

ice_url='http://example.com/ice/''url to your ice instance
api_request=apirest(ice_url)
api_request.set_http_auth(httpdigestauth('user','pass')
data=api_request.getata()

\如果在
``ice.properties``中设置了'ice.customtags``并希望自动为其创建应用程序组,则这非常有用。

例如,com/)
>>>gt>gt;accounts=g.get_account_account_account_account_account_account_account_account(accounts)
>>gt;ppprint(accounts)
[u'123456678989012'u'123456678989892012'u'1234566789892012'u'98765454321098']
>>>>ppprint(region)
[u'ap-东北-1',
>u'ap-东北-1',
>u'ap-ap-东南-1',
>u'ap-ap-ap-ap-ap-东南-2',
u'eU-West-1’,
U'SA-East-1’,
U'US-East-1’,
U'US-East-1’,
U'US-East-1,
U'US-West-1’,
U'US-West-2’,
>>;产品=G.GET产品(账户、地区)
>>;PPRINT(产品)
[U'EBS,
>U'EC2’,
>U'EC2’,
>U'rdrds,
U'S3 U'S3'S3'S-West-1’,
U'US-West-2’,<]
>>>资源组=全部获取_资源群(账户、地区、产品)
>gt>gt;ppprint(资源群)
[u'somesservice/foo-prod,
u'somesservice/foo-test,
u'somesservice/foo-prod,
u'somesservice/foo-unknown,
u'somesservice/bar-dev,
u'somesservice/bar-prod,
u'somesservice/bar-prod,
u'somesservice/bar-prod,
u'somesservice/bar-test,
u'somesservice/baz'somesservice/baz-dev,
u'somesserviserviceservice一消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费品消费:[u'someservice/foo_prod',
u'so的服务服务/服务测试,
u'someservice/foo'u unknown',
u'someservice/bar'u dev',
u'someservice/bar'u prod',
u'someservice/baz'u dev',
u'someservice/baz'u prod',
u'someservice/baz'u test',
u'ebs',
u'ec2':[u'someapp',
u'someapp_prod',
u'someapp_test',
u'someservice/foo_prod',
u'someservice/foo_test',
u'someservice/foo_unknown',
u'someservice/bar_dev',
u'someservice/bar_prod',
u'someservice/bar_test',
u'someservice/Baz开发,
u'someservice/baz生产,
u'someservice/baz测试,
u'ec2'],
u'ec2实例:[u'someapp',
u'someservice/foo生产,
u'someservice/foo测试,
u'someservice/foo未知',
u'someservice/bar'u dev',
u'someservice/bar'u prod',
u'someservice/baz'u dev',
u'someservice/baz'u prod',
u'someservice/baz'u test',
u'ec2'u instance',
u'rds':[u'rds',
u'someapp',
"U'someapp'u prod",
>U'someapp'u test'],
U'redshift':[],
U's3':[U's3',
>U'someapp'u prod'],
>U'ses':[],
U'simpledb':[],
>U'sns':[],
>U'sqs':[],
U'存储网关':[],
U'sws':[],
U'sws':[],
U'vpc':[],
U'vp[]}
>>>app_groups=g.获取应用程序ation_group_names()
>;>pprint(app_groups)
[u'someservice',
u'foobar',
u'amis']

;g=groups('http://ice.example.com/')
>;>;grp=g.get_application_group('foobar')
>;>;pprint(grp)
{'name':u'foobar',
'owner':u'me@example.com',
'products':{u'ec2':[u'someapp',u'someapp_prod',u'someapp_test',
u'ec2嫒instance':[u'someapp'],
u'rds':[u'someapp',u'someapp嫒prod',u'someapp嫒test'],
u's3':[u'someapp嫒prod']}

t从ICE pick.groups导入pprint
>;>g=groups('http://ice.example.com/')
>;>rg撸lists=g.get撸resource撸group撸lists()
>;
>;>untaged={}
>;
…对于rg-in-rg-u列表[产品]:
…如果乘积==rg:
…未标记的[产品]=[rg]

>gt>gt>ppprint(未标记)
{u'cloudfront':[u'cloudfront'],
u'cloudwatch':[u'cloudwatch'],
u'ebs':[u'ebs'],
>u'ec2':[u'ec2'],
>u'ec2'ec2'u实例':[u'ec2'u实例',
>u'ec2'ec2'u实例',
>u'ec2'ec2'u实例',
>u'ec2'ec2'ec2'u实例',
>u'ec2'ec2'ec2'ec2'ec2'ec2'ec2,
u'route53':[u'route53'],
u's3':[u's3']}
>;>;g.set_application_group('untaged',untaged,'me@example.com')
{}


所有资源组(标记)的应用程序组
从"someservice"开始:

>;>;从集合导入defaultdict
>;>>来自pprint import pprint
>;>>来自ice-pick.groups import groups
>;>g=groups('http://ice.example.com/')
>;>rg-lists=g.get-u resource-group-lists()
>;
>;>someservice=defaultdict(list)
>;>;>;对于rgu列表中的产品:
…对于rg-in-rg-u列表[产品]:
…如果rg.startswith('someservice'):
…someservice[产品].append(rg)

>;>pprint(dict(someservice))
{u'ebs':[u'someservice/foo'u prod',
u'someservice/foo'u test',
u'someservice/foo'u unknown',
u'someservice/bar'u dev',
u'someservice/bar'u prod',
u'someservice/baZ戥dev',
u'someservice/baz戥prod',
u'someservice/baz戥test',
u'ec2':[u'someservice/foo戥prod',
u'someservice/foo戥test',
u'someservice/foo戥unknown',
u'someservice/bar戥dev,
u'someservice/bar_prod',
u'someservice/bar_test',
u'someservice/baz_dev',
u'someservice/baz_prod',
u'someservice/baz_test',
u'ec2_instance':[u'someservice/foo_prod',
u'someservice/foo_test',
u'someservice/foo_unknown',
u'someservice/bar_dev',
u'someservice/bar_prod',
u'someservice/baz_dev',
u'someservice/baz_prod',
u'someservice/bazt']}
>;>g.set_application_group('someservice',someservice,'me@example.com')
{}

许可证。
您可以在

http://www.apache.org/licenses/license-2.0

管理许可证下的权限和
限制的IFIC语言。

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

推荐PyPI第三方库


热门话题
Java中是否有数字的默认类型   java调用一个类的方法来使用另一个类的实例   java HtmlUnit不适用于javascript处理   java需要帮助才能连接MongoDB   java如何从Maven中的src/main/resources复制文件?   java保存Int值(共享首选项)   从另一个类调用方法时,java Autowired组件出现空指针异常   java Spring JPA:PropertyAccessException 1:。。。MethodInvocationException:。'driverClassName'。。。org/postgresql/Driver:不支持的专业。次要版本52.0   java使用增强的JDO模型类在Eclipse中运行Junit测试   java如何使用eclipse IDE为junit创建可运行的jar文件   java如何在安卓中检测应用程序的启动和退出   java在其他线程可以访问静态映射时从数据库更新静态映射   java@Entitty和@EntityScan不起作用。我正在使用SpringBoot和jpa存储库,发生了很多次   java如何与google日历集成?