写点什么

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:00788

评论

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

谈一谈使用Python入门量化投资

Regan Yue

量化交易 10月月更

三国与AI,交汇在中原

脑极体

Zookeeper 客户端错误:Packet len8854970 is out of range!

看山

zookeeper 10月月更

架构设计-电商微服务拆分

小智

架构训练营

Leetcode 题目解析:70. 爬楼梯

程序员架构进阶

LeetCode 动态规划 算法题 10月月更

Prometheus 内置函数(一)

耳东@Erdong

Prometheus 10月月更

中软国际用一场自我进化,推动云市场跨入下一幕

脑极体

华为云数据库内核专家为您揭秘MySQL Volcano模型迭代器性能提升千倍的秘密

华为云数据库小助手

GaussDB 华为云数据库 GaussDB(for MySQL)

紧张的336小时53分钟21秒,我等来了字节跳动offer(Java岗)

Java 编程 程序员 架构 面试

区块链与数字化转型携手并进

CECBC

区块链是否正在慢慢演变为中心化的数据库?我们又该如何预防数据中心化?

CECBC

Go 中如何使用结构体标签

baiyutang

golang 10月月更

谈 C++17 里的 Chain of Responsibility 模式

hedzr

设计模式 Design Patterns 职责链模式 c++17 消息分发

Docker环境搭建和使用

Fox666

Docker

【Quarkus技术系列】「云原生架构体系」在云原生时代下的Java“拯救者”是Quarkus,那云原生是什么呢?

码界西柚

云原生 Quarkus 10月月更

REST API 设计:过滤、排序和分页

devpoint

REST API 10月月更

Vue进阶(幺肆肆):(window,parent,opener,top).location.reload方法分析

No Silver Bullet

Vue 页面刷新 10月月更

聊聊产品的使用场景

石云升

场景应用 职场经验 10月月更

linux之xargs使用技巧

入门小站

Linux

看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap

root

Java 程序员 CopyOnWrite;

架构实战营-模块一

瓜子葫芦侠

「架构实战营」

Java8 Lambda表达式与Stream

风翱

Lambda 10月月更

什么是aPaaS?低代码与高生产率的aPaaS和RAD相比如何?

优秀

低代码 aPaaS RAD

对话凡泰极客联合创始人杨涛: 小程序生态市场潜力广阔

FinClip

小程序 金融科技 移动开发

自动驾驶 Lidar 激光雷达 易筋 ARTS 打卡 Week 73

John(易筋)

ARTS 打卡计划

含爱奇艺,小米,腾讯,阿里,享学课堂怎么样

android 程序员 移动开发

023云原生之Kubernetes的存储

穿过生命散发芬芳

云原生 10月月更

央行数字货币已落地,来的太快,机遇在哪?

CECBC

在线字符串长度计算,字符串统计工具

入门小站

工具

你真的会 Prometheus 查询吗?--PromQL 合集

耳东@Erdong

Prometheus PromQL 10月月更

这部分布式事务开山之作,凭啥第一天预售就拿下当当新书榜No.1?

冰河

数据库 分布式 分布式事务 微服务 数据一致性

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