我们在一个相当复杂的项目中使用 S3、SimpleDB 和 SQS。
我希望能够自动跟踪它们的使用情况,以确保我们不会在不打算的时候突然花费大量资金(可能是因为错误)。
有没有办法从脚本中读取所有 Amazon Web Services 的使用数据和/或帐户的当前实时美元成本?
或者任何基于此提供警报的服务或脚本?
我们在一个相当复杂的项目中使用 S3、SimpleDB 和 SQS。
我希望能够自动跟踪它们的使用情况,以确保我们不会在不打算的时候突然花费大量资金(可能是因为错误)。
有没有办法从脚本中读取所有 Amazon Web Services 的使用数据和/或帐户的当前实时美元成本?
或者任何基于此提供警报的服务或脚本?
亚马逊刚刚宣布,您现在可以“为 Amazon CloudWatch监控的任何指标设置警报”(CPU 利用率、磁盘读写以及网络流量等)。此外,所有实例现在都免费提供基本监控。
我们刚刚发布了一项实验室管理服务,它为 AWS 使用添加了策略:时间限制、最大实例数、最大机器大小等。您可能想尝试一下,看看它是否有帮助:http: //LabSlice.com。由于这是一家初创公司,我们非常重视有关如何解决诸如您的问题的反馈(即,如果您认为可以更好地修改应用程序以满足您的要求,请给我发电子邮件)。
我不相信有任何直接的方法可以控制 AWS 成本。我怀疑亚马逊是否提供了一个 API 来深入了解使用情况,因为帮助您降低成本显然不符合他们的利益。实际上,我遇到了两个例子,由于脚本配置错误,公司(银行)会产生意外成本,所以我知道这可能是个问题。
我在 EC2 实例上遇到了同样的问题,但以不同的方式解决了这个问题——我没有监控实例,而是让它们在设定的时间后自动杀死自己。根据您的描述,听起来这在您的环境中可能不实用,但我想我会分享以防万一。我的 AMI 是基于 Fedora 的,所以我创建了以下 bash 脚本,将其注册为服务,并让它在启动时运行:
#!/bin/bash
# chkconfig: 2345 68 20
# description: 50 Minute Kill
# Source Functions
. /etc/rc.d/init.d/functions
start()
{
# Shut down 50 minutes after starting up
at now + 50 minutes < /root/atshutdown
}
stop()
{
# Remove all jobs from the at queue because I'm not using at for anything else
for job in $(atq | awk '{print $1}')
do
atrm $job
done
}
case "$1" in
start)
start && success || failure
echo
;;
stop)
stop && success || failure
echo
;;
restart)
stop && start && success || failure
echo
;;
status)
echo $"`atq`"
;;
*)
echo $"Usage: $0 {start | stop | restart}"
RETVAL=1
esac
exit $RETVAL
您可能会考虑做一些类似的事情来满足您的需求。 如果您这样做,请特别注意在修改映像之前停止服务,以便实例在您有机会重新捆绑之前不会关闭。
如果您愿意,您可以让实例在固定时间关闭(在每个人下班后?),或者您可以通过-d
or-f
参数传入保持活动长度/关闭时间ec2-run-instances
并将其解析到脚本中。