使用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
相关产品推荐
相关产品推荐

