写点什么

AWS 价目表 API 更新 – 新增查询和元数据函数

  • 2019-11-07
  • 本文字数:4933 字

    阅读完需:约 16 分钟

AWS 价目表 API 更新 – 新增查询和元数据函数

原始 AWS 价目表 API (如新增 – AWS 价目表 API中所述) 使您可以通过结构化 URL 访问 JSON 和 CSV 形式的价格。虽然这对某些类型的成本管理工具很有效,但文件的大小和复杂性使得它们难以下载,而且难以解析。今天,我们将要通过添加新函数来更新 API,使您可以执行精细价格查询,从而仅返回您需要的价格。这将使您能够在移动应用程序和基于浏览器的应用程序中使用这些价格。


新增函数


下面是新增函数:


DescribeServices – 返回用于定义服务中的产品的属性键集合。例如,为 EC2 返回的键将包括 physicalProcessormemoryoperatingSystemlocationtenancy


GetAttributeValues – 返回给定属性键的所有允许值。例如,operatingSystem 键的值包括 WindowsRHELLinuxSUSElocation 键的值包括 US East (N. Virginia)Asia Pacific (Mumbai)


GetProducts – 返回与基于服务名称和属性值的筛选条件表达式匹配的所有产品及其公开价格。


您可以从 AWS 开发工具包中访问这些函数。为了试用它们,我使用了 Python 和适用于 Python 的 AWS 开发工具包。我首先导入开发工具包并创建客户端:


Python


import boto3import jsonimport pprint
pricing = boto3.client('pricing')
复制代码


下面是我如何列出所有服务和属性:


Python


print("All Services")print("============")response = pricing.describe_services()for service in response['Services']:    print(service['ServiceCode'] + ": " + ", ".join(service['AttributeNames']))print()
复制代码


输出的开头部分如下所示:


Bash


All Services============SnowballExtraDays: productFamily, termType, usagetype, locationType, snowballType, feeDescription, servicecode, feeCode, location, operationOpsWorks: productFamily, servicecode, termType, usagetype, locationType, location, operation, serverLocation, groupmobileanalytics: productFamily, servicecode, includedEvents, termType, usagetype, description, locationType, location, operationIngestionServiceSnowball: productFamily, fromLocationType, termType, usagetype, locationType, toLocationType, toLocation, snowballType, servicecode, groupDescription, transferType, location, fromLocation, operation, groupIngestionService: productFamily, termType, usagetype, locationType, servicecode, groupDescription, dataAction, location, operation, groupElasticMapReduce: productFamily, softwareType, instanceType, termType, usagetype, locationType, instanceFamily, servicecode, location, servicename, operationdatapipeline: productFamily, frequencyMode, termType, usagetype, locationType, description, executionFrequency, servicecode, location, operation, group, executionLocation...
复制代码


下面是我如何获取所有 EC2 定价属性的所有值:


Python


print("Selected EC2 Attributes & Values")print("================================")response = pricing.describe_services(ServiceCode='AmazonEC2')attrs = response['Services'][0]['AttributeNames']
for attr in attrs: response = pricing.get_attribute_values(ServiceCode='AmazonEC2', AttributeName=attr)
values = [] for attr_value in response['AttributeValues']: values.append(attr_value['Value'])
print(" " + attr + ": " + ", ".join(values))
复制代码


输出的开头部分如下所示:


Bash


Selected EC2 Attributes & Values================================  volumeType: Throughput Optimized HDD, Provisioned IOPS, Magnetic, General Purpose, Cold HDD  maxIopsvolume: 500 - based on 1 MiB I/O size, 40 - 200, 250 - based on 1 MiB I/O size, 20000, 10000  instanceCapacity10xlarge: 1  locationType: AWS Region  instanceFamily: Storage optimized, Micro instances, Memory optimized, GPU instance, General purpose, Compute optimized  operatingSystem: Windows, SUSE, RHEL, NA, Linux...
复制代码


下面是我如何使用服务名称和属性值来获取在亚太 (孟买) 区域具有 64 vCPU、256 GiB 内存、预装 SQL Server Enterprise 的 EC2 实例的价格列表。每个价格都是一个 JSON 字符串:


Python


