AWS EC2弹性IP带宽使用和费用

31
我有一个关于弹性IP和其费用的小问题。一些博客说,弹性IP将按照您使用的带宽收费。
弹性IP地址会根据带宽收费,并且在未附加到运行中的实例时每小时收取费用。
来自http://things.zarate.org/scaling-a-single-ec2-instance-and-downsizing 据我所了解,在阅读一些博客和文档后,只有在您使用弹性IP在实例之间进行通信并且在您的帐户上有闲置的弹性IP而没有与您的实例相关联时,您才会被收取费用。
如果您在同一地区使用公共或弹性IP地址进行实例间通信,即使在同一地区,您也需要支付区域数据传输费用(每GB 0.01美元)。

参考http://www.cloudiquity.com/2009/02/using-amazon-ec2-public-ip-address-inside-ec2-network/

请查看AWS计算器截图 -> http://shareimage.org/images/lzjj3eull2ux0lo663fr.png

因此,我的困惑在于是否AWS会对使用弹性IP的任何类型的流量请求(使用浏览器、SSH等)收费?

如果我使用弹性IP(例如8.8.8.8)而不是像ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com这样的公共DNS名称来SSH连接我的实例,那么这个带宽使用量将被注册为简单的出入带宽使用量还是公共/弹性IP带宽使用量?

有一个选项不需要分配弹性IP。 - eQ19
2个回答

82

为了避免混淆,应该将数据传输费用与弹性IP地址费用分开考虑,因为它们是完全独立的:

弹性IP地址

每个实例分配并使用一个弹性IP地址基本上是免费的,只有当弹性IP地址当前未关联到实例时,费用才会产生。详见页面Amazon EC2 Pricing上的弹性IP地址部分:

  • 与正在运行的实例关联的一个弹性IP地址费用为$0.00
  • 每小时获得与正在运行实例相关联的额外弹性IP地址的费用为$0.005,按照比例计算
  • 每小时获得未与正在运行实例相关联的弹性IP地址的费用为$0.005,按比例计算
  • 每月前100次重新映射弹性IP地址不收费用
  • 对于超过每月100次的其他重新映射弹性IP地址,每次重新映射的费用为$0.10

    [我强调了一下]

这种方法背后的原理在相关的FAQ中有解释:为什么我的弹性IP地址没有关联实例时还会被收费?:

为了确保我们的客户有效地使用弹性IP地址,我们对每个未关联到正在运行实例的地址收取小额的每小时费用。

数据传输

在第 Data Transfer 部分(详见 Amazon EC2 Pricing页面并由一些FAQ详细说明),重点解释了以下方面:

您主要支付的是互联网数据传输费用,即从Amazon EC2传输的数据,“进”和“出”,其中明确不包括以下内容:

Amazon EC2与同一地区内的其他Amazon Web Services之间没有数据传输费用(即在Amazon EC2 US West与US West中的Amazon S3之间)。在同一地区的不同可用区中的Amazon EC2实例之间传输的数据将收取区域数据传输费用。在不同地区的AWS服务之间传输的数据将在传输的两端都收取互联网数据传输费用。

注意事项

然而,在该声明下面确实需要注意以下重要的注意事项:

公共和弹性IP地址以及弹性负载均衡数据传输

  • 每字节0.01美元的收入/支出-如果您选择使用公共或弹性IP地址或Amazon EC2网络内的弹性负载平衡器进行通信,则即使实例位于同一可用区域中,您也将支付区域数据传输费用。对于同一可用区内的数据传输,您可以尽可能使用私有IP来避免此费用(并获得更好的网络性能)。

解决方案

上述段落中没有提到一项重要且非常有帮助的AWS DNS基础设施特性,详见公共IP地址和外部DNS主机名

我们为每个具有公共IP地址的实例提供一个外部DNS主机名。我们在实例网络之外将外部DNS主机名解析为实例的公共IP地址,并在实例网络内将其解析为实例的私有IP地址。

在Amazon EC2网络内部,它会将公共DNS(例如ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com)解析为实例的私有IP地址,而在Amazon EC2网络外部使用时,则解析为公网或弹性IP地址。这样一来,您就可以自动获得免费的可用区数据传输和降低收费的区域数据传输,例如,他们积极应用其建议“始终在Amazon EC2实例之间通信时使用内部地址[这样]可以确保您的网络流量通过我们的网络遵循最高带宽、最低成本和最低延迟路径。”

显然,如果直接使用IP地址(即不使用DNS),则此方法无效,在EC2环境中通常最好避免使用直接IP地址的方式。


1
@Steffen Opel,除此之外您的答案非常出色,但有一件事情不太清楚。公共DNS名称规则是否也适用于EIP?即是否可以为给定的EIP生成一个DNS名称并使用它与内部实例通信?在哪个时刻Amazon会自动将EIP DNS解析为EIP,因此节省互联网传输成本?还是唯一的选择是使用EC2实例本身的DNS,而不是基于EIP生成的DNS? - Dev Kanchen
@DevKanchen - 非常好的观点,不幸的是,一旦您分配了EIP,公共DNS名称就会消失而不被替换。这可能/应该是Amazon自己[Route 53](http://aws.amazon.com/route53/)DNS管理的一个特性,但我也在使用它,并且目前它并不提供此功能。想必随着您开始使用AWS(尤其是包括Route 53),要更少地依赖EIPs,例如考虑自动缩放和EC2 spot实例;尽管如此,这肯定是他们应该支持的一个功能。 - Steffen Opel
好的,所以EIP并不是我期望的万能解决方案 :) 感谢提供这些信息。 - Dev Kanchen
2
@DevKanchen - 我需要撤回我的先前评论(因为我自己混淆了Amazon Virtual Private Cloud(VPC)中的不同行为):将_Elastic IP Address(EIP)_与常规(即非VPC)EC2实例相关联确实会像预期的那样更新公共DNS名称(即类似于没有EIP的模式),并且当在EC2内查询时,此公共DNS名称确实正确解析为内部IP地址!对于在这里误导您,我非常抱歉,希望现在您有一个万无一失的解决方案 :) - Steffen Opel
1
作为提示;您可以轻松地测试同一区域/az内节点之间的连接是否使用专用IP地址,方法是发出以下命令:sudo netstat -ntap | grep ESTABLISHED。-p选项使查找有问题的进程变得容易。 AWS控制台列出了公共IP和专用IP。 - Paul Bormans
显示剩余2条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接