如何使用 aws cli 获取 ec2 实例详细信息和价格详细信息

问题描述 投票:0回答:4

如何获取 ec2 实例详细信息(如名称、id、类型、区域、卷、平台、按需/预留)以及实例价格详细信息。

在cli中使用aws api并将其写入csv文件。

提前致谢。

amazon-web-services amazon-ec2
4个回答
7
投票

类似于我在这里的回答:以编程方式获取 ec2 定价?

您可以执行类似于以下操作:

aws pricing get-products --service-code AmazonEC2 --filters "Type=TERM_MATCH,Field=instanceType,Value=m5.xlarge" "Type=TERM_MATCH,Field=location,Value=US East (N. Virginia)" --region us-east-1 | jq -rc '.PriceList[]' | jq -r '[ .product.attributes.servicecode, .product.attributes.location, .product.attributes.instancesku?, .product.attributes.instanceType, .product.attributes.usagetype, .product.attributes.operatingSystem, .product.attributes.memory, .product.attributes.physicalProcessor, .product.attributes.processorArchitecture, .product.attributes.vcpu, .product.attributes.currentGeneration, .terms.OnDemand[].priceDimensions[].unit, .terms.OnDemand[].priceDimensions[].pricePerUnit.USD, .terms.OnDemand[].priceDimensions[].description] | @csv'

2
投票

我建议您将

ansible
ec2-inventory
一起使用来执行此操作。

Ansible 将能够使用如下请求获取所有这些信息:

然后你就可以拥有这样的平台:

ansible -i ec2.py -m debug -a "var=ec2_platform"  all

您必须在 yaml 中创建一个脚本来获取您需要的信息并将其写入 csv 文件中。

我不知道有什么简单的方法可以获取 amazon-ec2 服务器的确切价格,需要考虑很多参数,操作系统、磁盘空间、服务器类型、是否保留等。 ..

但是我用上面告诉你的内容做了一个很好的近似。

以下是ansible和ec2对动态库存的解释: http://docs.ansible.com/ansible/intro_dynamic_inventory.html

希望有帮助!


2
投票

如果您的目标不是自动奖励您的服务器,您可以通过以下 URL 进行一次尝试: https://aws.amazon.com/fr/ec2/pricing/on-demand/

您需要知道: 服务器类型(例如:m3.large) 预订类型(预订或按需) 操作系统类型(linux、windows、RHEL...) 小时覆盖范围(这取决于您是否在夜间关闭服务器或其他......)

然后你就会得到一个很好的近似奖品。

如果您想了解更多详细信息,您必须查看您的网络和数据活动。而且这不是那么容易计算的...

另一种方法是进入您的定价菜单,查看您的产品说明以了解您过去一个月支付的费用。但如果你想估算新服务器的奖金,这将不起作用。

希望有帮助。


0
投票

扩展@justsomeguy的答案,通过使用

TERM_MATCH
过滤器,我能够以编程方式提取与我在AWS的EC2按需定价页面上看到的相同的定价列表(而不是仅提取以下产品的定价)单实例类型):

aws --region us-east-1 pricing get-products --service-code AmazonEC2 --filters \
 "Type=TERM_MATCH,Field=capacitystatus,Value=Used" \
 "Type=TERM_MATCH,Field=marketoption,Value=OnDemand" \
 "Type=TERM_MATCH,Field=currentGeneration,Value=Yes" \
 "Type=TERM_MATCH,Field=location,Value=Canada (Central)" \
 "Type=TERM_MATCH,Field=operatingSystem,Value=Linux" \
 "Type=TERM_MATCH,Field=marketoption,Value=OnDemand" \
 "Type=TERM_MATCH,Field=servicecode,Value=AmazonEC2" \
 "Type=TERM_MATCH,Field=tenancy,Value=Shared" \
 "Type=TERM_MATCH,Field=operation,Value=RunInstances" \
 | jq -rc '.PriceList[]' | jq -r '[
  .product.attributes.servicecode,
  .product.attributes.location,
  .product.attributes.instancesku?,
  .product.attributes.instanceType,
  .product.attributes.usagetype,
  .product.attributes.operatingSystem,
  .product.attributes.memory,
  .product.attributes.physicalProcessor,
  .product.attributes.processorArchitecture,
  .product.attributes.vcpu,
  .product.attributes.currentGeneration,
  .terms.OnDemand[].priceDimensions[].unit,
  .terms.OnDemand[].priceDimensions[].pricePerUnit.USD,
  .terms.OnDemand[].priceDimensions[].description] | @csv' >  ~/Downloads/aws-ec2-pricing.csv
© www.soinside.com 2019 - 2024. All rights reserved.