从终端节点获取JSON文件并将其保存到AWS S3

时间:2019-07-30 13:03:30

标签: amazon-web-services amazon-s3 aws-lambda amazon-sqs

我正在尝试找出从特定端点读取JSON文件,然后将此类对象保存/发布到AWS S3的最佳方法。我已经创建了一个模拟端点,并通过https://www.mockable.io/模拟了响应,我想知道将其“ POST”到S3存储桶的最佳方法是什么。每周都会有新的JSON文件可用,我在想,也许可行的方法是使用Lambda AWS和API网关。这是可行的方法吗?我还想探讨启用事件触发方式提取数据或调度程序的可能性。你会推荐什么?我知道可以使用AWS SQS,但是如何将获取的JSON文件发送到队列?

谢谢您,任何资源或建议都值得欢迎。我正在寻找潜在的方法。

2 个答案:

答案 0 :(得分:1)

请考虑使用带有NodeJS代码的Lambda从端点执行GET,以使用cloudwatch事件调用lambda函数

https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/RunLambdaSchedule.html

答案 1 :(得分:1)

您可以使用很多不同的方法来实现此目的,但是如果我理解正确的话,您希望每周从固定端点(您已设置?)检索一次JSON响应,然后将该JSON写入您将文件或文件序列存储在S3上。

如果这是正确的,那么您真正需要的只是Cloudwatch Events(以cron格式设置每周定期发生的定期事件),该事件会触发lambda函数,该函数会发出请求并将其写入S3。您还可以使用相同的lambda函数(或编写另一个由同一CloudWatch Event触发的函数)来使用JSON将消息发布到SQS。

根据您最喜欢用哪种语言编写,可以使用SDK来完成所有您想做的事情。我个人喜欢python库boto3,并结合一个小文件IO将JSON转换为某种文本文件,以及requests库以向端点发出实际的HTTP请求,应该能够做所有您需要的事情。 boto3中的有用功能将是sending a SQS messagewriting to S3

我不确定为什么您一定需要API Gateway在这里做任何事情,除非您不想通过计划的事件触发lambda,而是希望通过发出单独的HTTP请求来做到这一点,但是您也可以只需向原始API发出请求即可!