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

AWS Spot数据馈送订阅已激活但S3存储桶始终为空

AWS Spot数据馈送激活后S3存储桶无数据的排查方案

问题背景

已成功配置AWS Spot数据馈送订阅,执行aws ec2 describe-spot-datafeed-subscription返回如下结果(存储桶及OwnerID已修改):

{
    "SpotDatafeedSubscription": {
        "Bucket": "my-bucket",
        "OwnerId": "000000000000",
        "Prefix": "datafeed",
        "State": "Active"
    }
}

配置运行近一个月,存储桶内始终无数据生成。已设置存储桶为Bucket owner preferred,且按文档要求在ACL中添加了AWS外部账户,存储桶仍为空。


排查步骤

  • 确认Spot实例活动情况
    Spot数据馈送仅在Spot实例发生中断、终止、价格调整等事件时才会生成数据。如果这段时间你的账户没有运行任何Spot实例,或未触发上述事件,自然不会有数据写入。可通过以下命令验证:

    # 查看Spot实例请求状态
    aws ec2 describe-spot-instance-requests
    # 查看当前运行的Spot实例
    aws ec2 describe-instances --filters "Name=instance-lifecycle,Values=spot"
    
  • 核对存储桶权限细节

    • 检查ACL中添加的AWS外部账户是否具备s3:PutObject权限,且无Bucket Policy覆盖该权限。可通过命令查看Bucket Policy:
      aws s3api get-bucket-policy --bucket my-bucket
      
      若存在拒绝策略,需确保其未阻止Spot数据馈送账户的写入操作。
    • 确认Bucket owner preferred设置未引发所有权冲突,但该配置仅影响对象归属,不直接阻止数据写入。
  • 检查前缀路径是否正确
    配置中的Prefix为datafeed,数据会写入s3://my-bucket/datafeed/路径下,需进入该子目录查看,而非存储桶根目录。可通过命令验证:

    aws s3 ls s3://my-bucket/datafeed/
    
  • 验证区域一致性
    Spot数据馈送是区域级配置,需确保订阅创建的区域与Spot实例运行的区域完全一致。可通过命令确认订阅区域:

    aws ec2 describe-spot-datafeed-subscription --region <你的订阅区域>
    

    对比Spot实例所在区域,若不匹配,数据不会写入目标存储桶。

  • 通过CloudTrail排查写入尝试
    启用CloudTrail追踪目标存储桶的s3:PutObject操作,搜索源账户为Spot数据馈送官方账户的记录,查看是否存在写入失败(如权限拒绝)的情况,以此定位具体问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:02:36