原始 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 技术博客。
原文链接:
更多内容推荐
01|重新出发,让我们学会和 AI 说话
详解OpenAI提供的大语言模型能干什么?带你注册账号,生成调用大语言模型的API Key。
2023-03-20
Amazon 发布 CLI v2,包含了 SSO 和交互式特性
Amazon发布正式版本的AWS CLI v2。
新增功能 – 在 AWS Organizations 中使用 AWS IAM 访问分析器
今天,AWS宣布,您可以在 AWS Organizations 主账户或者某个代理成员账户中创建分析器
39|GitOps 最佳实践,ArgoCD 凭什么脱颖而出?
ArgoCD 能在众多 CD 工具中脱颖而出,除了 GitOps 大背景的推动以外,其自身也具备非常多优秀的特性。
2023-03-08
使用 Amazon Timestream 存储和访问任何规模的时间序列数据
Amazon Timestream 现已全面开放。
云原生时代的强强联合:EMQ 映云科技正式加入 AWS 合作伙伴计划
近日,EMQ 映云科技正式加入 AWS 合作伙伴网络 (AWS Partner Network,以下简称 APN) ,成为 AWS(亚马逊云科技)官方认证合作伙伴。
2021-10-18
亚马逊云科技宣布 Lambda 分级定价
分级定价可以减少在Lambda上运行大型工作负载的月度成本。
利用 AWS Lake Formation 探索元数据:第 1 部分(一)
数据湖是一种用于创建单个存储库以存储和分析结构化和非结构化数据的日益流行的方法。
借助 Amazon S3 实现异步操作状态轮询的 Serverless 解决方法
本文提出了一个将轮询重定向到Amazon Simple Storage Service(S3)的解决方案,会展现一个使用AWS Lambda函数的Serverless实现,但是如果你想使用S3的话,并不强制要使用AWS Lambda函数。
09|语义检索,利用 Embedding 优化你的搜索功能
语义检索,利用Embedding优化你的搜索功能
2023-04-03
06|调用模型:使用 OpenAI API 还是微调开源 Llama2/ChatGLM?
在 LangChain 中使用自己微调的模型是完全没问题的。
2023-09-18
4、使用 Elastic Search 构建搜索服务
2023-09-26
11|省下钱买显卡,如何利用开源模型节约成本?
利用开源模型节约成本
2023-04-06
Identity and Access Management
介绍AWS的身份认证和访问管理服务
2022-09-24
利用 Slack 和 AWS AppStream2.0 集成进行 AppStream2.0 Fleet 队列管理
该博客着重介绍了一种方法,该方法可用于使用协作工具Slack直接地触发AppStream2.0按需扩展规模,而无需使用API或登录AWS控制台。这使管理员和用户的工作更加轻松的管理AppStream2.0。
AWS 发布新的 PowerShell 自定义运行时
AWS发布了一个新的PowerShell自定义运行时,可让AWS Lambda运行使用PowerShell编写的Lambda函数。
AWS 的运营管理类服务
AWS管理运营类典型服务
2022-06-20
AWS DataSync 支持在 AWS、Google Cloud 和 Azure 之间移动数据
亚马逊最近宣布,AWS DataSync现在支持将Google Cloud Storage和Azure Files存储作为存储位置。数据服务的这两个新选项有助于数据在AWS中的移入和移出,但数据传输费用可能仍然是一个限制条件。
Amazon FSx for Windows File Server 支持
AWS DataSync可帮助您将大量数据移入和移出 AWS 云。
隐藏云 API 的细节,SQL 让这一切变简单
API可以告诉你有关云基础设施的一切,但它们难以使用……
推荐阅读
15|检索增强生成:通过 RAG 助力鲜花运营
2023-10-11
亚马逊云科技公布亚马逊安全湖的预览版本
13.Registry
2023-09-30
AWS Lambda 现可支持 Node.js 18 运行时
Next.js 能处理 5000 个页面吗?
27. 如何把客户的拒绝理由变成购买理由?
2023-10-17
全网最全!实测亚马逊 AI 编程助手 Amazon Q
电子书
大厂实战PPT下载
换一换 姚兴 | 京东集团 信息安全部 总监
杨攀 | 极客邦科技 副总裁、TGO 鲲鹏会总经理
魏诗白 | 快手 基础架构中心/微服务架构师
评论