print("Selected EC2 Products")print("=====================")
response = pricing.get_products( ServiceCode='AmazonEC2', Filters = [ {'Type' :'TERM_MATCH', 'Field':'operatingSystem', 'Value':'Windows' }, {'Type' :'TERM_MATCH', 'Field':'vcpu', 'Value':'64' }, {'Type' :'TERM_MATCH', 'Field':'memory', 'Value':'256 GiB' }, {'Type' :'TERM_MATCH', 'Field':'preInstalledSw', 'Value':'SQL Ent' }, {'Type' :'TERM_MATCH', 'Field':'location', 'Value':'Asia Pacific (Mumbai)'} ], MaxResults=100)
for price in response['PriceList']: pp = pprint.PrettyPrinter(indent=1. width=300) pp.pprint(json.loads(price)) print()
复制代码


输出的开头部分如下所示 (还有很多):


Bash


Selected EC2 Products====================={'product': {'attributes': {'clockSpeed': '2.3 GHz',                            'currentGeneration': 'Yes',                            'dedicatedEbsThroughput': '10000 Mbps',                            'ecu': '188',                            'enhancedNetworkingSupported': 'Yes',                            'instanceFamily': 'General purpose',                            'instanceType': 'm4.16xlarge',                            'licenseModel': 'No License required',                            'location': 'Asia Pacific (Mumbai)',                            'locationType': 'AWS Region',                            'memory': '256 GiB',                            'networkPerformance': '20 Gigabit',                            'normalizationSizeFactor': '128',                            'operatingSystem': 'Windows',                            'operation': 'RunInstances:0102',                            'physicalProcessor': 'Intel Xeon E5-2686 v4 (Broadwell)',                            'preInstalledSw': 'SQL Ent',                            'processorArchitecture': '64-bit',                            'processorFeatures': 'Intel AVX, Intel AVX2, Intel Turbo',                            'servicecode': 'AmazonEC2',                            'servicename': 'Amazon Elastic Compute Cloud',                            'storage': 'EBS only',                            'tenancy': 'Shared',                            'usagetype': 'APS3-BoxUsage:m4.16xlarge',                            'vcpu': '64'},             'productFamily': 'Compute Instance',             'sku': '24GRA8RB2KZ9NPCS'}, 'publicationDate': '2017-10-07T00:26:55Z', 'serviceCode': 'AmazonEC2',...
复制代码


响应的下一部分包含一组条款,每个条款都描述了购买实例的特定方式 (按需或多种类型的预留实例):


Bash


'terms': {'OnDemand': {'24GRA8RB2KZ9NPCS.JRTCKXETXF': {'effectiveDate': '2017-09-01T00:00:00Z',                                                        'offerTermCode': 'JRTCKXETXF',                                                        'priceDimensions': {'24GRA8RB2KZ9NPCS.JRTCKXETXF.6YS6EN2CT7': {'appliesTo': [],                                                                                                                       'beginRange': '0',                                                                                                                       'description': '$30.88 per On Demand Windows with SQL Server Enterprise m4.16xlarge Instance Hour',                                                                                                                       'endRange': 'Inf',                                                                                                                       'pricePerUnit': {'USD': '30.8800000000'},                                                                                                                       'rateCode': '24GRA8RB2KZ9NPCS.JRTCKXETXF.6YS6EN2CT7',                                                                                                                       'unit': 'Hrs'}},                                                        'sku': '24GRA8RB2KZ9NPCS',                                                        'termAttributes': {}}},           'Reserved': {'24GRA8RB2KZ9NPCS.38NPMPTW36': {'effectiveDate': '2017-04-30T23:59:59Z',                                                        'offerTermCode': '38NPMPTW36',                                                        'priceDimensions': {'24GRA8RB2KZ9NPCS.38NPMPTW36.2TG2D8R56U': {'appliesTo': [], 'description': 'Upfront Fee', 'pricePerUnit': {'USD': '374227'}, 'rateCode': '24GRA8RB2KZ9NPCS.38NPMPTW36.2TG2D8R56U', 'unit': 'Quantity'},                                                                            '24GRA8RB2KZ9NPCS.38NPMPTW36.6YS6EN2CT7': {'appliesTo': [],                                                                                                                       'beginRange': '0',                                                                                                                       'description': 'Windows with SQL Server Enterprise (Amazon VPC), m4.16xlarge reserved instance applied',                                                                                                                       'endRange': 'Inf',                                                                                                                       'pricePerUnit': {'USD': '14.2400000000'},                                                                                                                       'rateCode': '24GRA8RB2KZ9NPCS.38NPMPTW36.6YS6EN2CT7',                                                                                                                       'unit': 'Hrs'}},                                                        'sku': '24GRA8RB2KZ9NPCS',                                                        'termAttributes': {'LeaseContractLength': '3yr', 'OfferingClass': 'standard', 'PurchaseOption': 'Partial Upfront'}},...
复制代码


阅读使用 AWS 价目表 API 以了解有关这些函数及其返回数据的更多信息。


现在提供


新增函数现已推出,您可以开始在美国东部 (弗吉尼亚北部)和亚太 (孟买) 区域使用它们来访问所有公有 AWS 区域和 AWS GovCloud (美国) 的元数据和价格列表,它们是免费的。


要查看如何使用这些函数的真实示例,请在 AWS 管理工具博客上查看新博客文章通过月度预算策略来控制预计用户成本


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/aws-price-list-api-update-new-query-and-metadata-functions/


2019-11-07 08:00749

评论

发布
暂无评论
发现更多内容

Docker网络学习第四篇-Namespace通信实战

Lazy

Docker Linux 网络

干货分享丨玩转物联网IoTDA服务系列五-智能家居煤气检测联动

华为云开发者联盟

人工智能 物联网 IoT 智能设备 华为云

阿里取消周报,打击低效加班!HR透露6大原因!

程序员生活志

阿里 周报

架构师Week7作业2

Nan Jiang

POI内存溢出故障排查

Season

JVM POI jvm调优

我的 20 条工作原则

霍太稳@极客邦科技

成长 知识管理 职场成长

Redis系列(六):你说要看Redis线程模型?安排

z小赵

redis 高并发

四十个鹏城春夏,一场数字繁花

脑极体

SpringBoot教程:MyBatis多数据源配置

Bruce Duan

mybatis SpringBoot 2 多数据源配置

程序设计的一种思路:DDD

再见小飞侠

方法论 DDD 软件设计

余生很贵,请别浪费

程一初

Python

压测工具试验

独孤魂

揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇

vivo互联网技术

vue.js 中台 Vue 业务中台

Python Kafka 报错:ImportError: cannot import name 'KafkaConsumer'

BigYoung

Python kafka importerror 报错

1. 初识Jackson -- 世界上最好的JSON库

YourBatman

json Jackson Fastjson

眼见为实,华为鲲鹏架构服务器生态大揭秘

华为云开发者联盟

华为 鲲鹏920 服务器 云服务 华为云

读《我们为什么要去火星》随笔

Jackchang234987

产品 人生 读书 随笔杂谈

性能优化概述

superman

22种超全用户触点采集,易观方舟SDK又更新了

易观大数据

BIGO技术:全球时钟同步服务建设

InfoQ_3597a20b53cc

互联网

【架构训练 Week07 作业】

Rex

信创舆情一线--两部门发文加强对数字货币等新型权益的保护

统小信uos

多云架构下,JAVA微服务技术选型实例解析

华为云开发者联盟

Java 开源 微服务 云服务

PromiseKit 源码阅读

fuyoufang

List 如何一边遍历一边删除

Bruce Duan

List删除元素

架构师Week7作业1

Nan Jiang

如何优雅的实现一个过滤器

废材姑娘

spring

GitHub宣布已将所有代码永久封存于北极地底1000年!网友炸锅了:我写的bug终于能流传永世了!

程序员生活志

GitHub 程序员

云上自动化 vs 云上编排

华为云开发者联盟

云计算 云原生 云服务 云主机 华为云

SpreadJS 纯前端表格控件应用案例:雷鸟365在线文档系统

葡萄城技术团队

大前端 SpreadJS 在线文档

B站新一代golang规则引擎的设计与实现

calo

B站 高并发 AST 规则引擎 Go 语言

AWS 价目表 API 更新 – 新增查询和元数据函数_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章