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

求助:通过PowerShell上传S3时偶尔出现0KB文件的问题

问题排查与解决方案

核心问题分析

你的自动化任务在非7点时段出现S3上传0KB文件、后续归档任务不执行的问题,手动运行脚本正常,说明问题大概率出在任务执行上下文差异、文件生成完整性校验缺失或脚本错误处理不足上。


具体解决步骤

1. 确保源文件生成完成后再触发上传

非7点时段可能存在文件生成未完成就启动上传的情况(比如任务1的写入耗时更长),导致上传空文件。在任务2开头添加文件完整性校验:

$sourceFile = "c:\temp\exportfile.txt"
# 等待文件非空且5秒内大小无变化,确认写入完成
do {
    $prevSize = (Get-Item $sourceFile -ErrorAction Stop).Length
    Start-Sleep -Seconds 5
    $currSize = (Get-Item $sourceFile).Length
} while ($currSize -eq 0 -or $currSize -ne $prevSize)

2. 完善脚本的错误捕获与日志记录

当前脚本没有错误处理,上传失败可能返回错误码但未被捕获,导致任务调度工具误判任务完成。修改脚本添加日志和错误校验:

$KeyID = "###############"
$AccessKey = "################"
$SourceFile = "c:\temp\exportfile.txt"
$Destination = "s3://bucket-name-here/Folder1/Folder2/exportfile.txt"
$logPath = "c:\temp\s3_upload_$(Get-Date -Format 'yyyyMMddHHmmss').log"

# 使用独立配置文件避免污染全局AWS配置
aws configure set aws_access_key_id $KeyID --profile upload-task
aws configure set aws_secret_access_key $AccessKey --profile upload-task

# 执行上传并记录所有输出
aws s3 cp $SourceFile $Destination --profile upload-task *>&1 | Out-File $logPath

# 检查上传退出码,失败则终止后续任务
if ($LASTEXITCODE -ne 0) {
    Write-Error "S3上传失败,详细日志:$logPath"
    exit 1
}

注意:硬编码密钥存在安全风险,建议改用IAM角色(若部署在AWS资源上)或AWS Secrets Manager存储密钥。

3. 添加上传重试机制

非7点时段可能存在网络波动导致上传中断,添加重试逻辑提升稳定性:

$retryMax = 3
$retryDelay = 10 # 秒
$uploadSuccess = $false

for ($i=1; $i -le $retryMax; $i++) {
    aws s3 cp $SourceFile $Destination --profile upload-task *>&1 | Out-File $logPath -Append
    if ($LASTEXITCODE -eq 0) {
        $uploadSuccess = $true
        break
    }
    Write-Host "上传失败,第$i次重试,等待$retryDelay秒..."
    Start-Sleep -Seconds $retryDelay
}

if (-not $uploadSuccess) {
    Write-Error "经$retryMax次重试仍上传失败,日志路径:$logPath"
    exit 1
}

4. 检查任务调度的执行上下文

  • 确认所有时段的任务使用相同用户身份执行,避免权限差异导致的AWS配置读取问题;
  • 检查调度工具(如Windows任务计划程序)的设置:是否勾选了**"只有前一个任务成功完成时才执行此任务"**,确保任务3仅在任务2成功后启动;
  • 对比7点与其他时段的网络环境,确认非高峰时段是否存在S3访问延迟或限流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:01:20