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

使用AWS PHP SDK跨区域复制S3对象时遇永久重定向错误

解决S3跨区域复制时的永久重定向错误

问题出在你用目标区域(ap-southeast-2)的S3Client执行复制时,SDK默认会用Client的区域去访问源桶,但源桶实际在eu-west-1,导致请求被永久重定向。

你需要在复制操作中明确指定源桶的区域,两种可行方法:

方法一:使用copyObject方法并指定源区域

改用AWS SDK原生的copyObject方法,通过SourceRegion参数指定源桶所在的eu-west-1区域:

$this->userImagesS3->copyObject([
    'Bucket' => $this->s3_bucket,
    'Key' => "users/{$user->id}/faceliveness_reference.jpg",
    'CopySource' => "facelivenesscheck/users/{$user->id}/{$sessionID}/reference.jpg",
    'ACL' => 'BucketOwnerFullControl',
    'SourceRegion' => 'eu-west-1' // 关键:指定源桶区域
]);

方法二:在CopySource中使用带区域的完整路径

如果不想修改方法,也可以在源对象路径里带上源桶的区域endpoint,让SDK直接访问正确的地址:

$this->userImagesS3->copy(
    'facelivenesscheck.s3.eu-west-1.amazonaws.com', 
    "users/{$user->id}/{$sessionID}/reference.jpg", 
    $this->s3_bucket,
    "users/{$user->id}/faceliveness_reference.jpg", 
    "BucketOwnerFullControl"
);

本质上都是让SDK明确源桶不在当前Client的区域,需要去eu-west-1访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:33:12