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

使用Boto3调用AWS Transfer服务时,如何查询SFTP传输任务状态?

使用Boto3的start_file_transfer后查询任务状态的最佳实践

当使用Boto3的start_file_transfer方法发起SFTP传输任务后,官方确实没有提供直接通过TransferId查询状态的API,以下是几种实用的最佳实践方案:

  • 通过CloudTrail日志查询事件
    AWS Transfer Family的所有操作都会被CloudTrail记录,传输任务的完成或失败事件(如TransferJobCompleted、TransferJobFailed)会包含对应的TransferId。你可以使用Boto3的CloudTrail客户端查询相关事件,过滤条件设置为事件源transfer.amazonaws.com,并通过TransferId匹配具体任务。
    示例代码片段:

    import boto3
    
    cloudtrail = boto3.client('cloudtrail')
    response = cloudtrail.lookup_events(
        LookupAttributes=[
            {
                'AttributeKey': 'ResourceName',
                'AttributeValue': '你的TransferId'
            },
        ],
        EventSource='transfer.amazonaws.com',
        MaxResults=10
    )
    # 从返回的事件中提取任务状态信息
    
  • 配置SNS通知实时获取状态
    在创建Transfer服务器或配置工作流时,关联SNS主题。当传输任务完成、失败或进入其他状态时,AWS会自动向SNS主题发送包含TransferId和状态详情的通知。你可以订阅该主题,通过邮件、Lambda函数等方式实时接收状态更新,也可以将通知内容持久化到数据库供后续查询。

  • 通过目标存储验证传输结果
    如果传输目标是S3、EFS等AWS存储服务,可以通过检查目标路径下的文件是否存在、文件大小与源文件是否一致,间接验证传输是否成功。这种方法适合简单场景,但无法区分"传输中"和"传输失败"的状态,仅能确认最终结果。

  • 利用Transfer工作流持久化状态
    创建自定义Transfer工作流,在传输任务完成后触发Lambda函数。Lambda函数可以将TransferId、任务状态、完成时间等信息写入DynamoDB或其他数据库,之后就可以通过查询数据库来获取任意任务的状态。这种方案适合需要长期存储和查询任务状态的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:37:10