新手小商家使用亚马逊ACM证书被意外扣费如何查账单和避免再次发生费用
先跟你交个底,很多刚接触 AWS 的小商家都被 ACM(Certificate Manager)这块的费用搞懵过。ACM 本身是免费的,但如果你用的不是它免费的公共证书,而是上传了自己的证书,或者用了 ACM 私有证书颁发机构(Private CA),那就会开始收费了。我之前也有朋友被账单吓一跳,查了半天才发现是这些隐形消费。
先搞清楚为什么会扣费
ACM 的公共证书完全免费,但你上传自己签发的证书时,费用是这样的:
- ACM 托管自己的证书:免费
- ACM 托管你上传的证书(公有或私有):每证书每月约 7.20 美元
- ACM 私有 CA:每 CA 每月约 756 美元 + 每张证书约 0.86 美元
很多新手在配置 HTTPS 的时候,可能直接上传了自己买的证书或者用 ACM 私有 CA 签发了证书,然后账单就来了。
怎么查账单,一步步来
我直接给你实际操作的方法,不用绕弯子。
第一种:在 Cost Explorer 里查
这是最直观的方式。你先登录 AWS 控制台,搜索 Cost Explorer,进去之后点击 图表视图,然后按 服务 分组,就能清楚看到 ACM 产生了多少费用。
如果你想看更细的维度,比如按证书ARN分组,成本计算器支持标签过滤,你可以这样操作:
进入 Cost Explorer → 启用筛选器 → 资源ARN,然后输入你的证书ARN来查。不过这个功能只在部分 AWS 账户类型中可用,所以得看你账户的状态。
第二种:在账单详情页查
如果你只是想知道最近扣了多少,可以直接进 Billing Dashboard,点击 Monthly Costs,然后按服务筛选 ACM。
如果你想看每笔交易的明细,进 Invoices,点击最近的账单发票,展开后能看到每条记录对应的资源ARN。这对于定位具体是哪个证书在扣费非常有用。
第三种:用 CLI 快速查
有时候不想在网页上点来点去,直接用命令行更快。
# 查看近一个月的 ACM 相关费用
aws ce get-cost-and-usage \
--time-period Start=$(date -d "30 days ago" +%Y-%m-%d),End=$(date +%Y-%m-%d) \
--granularity MONTHLY \
--metrics BlendedCost \
--filter '{"Dimensions":{"Key":"SERVICE","Values":["AWS Certificate Manager"]}}'
# 列出你账户下所有 ACM 证书,方便对账
aws acm list-certificates \
--certificate-statuses ISSUED \
--region us-east-1
# 查看某个具体证书的详细信息,包括ARN
aws acm describe-certificate \
--certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/xxxx-xxxx-xxxx-xxxx
把输出的证书ARN和账单里的对照一下,基本就能定位到是哪张证书在扣费了。
怎么避免再次被扣费
搞清楚问题之后,解决办法就简单了。
方案一:用 ACM 的免费公共证书
这是最省钱的方案。只要你是在 US East (N. Virginia) 或 US West (Oregon) 区域用 ACM,然后配合 CloudFront 或 ALB 使用,完全免费。
操作步骤很直接:
- 在 ACM 控制台点击 Request a certificate
- 选 Request a public certificate
- 输入你的域名,比如
www.yourdomain.com - 选择验证方式,推荐 DNS 验证
- 等 AWS 签发证书后,在 Route 53 里添加对应的 CNAME 记录
- 把证书绑定到你的负载均衡器或 CloudFront 上
整个过程大概几分钟就搞定,而且完全免费。
方案二:删除或移出你不用的证书
如果你发现有些证书已经不用了,赶紧删掉。每删除一张托管证书,下个月就不会再收费了。
# 删除不需要的证书
aws acm delete-certificate \
--certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/xxxx-xxxx-xxxx-xxxx
不过要注意,删除之前先确认这张证书没有被任何服务引用,不然可能会导致你的网站或服务暂时不可用。
方案三:设置预算告警
与其事后发现问题,不如提前设好防线。在 AWS Budgets 里创建一个 ACM 相关的预算,比如每月 10 美元,超过就发邮件或短信提醒你。
# 创建一个 ACM 预算告警
aws budgets create-budget \
--account-id 123456789012 \
--budget file://budget.json \
--notifications-with-subscribers file://notifications.json
budget.json 的内容大概是:
{
"BudgetName": "ACM-Budget",
"BudgetType": "COST",
"TimeUnit": "MONTHLY",
"BudgetLimit": {
"Amount": "10",
"Unit": "USD"
},
"CostFilters": {
"Service": ["AWS Certificate Manager"]
}
}
notifications.json 的内容:
[
{
"Notification": {
"NotificationType": "ACTUAL",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 80,
"ThresholdType": "PERCENTAGE"
},
"Subscribers": [
{
"SubscriberType": "EMAIL",
"Address": "your-email@example.com"
}
]
}
]
这样只要 ACM 费用超过 8 美元(预算的 80%),你就会收到邮件提醒。
方案四:用标签追踪费用
给每个 ACM 证书加上标签,比如 Owner: small-business 或 Project: website,然后在 Cost Explorer 里按标签过滤,可以清楚看到每张证书的归属和费用。
# 给证书打标签
aws acm add-tags-to-certificate \
--certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/xxxx-xxxx-xxxx-xxxx \
--tags Key=Project,Value=website Key=Owner,Value=admin
最后说几句
其实这个问题核心就两点:知道为什么扣费,然后知道怎么管。ACM 本身不贵,但小商家对 AWS 的计费方式不熟悉,很容易就被意外扣了钱。
我的建议是,刚开始用 ACM 的时候,优先用免费的公共证书,配合 Route 53 和 CloudFront 或者 ALB,这样一分钱不花就能搞定 HTTPS。等你规模大了,需要私有证书或者高级功能的时候,再考虑 ACM 私有 CA,但那时候你肯定也更有经验去管理这些费用了。
如果你现在已经有了扣费记录,先别慌,按照上面的步骤查清楚账单,把不用的证书删掉,设好预算告警,下个月基本就不会再有问题了。有问题随时可以再问我。