You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExAws调用CloudWatch触发sweet_xml MatchError问题求助

从CloudWatch获取EC2 CPU指标时的MatchError问题

代码实现

我用Elixir结合ExAws库编写了获取EC2实例CPUUtilization指标的代码:

defp fetch_and_save_metrics do
  end_time = DateTime.utc_now()
  start_time = DateTime.add(end_time, -5 * 60, :second)

  opts = [
    {:statistics, ["Maximum"]},
    {:dimensions, [{"InstanceId", @instance_id}]}
  ]

  case ExAws.Cloudwatch.get_metric_statistics(
         "AWS/EC2",
         "CPUUtilization",
         start_time,
         end_time,
         300,
         opts
       )
       |> ExAws.request() do
    {:ok, metric_data} ->
      IO.inspect(metric_data, label: "Raw CloudWatch Response", pretty: true)

    {:error, error} ->
      IO.inspect(error, label: "Raw CloudWatch Response", pretty: true)
end

现象对比

  • 传入未运行的InstanceId时,请求能成功返回,但响应中无指标数据:
Raw CloudWatch Response: %{
body: %{
  label: "CPUUtilization",
  request_id: <some uuid>,
  metric_statistics: []
},
  • 传入运行中的InstanceId时,抛出MatchError错误:
00:09:40.944 [error] GenServer #PID<0.200.0> terminating
** (MatchError) no match of right hand side value: :error
  (sweet_xml 0.7.5) lib/sweet_xml.ex:873: SweetXml.to_cast/3
  (sweet_xml 0.7.5) lib/sweet_xml.ex:630: SweetXml.xpath/3
  (sweet_xml 0.7.5) lib/sweet_xml.ex:737: anonymous fn/3 in SweetXml.xmap/3
  (elixir 1.18.1) lib/map.ex:957: Map.get_and_update/3
  (sweet_xml 0.7.5) lib/sweet_xml.ex:737: SweetXml.xmap/3
  (sweet_xml 0.7.5) lib/sweet_xml.ex:736: SweetXml.xmap/3
  (elixir 1.18.1) lib/enum.ex:1714: Enum."-map/2-lists^map/1-1-"/2
  (sweet_xml 0.7.5) lib/sweet_xml.ex:732: anonymous fn/4 in SweetXml.xmap/3
Last message: :fetch_metrics
State: %{}

依赖配置

项目的依赖如下:

defp deps do
  [
    {:ex_aws, "~> 2.4"},
    {:ex_aws_cloudwatch, "~> 2.0"},
    {:configparser_ex, "~> 4.0"},
    {:hackney, "~> 1.18"},
    {:jason, "~> 1.4"},
    {:sweet_xml, "~> 0.7.5"}
  ]
end

疑问

我已经排查过:

  • 移除所有响应处理逻辑后仍会报错,说明不是自己的响应处理代码问题
  • 使用相同参数通过AWS CLI可以正常获取数据

由于错误栈追踪完全不涉及我的代码,想请教这是不是依赖(比如sweet_xml)的问题?有没有对应的代码修复方案?

内容的提问来源于stack exchange,提问作者7evam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:42:41