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

SingleStore Pipeline执行完成后如何删除S3存储桶中的文件

在SingleStore Pipeline成功执行后删除AWS S3对应文件的方案

SingleStore Pipeline本身没有内置的S3文件删除功能,但可以通过Pipeline加载触发器结合AWS S3操作函数实现这一需求,具体步骤如下:

1. 配置AWS权限

确保SingleStore具备删除目标S3桶文件的权限:

  • 如果SingleStore部署在AWS EC2上,为EC2实例分配带s3:DeleteObject权限的IAM角色;
  • 如果使用Access Key/Secret,创建具备该权限的IAM用户,推荐用SingleStore的CREATE SECRET管理凭证:
    CREATE SECRET aws_s3_delete_creds
    TYPE 'aws'
    IDENTIFIED BY 'access_key_id' VALUE '你的Access Key',
    'secret_access_key' VALUE '你的Secret Key';
    

2. 创建删除S3文件的存储过程

利用SingleStore内置的AWS_S3.DELETE_OBJECT函数编写存储过程,解析文件路径并执行删除:

DELIMITER //
CREATE PROCEDURE delete_s3_source_file(p_file_path VARCHAR(512))
BEGIN
    -- 拆分S3路径为桶名和文件键
    SET @bucket_name = SUBSTRING_INDEX(p_file_path, '/', 1);
    SET @file_key = SUBSTRING(p_file_path, LENGTH(@bucket_name) + 2);
    
    -- 调用S3删除函数(使用已创建的Secret)
    CALL AWS_S3.DELETE_OBJECT(
        @bucket_name,
        @file_key,
        SECRET 'aws_s3_delete_creds'
    );
END //
DELIMITER ;

3. 为Pipeline添加加载成功触发器

在创建或修改Pipeline时,添加AFTER LOAD触发器,指定仅在加载成功时调用上述存储过程,并用内置变量pipeline_filename传递当前处理的S3文件路径:

-- 示例:创建带删除逻辑的Pipeline
CREATE PIPELINE s3_data_pipeline
AS LOAD DATA S3 's3://你的存储桶/数据文件路径/*.csv'
CONFIG '{"region": "你的S3区域"}'
INTO TABLE 目标数据表
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
-- 你的业务数据处理逻辑(如调用自定义存储过程)
TRANSFORM USING 'sp_process_business_logic'
-- 仅在加载成功时触发删除
AFTER LOAD EXECUTE PROCEDURE delete_s3_source_file(pipeline_filename)
WHEN LOAD SUCCESSFUL;

关键注意事项

  • 仅在加载成功时删除:WHEN LOAD SUCCESSFUL确保只有文件被成功加载并处理后才删除,避免数据丢失;
  • 批量文件处理:触发器会对每个成功加载的文件单独执行一次存储过程,无需额外处理批量场景;
  • 权限验证:先手动调用存储过程测试删除单个文件,确认权限配置正确后再绑定到Pipeline;
  • 凭证安全:优先使用IAM角色或SingleStore Secret管理凭证,避免硬编码敏感信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:43:15