# ロググループ・ストリーム・リージョン設定
$logGroup = "/Metrics/Instance"
$logStream = "taitaPC"
$region = "ap-northeast-1"

# 実ディスク使用率取得
$drives = Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3"
$usage = @{}
foreach ($drive in $drives) {
    $letter = $drive.DeviceID.TrimEnd(':')
    $total = $drive.Size
    $free = $drive.FreeSpace
    if ($total -gt 0) {
        $percentUsed = [math]::Round((($total - $free) / $total) * 100)
        $usage[$letter] = $percentUsed
    }
}

# タイムスタンプ(ミリ秒)
$timestamp = [int64]((Get-Date).ToUniversalTime() - [datetime]'1970-01-01').TotalMilliseconds

# メッセージJSONを生成し、CloudWatch用にエスケープ
$messageJson = $usage | ConvertTo-Json -Compress
$escapedMessage = $messageJson -replace '\\', '\\\\\\\\' -replace '"', '\\\"'

# 完全一致形式の文字列を構築
$finalJson = '"[{\"timestamp\":' + $timestamp + ',\"message\":\"' + $escapedMessage + '\"}]"'

# sequenceToken を取得
$response = aws logs describe-log-streams `
  --log-group-name $logGroup `
  --log-stream-name-prefix $logStream `
  --region $region | ConvertFrom-Json

$sequenceToken = $response.logStreams[0].uploadSequenceToken

# CloudWatch Logs に送信
aws logs put-log-events `
  --log-group-name $logGroup `
  --log-stream-name $logStream `
  --log-events $finalJson `
  --sequence-token $sequenceToken `
  --region $region