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

使用WinSCP .NET PowerShell脚本上传S3失败:需指定目标存储桶

解决WinSCP PowerShell脚本上传AWS S3时的目标存储桶指定问题

日志中的Specify target bucket错误明确说明:你的脚本未正确指定目标S3存储桶。当前的PutFiles调用仅指定了文件名,没有关联到具体的存储桶,导致WinSCP无法确定上传目标位置。

两种正确指定存储桶的方式

方式1:在SessionOptions中预定义存储桶

直接在会话配置中添加S3BucketName属性,后续上传路径只需指定桶内的文件/目录路径:

# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::S3
    HostName = "XXX.s3.amazonaws.com"
    UserName = "AAAA"
    Password = "BBB"
    S3BucketName = "your-target-bucket-name" # 新增:指定目标存储桶名称
}

$session = New-Object WinSCP.Session

try
{
    $session.SessionLogPath = "C:\Temp\Training DB\log.txt"
    $session.Open($sessionOptions)

    # 上传文件到存储桶根目录,相对路径即可
    $transferResult = $session.PutFiles("C:\path\Training_Employees.csv", "./Training_Employees.csv")
    # 显式检查上传错误
    $transferResult.Check()
}
finally
{
    $session.Dispose()
}

方式2:在PutFiles目标路径中直接包含存储桶

如果不想在会话配置中固定存储桶,可以在目标路径开头加上存储桶名称(使用绝对路径格式,以/开头):

# 其他会话配置保持不变
$session.PutFiles("C:\path\Training_Employees.csv", "/your-target-bucket-name/Training_Employees.csv")

额外注意事项

  • 确认存储桶名称拼写完全正确,且你的AWS账号拥有该桶的s3:PutObject权限
  • 若使用区域专属存储桶,HostName需对应正确的区域端点(例如your-bucket.s3.us-east-1.amazonaws.com)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:50:32