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

如何用PHP实现AWS S3 Put操作?改写CopyFrom代码实现桶间传输

用boto3的put方法实现跨S3桶文件传输

注意:你贴出的代码是Python的boto3代码(并非PHP),要将copy_from替换为put方法实现跨桶文件复制,需要调整对象实例类型并正确传递参数,以下是修正后的代码:

# 定义源对象信息,两种格式均支持
# 格式1:字符串形式(更简洁)
move_source = f"{bucket}/{filename}"
# 格式2:字典形式(与原代码格式一致)
# move_source = {"Bucket": bucket, "Key": filename}

# 使用s3.Object而非ObjectSummary,Object实例才支持put操作
var_tgt_obj = s3.Object(dest_bucket.name, path + filename)
# 调用put方法,传入复制源与加密参数
var_tgt_obj.put(
    CopySource=move_source,
    SSEKMSKeyId=kms_key_id,
    ServerSideEncryption="aws:kms"
)

关键说明:

  • 必须使用s3.Object类:ObjectSummary仅为对象的元数据摘要,不提供put操作能力,只有Object实例才能执行写入/复制类操作。
  • CopySource参数兼容两种格式:字符串格式"源桶名/对象键"或字典格式{"Bucket": "源桶名", "Key": "对象键"},boto3均可正确解析。
  • 保留原有KMS加密参数:确保目标对象写入时使用指定KMS密钥进行服务器端加密,与原copy_from的行为保持一致。

常见排查点:

  • 检查IAM权限:执行代码的角色/用户需拥有源桶的s3:GetObject权限、目标桶的s3:PutObject权限,同时需拥有指定KMS密钥的kms:GenerateDataKey和kms:Decrypt权限。
  • 验证路径拼接:确认path + filename生成的目标键格式正确,避免出现多余斜杠或路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:05:02