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

受限环境下HTML邮件中S3存储测试截图可见性方案咨询

解决方案建议:企业防火墙下自动化测试报告的截图访问问题

看起来你这个场景在企业内网里挺常见的——要把带S3存储截图的HTML报告当邮件附件发,又受限于安全政策不能开S3公共访问,还已经有EC2的IAM权限能上传截图,对吧?我来帮你拆解下这两个方案的实操细节,优先帮你搞定不用跟IT反复沟通的选项:

方案2:EC2代理服务(优先推荐,快速落地)

这个方案完全复用你现有的EC2权限,不需要和IT扯皮CloudFront的配置,是当前最省心的选择。具体可以这么做:

  1. 在EC2上搭个轻量代理服务
    用你熟悉的语言写个简单的HTTP服务就行,比如Python的Flask或者Node.js的Express,核心逻辑就是接收截图的S3对象键,用EC2的IAM角色权限去S3拉取图片,再返回给请求方:

    • 举个Python Flask的示例代码:
      from flask import Flask, request, send_file
      import boto3
      from io import BytesIO
      
      app = Flask(__name__)
      s3_client = boto3.client('s3')
      TARGET_BUCKET = "你的S3桶名称"
      
      @app.route('/fetch-screenshot')
      def fetch_screenshot():
          screenshot_key = request.args.get('key')
          if not screenshot_key:
              return "缺少截图对象键参数", 400
          try:
              s3_response = s3_client.get_object(Bucket=TARGET_BUCKET, Key=screenshot_key)
              img_buffer = BytesIO(s3_response['Body'].read())
              return send_file(img_buffer, mimetype='image/png')
          except Exception as e:
              return f"获取截图失败:{str(e)}", 500
      
      if __name__ == '__main__':
          app.run(host='0.0.0.0', port=8080)
      
  2. 修改HTML里的图片引用
    把原来直接指向S3的图片URL,替换成EC2代理服务的地址,比如把https://your-bucket.s3.amazonaws.com/screenshots/test-run-1.png改成http://你的EC2内网IP:8080/fetch-screenshot?key=screenshots/test-run-1.png。只要接收邮件的同事笔记本能访问到EC2的内网IP,打开HTML附件时就能正常加载截图了。

  3. 额外的安全&优化小技巧

    • 可以给代理服务加个简单的API Key验证,避免内网无关请求乱调用
    • 加个缓存逻辑,相同截图请求不用每次都去S3拉,提升加载速度

方案1:CloudFront + S3(备选方案)

如果最终因为企业规范必须走CloudFront,这里给你明确下可行的访问控制策略,方便你跟IT沟通:

  • 用CloudFront Origin Access Control(OAC):这是AWS现在推荐的安全配置,完全不需要开S3公共访问,只允许CloudFront从S3拉取内容。然后搭配以下两种方式控制访问:
    1. CloudFront WAF规则:配置只允许企业内网的IP段访问CloudFront分发,这样外部根本碰不到,符合防火墙要求
    2. Signed URLs/Cookies:给HTML里的图片链接生成带签名的URL,只有持有有效签名的请求才能通过CloudFront拿到S3内容,安全性拉满
  • 这个方案的核心是跟IT确认:是否允许内网访问CloudFront分发,以及是否能配置WAF的IP白名单——这些都是企业IT通常能接受的安全配置,比开S3公共访问靠谱多了。

总结一下:优先冲方案2,快且自主;如果IT有CloudFront的统一管理要求,再用方案1的OAC+WAF组合满足安全政策。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:27:19