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

如何将EC2生成的JSON对象传递至Angular应用?

实现方案详解

方案一:S3存储计算结果 + 前端获取通知/轮询

这是你提到的思路,具体落地可分两种模式:

  • 被动通知模式
    1. 给存储计算结果的S3桶配置事件通知:当EC2上传JSON文件完成时,触发Lambda函数。
    2. Lambda通过AWS SNS或API Gateway WebSocket向前端Angular推送通知,附带结果文件的标识(如文件名、预签名URL)。
    3. Angular收到通知后,直接通过预签名URL下载S3上的JSON文件,或调用接口获取权限后读取。
  • 主动轮询模式
    1. Angular上传文件到S3时,生成唯一关联ID(如UUID),并和文件名一起留存(前端本地存储或后端数据库)。
    2. EC2处理完成后,将JSON文件以关联ID命名(或在文件元数据中写入关联ID)上传到结果S3桶。
    3. Angular定期调用轻量后端接口(如Lambda+API Gateway),传入关联ID查询结果文件是否存在;若存在,接口返回预签名URL,Angular据此下载JSON。

注意:需给Angular配置合法的S3访问权限,推荐用Cognito身份池生成临时凭证,或通过后端生成预签名URL,避免前端暴露密钥。

方案二:API Gateway 实现结果回调/查询

该方案更适配实时性需求或不想依赖S3静态读取的场景,具体步骤:

  1. Angular上传文件到S3时,同时生成唯一请求ID,将请求ID、文件信息一并写入SQS(或通过后端接口存入DynamoDB)。
  2. 搭建API Gateway,创建两个接口:
    • 查询接口:前端传入请求ID,查询计算结果;
    • 回调接口:供EC2上传计算完成后的JSON结果,同时携带请求ID。
  3. EC2完成计算后,调用API Gateway的回调接口,将JSON和请求ID提交到后端(如Lambda),Lambda将结果存入DynamoDB并关联请求ID。
  4. Angular可选择:
    • 定期调用查询接口,根据请求ID获取JSON结果;
    • 改用API Gateway的WebSocket API,Angular建立长连接后,Lambda收到EC2的回调结果时直接推送给前端,无需轮询。

额外优化点

  • 幂等处理:在SQS中开启消息去重,或给上传文件生成唯一哈希值,避免重复触发EC2计算;
  • 状态跟踪:在DynamoDB中记录文件的处理状态(上传中、计算中、完成、失败),前端可直观展示进度;
  • 错误处理:若EC2计算失败,通过同样的通知/查询机制告知前端,避免无限等待。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:33:20