原始 AWS 价目表 API (如新增 – AWS 价目表 API中所述) 使您可以通过结构化 URL 访问 JSON 和 CSV 形式的价格。虽然这对某些类型的成本管理工具很有效,但文件的大小和复杂性使得它们难以下载,而且难以解析。今天,我们将要通过添加新函数来更新 API,使您可以执行精细价格查询,从而仅返回您需要的价格。这将使您能够在移动应用程序和基于浏览器的应用程序中使用这些价格。
新增函数
下面是新增函数:
DescribeServices
– 返回用于定义服务中的产品的属性键集合。例如,为 EC2 返回的键将包括 physicalProcessor、memory、operatingSystem、location 和 tenancy。
GetAttributeValues
– 返回给定属性键的所有允许值。例如,operatingSystem 键的值包括 Windows、RHEL、Linux 和 SUSE;location 键的值包括 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 技术博客。
原文链接:
更多内容推荐
Amazon Forecast 现在支持按您选择的分位数生成预测
Forecast 在 re:Invent 2018 大会上推出并从 2019 年 8 月起全面开放,是一项完全托管的服务
加餐 04|谈谈容器云与和 CaaS 平台
在当今容器化呼声越来越高的场景下,容器云平台呼声也是越来越高,这节课我们就简单了解一下CaaS。
2023-01-09
中国金融科技权威盛会点赞了这个来自 AWS 的金融行业解决方案
Amazon Web Services (AWS) 金融解决方案在 2020 中国金融科技年会暨第十一届金融科技及服务优秀创新奖颁奖典礼上,荣获业内创新大奖。
2021-01-09
AWS Inspector
介绍一个AWS的安全类服务 - Amazon Inspector
2022-07-14
利用 Slack 和 AWS AppStream2.0 集成进行 AppStream2.0 Fleet 队列管理
该博客着重介绍了一种方法,该方法可用于使用协作工具Slack直接地触发AppStream2.0按需扩展规模,而无需使用API或登录AWS控制台。这使管理员和用户的工作更加轻松的管理AppStream2.0。
06|调用模型:使用 OpenAI API 还是微调开源 Llama2/ChatGLM?
在 LangChain 中使用自己微调的模型是完全没问题的。
2023-09-18
39|GitOps 最佳实践,ArgoCD 凭什么脱颖而出?
ArgoCD 能在众多 CD 工具中脱颖而出,除了 GitOps 大背景的推动以外,其自身也具备非常多优秀的特性。
2023-03-08
11|省下钱买显卡,如何利用开源模型节约成本?
利用开源模型节约成本
2023-04-06
开始在 Amazon Web Services 上使用 R
本文将讨论 R 的基本知识和 AWS 上 R 的常见工作负载对。
借助 Amazon S3 实现异步操作状态轮询的 Serverless 解决方法
本文提出了一个将轮询重定向到Amazon Simple Storage Service(S3)的解决方案,会展现一个使用AWS Lambda函数的Serverless实现,但是如果你想使用S3的话,并不强制要使用AWS Lambda函数。
隐藏云 API 的细节,SQL 让这一切变简单
API可以告诉你有关云基础设施的一切,但它们难以使用……
适用于 Amazon Aurora Serverless 的数据 API
如果您曾经写过访问关系数据库的代码,那您肯定轻车熟路。
AWS 发布新的 PowerShell 自定义运行时
AWS发布了一个新的PowerShell自定义运行时,可让AWS Lambda运行使用PowerShell编写的Lambda函数。
利用 AWS Price List API 生成中国区的 EC2 价格表
企业客户在上云的实践过程中,一般都要经历系统迁移入云和云上运维优化这两个重要的阶段,且云上的优化是需要定期不停的做下去的,以达到持续降低成本、优化资源的使用率,以最小的成本、最大的资源利用率来保证业务系统稳定的运行,并能够根据业务系统的实际使用量来分配资源(减低配置或者扩容)。
AWS CEO 再回应:不会从亚马逊剥离,可能会继续收购
其多年来已经投资了数十家小公司。
18|内置数据类型包括哪几种?
2022-11-23
01|重新出发,让我们学会和 AI 说话
详解OpenAI提供的大语言模型能干什么?带你注册账号,生成调用大语言模型的API Key。
2023-03-20
利用 AWS Lake Formation 探索元数据:第 1 部分(一)
数据湖是一种用于创建单个存储库以存储和分析结构化和非结构化数据的日益流行的方法。
Amazon 发布 CLI v2,包含了 SSO 和交互式特性
Amazon发布正式版本的AWS CLI v2。
AWS DataSync 支持在 AWS、Google Cloud 和 Azure 之间移动数据
亚马逊最近宣布,AWS DataSync现在支持将Google Cloud Storage和Azure Files存储作为存储位置。数据服务的这两个新选项有助于数据在AWS中的移入和移出,但数据传输费用可能仍然是一个限制条件。
推荐阅读
2. 复杂查询:JOIN API 定义
2023-09-26
11-FastDFS 部署与使用
2023-09-28
亚马逊云科技宣布 Lambda 分级定价
AWS Lambda 现可支持 Node.js 18 运行时
WordPress 基于亚马逊云的部署实践(二)- 资源申请
2023-11-19
38. 购物车 (1)
2023-09-30
Python 模块:创建、导入和使用
2023-10-29
电子书
大厂实战PPT下载
换一换 翟周伟 | 京东 技术总监
王宝元 | 华为终端 终端云服务应用生态BU 快应用技术总监
张倩 | 腾讯云 数据库专家工程师
推荐阅读
2. 复杂查询:JOIN API 定义
2023-09-26
11-FastDFS 部署与使用
2023-09-28
亚马逊云科技宣布 Lambda 分级定价
AWS Lambda 现可支持 Node.js 18 运行时
WordPress 基于亚马逊云的部署实践(二)- 资源申请
2023-11-19
38. 购物车 (1)
2023-09-30
Python 模块:创建、导入和使用
2023-10-29
评论