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

使用Python os模块调用aws-cli结合jq命令时出现语法错误

问题解决方法

核心错误点及修复步骤

  1. Python导入语句拼写错误
    原代码中iport os是拼写错误,改为import os。

  2. AWS CLI命令参数混乱

    • 移除无效的" -I)片段,这是多余的语法错误内容。
    • 修正时间参数格式:AWS CLI的--time-period不支持直接在参数内做日期运算,需用date命令生成符合要求的ISO格式日期。例如计算2022-10-31加1个月减1秒的日期,使用$(date -d "2022-10-31 +1 month -1 second" +%Y-%m-%dT%H:%M:%S)。
  3. 单引号冲突导致语法错误
    os.system的命令用单引号包裹,内部jq脚本的单引号会提前终止字符串,需将jq脚本内的单引号转义为\'(在Python字符串中,单引号需要转义才能被正确识别)。

  4. jq排序逻辑修正
    原jq脚本中的sort_by(.Amount)无效,因为每个对象的键是服务名称(动态的),需改为sort_by(.[]?.Amount)来根据嵌套的Amount值排序。

修正后的完整代码

import os
os.system('aws ce get-cost-and-usage --profile dev --time-period Start=2022-10-01,End=$(date -d "2022-10-31 +1 month -1 second" +%Y-%m-%dT%H:%M:%S) --granularity MONTHLY --metrics USAGE_QUANTITY BLENDED_COST --group-by Type=DIMENSION,Key=SERVICE | /bin/jq \'[ .ResultsByTime[].Groups[] | select(.Metrics.BlendedCost.Amount > "0") | { (.Keys[0]): .Metrics.BlendedCost } ] | sort_by(.[]?.Amount) | add\' > /tmp/cost.json')

注意事项

  • 如果是macOS系统,默认date命令不支持-d参数,需安装coreutils(brew install coreutils)后使用gdate替代date。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:31:05