无S3列表权限且目标路径不存在时如何用WinSCP上传文件到指定S3路径
WinSCP上传S3指定路径无权限/路径不存在问题解决方案
报错根因
- 第一次报错
Access denied:WinSCP默认连接S3时会先请求列出所有Bucket列表,你仅持有指定路径的put object权限,没有全局Bucket列表权限,请求直接被拒绝。 - 第二次报错
路径不存在:将路径写到open语句中时,WinSCP会在连接阶段主动校验目标路径是否真实存在,你场景中的逻辑路径上传前不存在,直接触发连接失败。
可用解决方案
以下脚本行为和你提供的AWS CLI命令完全一致,可正常上传到目标路径触发Lambda流程:
open s3://[my_id]:[my_key]@s3.amazonaws.com -rawsettings S3DefaultRegion="[my_region]" S3SkipBucketList=1 S3SingleBucket="[my_bucket]" put "[source_dir]/file1.csv" /folder1/folder2/file1.csv put "[source_dir]/file2.csv" /folder1/folder2/file2.csv exit
配置说明
S3SkipBucketList=1:跳过连接时的全局Bucket列表查询操作,避免触发无权限报错S3SingleBucket="[my_bucket]":指定当前连接仅操作目标Bucket,WinSCP不会额外请求其他Bucket的相关权限- 上传时直接指定完整的对象键路径,不要在路径末尾加斜杠:S3本身没有真实目录结构,直接上传到指定键路径即可,不需要提前创建前缀目录,也不会触发不必要的路径存在性校验
内容的提问来源于stack exchange,提问作者gbeaven
相关产品推荐
相关产品推荐

