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

S3跨账号复制配置:源桶对象完成复制后自动删除的实现方法

S3跨账号复制成功后自动删除源桶对象的实现方案

目前有两种经过验证的可行方案,你可以根据自己的业务场景选择:

方案1:S3生命周期规则(无代码、低维护成本,优先推荐)

这是S3原生支持的功能,不需要额外开发服务,具体配置步骤如下:

  • 首先确认你的跨账号复制规则已经开启了复制状态跟踪,开启后源桶对象完成复制后,元数据会自动标记x-amz-replication-status: COMPLETED状态
  • 进入源桶的生命周期管理页面,新建生命周期规则
  • 规则筛选条件选择按对象复制状态筛选,匹配值选「已完成复制(Completed)」
  • 规则动作配置为「永久删除对象」,触发时间设置为对象创建后0天即可,只要对象复制状态变为已完成,就会被生命周期规则自动清理
  • 如果源桶开启了版本控制,需要额外按需配置删除历史版本、清理删除标记的动作

注意:该方案的删除延迟取决于S3生命周期的扫描周期,一般在几分钟到几小时不等,适合对删除实时性要求不高的场景,没有额外运行成本。

方案2:S3事件通知+Lambda函数(低延迟、支持自定义逻辑)

如果需要复制完成后立刻删除,或者要添加额外校验逻辑,可以选择该方案:

  • 同样先确保复制规则开启了复制状态跟踪
  • 为源桶配置事件通知,触发事件选择「复制完成(Replication:OperationComplete)」,触发目标绑定你账号下的Lambda函数
  • 为Lambda配置执行权限,需要包含源桶的s3:DeleteObject权限,以及Lambda基础运行权限
  • Lambda核心逻辑示例(Python):
import boto3
s3_client = boto3.client('s3')

def lambda_handler(event, context):
    for record in event['Records']:
        source_bucket = record['s3']['bucket']['name']
        object_key = record['s3']['object']['key']
        # 若开启版本控制可以传入VersionId参数删除指定版本
        s3_client.delete_object(Bucket=source_bucket, Key=object_key)

注意:该方案删除延迟一般在秒级,支持自定义删除前的校验、日志留存等操作,会产生少量的Lambda运行费用。

两种方案的删除操作都在源账号侧执行,不需要给目标跨账号开放源桶的删除权限,不会产生额外的安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:42:04