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

在PowerShell中通过AWS CLI按LaunchTime统计近5天EC2实例数量问题

问题分析与解决

你的代码核心问题在于没有真正过滤实例,只是在--query参数里对每个实例的LaunchTime做了布尔判断,最终返回的是所有实例的ID和对应的判断结果,自然会得到总实例数。另外,统计逻辑也没有针对符合条件的实例做计数。

修正方案

要实现按LaunchTime筛选近5天的EC2实例并统计数量,需要用--filters参数先过滤实例,再通过--query提取数据或直接统计数量。

方案1:提取实例ID后统计数量

$getDays = Get-Date
$5Days = $getDays.AddDays(-5).ToString('yyyy-MM-dd')
# 通过filters筛选近5天创建的实例,再提取实例ID
$instancesCreated = aws ec2 --profile $awsProfile --region $awsRegion describe-instances `
    --filters "Name=launch-time,Values=$5Days-*" `
    --query "Reservations[*].Instances[*].InstanceId" --output text
# 分割文本并统计实例数量
$instanceCount = ($instancesCreated -split "`n").Count
Write-Output "Total instances count in last 5 days : $instanceCount"

方案2:直接用query统计数量(更简洁)

$getDays = Get-Date
$5Days = $getDays.AddDays(-5).ToString('yyyy-MM-dd')
# 过滤后直接用length函数统计实例数
$instanceCount = aws ec2 --profile $awsProfile --region $awsRegion describe-instances `
    --filters "Name=launch-time,Values=$5Days-*" `
    --query "length(Reservations[*].Instances[*].InstanceId)" --output text
Write-Output "Total instances count in last 5 days : $instanceCount"

关键说明

  • --filters "Name=launch-time,Values=$5Days-*":这是实现过滤的核心,AWS会自动匹配以指定日期开头的所有ISO 8601格式启动时间(比如2024-05-20T12:34:56.000Z),精准筛选近5天创建的实例。
  • --output text:让AWS CLI返回纯文本格式,方便PowerShell处理统计。
  • length()函数:在--query中直接计算符合条件的实例ID数组长度,省去后续文本分割步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:09:52