我最近一直在努力从头开始创建 CentOS 6.4 Amazon 机器映像 (AMI),以用作在 EC2 上运行 Postfix 电子邮件服务的基础映像。为了学习该过程,我首先使用 EC2 API 的ec2-import-volume
命令导入我构建的磁盘映像。
在多次尝试从我上传的图像中注册和运行 AMI 失败后,为了降低使用成本,我从这些上传中删除了不再需要的几 GB 文件。
在此过程中,我一直在密切关注我的 AWS 成本,最近注意到我每天都在累积无法解释的 S3 请求费用。
今天,我发现我的账单比我预期的要高出约 30 美元,于是我下载了一份使用报告进行调查。它显示了数百兆字节的请求仅限今天到空的我使用的桶一天多以前使用导入命令。
由于不明白这些请求来自何处,我为该存储桶启用了 S3 日志记录并等待日志出现。结果日志出现了……有几兆字节,全部显示几天前通过 import 命令上传到 S3 的部分的 HEAD 请求,并且来自ec2-54-244-xxx-xxx.us-west-2.compute.amazonaws.com
类似 的用户代理JetS3t/0.8.0 (Linux amsz-x.x.x.x; amd64; JVM 1.6.0_20)
。
一些背景信息:
- 我是唯一有权访问问题桶的人
- 当请求发生时,我没有运行 EC2 实例或任何与 S3 相关的东西
- 记录的请求中的用户代理没有描述我所认识的实例
所有这些请求都是在哪里生成的?
答案1
由于在 AWS 控制台中看不到任何内容,我怀疑ec2-import-volume
EC2 API 工具中的命令可能是罪魁祸首,并找到了相关的ec2-describe-conversion-tasks
。
执行此操作显示两个待办的和两个已到期这些任务显然一直在尝试转换我已删除的磁盘映像数据,并这样做一遍又一遍地。
发出此命令ec2-cancel-conversion-task
会终止生成 30 美元 HEAD 请求的进程。转换系统似乎缺乏任何逻辑来智能处理由删除的磁盘映像数据引起的 404。也许需要进行一些改进和提供更好的文档。