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

2019 年 11 月 07 日

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 boto3
import json
import 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, operation
OpsWorks: productFamily, servicecode, termType, usagetype, locationType, location, operation, serverLocation, group
mobileanalytics: productFamily, servicecode, includedEvents, termType, usagetype, description, locationType, location, operation
IngestionServiceSnowball: productFamily, fromLocationType, termType, usagetype, locationType, toLocationType, toLocation, snowballType, servicecode, groupDescription, transferType, location, fromLocation, operation, group
IngestionService: productFamily, termType, usagetype, locationType, servicecode, groupDescription, dataAction, location, operation, group
ElasticMapReduce: productFamily, softwareType, instanceType, termType, usagetype, locationType, instanceFamily, servicecode, location, servicename, operation
datapipeline: 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:00 72

评论

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

芯片破壁者(十一):回看日本半导体的倾塌

脑极体

远程办公暴露过程管理的不足

翟志军

管理 软件工程 远程办公

热乎的宇宙条总部面经,已拿offer,速来围观

我是程序员小贱

常见的BI项目问题和解决方案

JackWangGeek

window form自定义控件类型

JackWangGeek

六张图从HTTP/0.9进化到HTTP3.0

执鸢者

前端 网络 HTTP

关于微服务架构(中台架构、领域驱动设计、组件设计原则)的一点思考

jason

SSAS查询性能最佳实践

JackWangGeek

架构师训练营--第10周作业

Just顾

什么是商业智能?

JackWangGeek

有意思:Go函数的闭包

申屠鹏会

go 闭包 函数

链表应用之设计高性能访客记录系统

架构师修行之路

数据结构 链表 架构师

Go make 和 new 的区别

曲镇

go golang make

Dubbo源码分析--dubbo-config配置层的套路

jason

微服务与DDD学习总结

qihuajun

关键绩效指标KPI

JackWangGeek

40张图入门Linux——(前端够用,运维入门)

执鸢者

Linux 前端

Code Review 失败后总结的几个实践技巧

Phoenix

团队管理 团队协作 技术人 代码质量

腾讯一面面试官让我关闭连接

我是程序员小贱

可读代码编写炸鸡十 - 保持单纯

多选参数

代码质量 代码 代码优化 可读代码编写 可读代码

炸裂!40+图万字长文拿下HTTP

我是程序员小贱

计算机网络

数据挖掘

JackWangGeek

微软BI解决方案的优势

JackWangGeek

socket通信,你还会实现么?

小隐乐乐

架构师训练营第十周作业

qihuajun

招银网络问了啥?这么尬?妥妥的安排

我是程序员小贱

我期待,这是个多彩的世界

瓜藤老祖

大三儿 乐队的夏天 九连真人

数据仓库

JackWangGeek

Week 10

一叶知秋

SSIS主要功能

JackWangGeek

Newbe.Claptrap 框架如何实现 Claptrap 的多样性?

newbe36524

容器 微服务 .net core ASP.NET Core

跨越计算鸿沟:如何靠软硬件协同突破算力瓶颈?

跨越计算鸿沟:如何靠软硬件协同突破算力瓶颈?

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