【问题标题】:AWS consuming data from API RESTAWS 使用来自 API REST 的数据
【发布时间】:2020-08-19 01:10:33
【问题描述】:

我给你写信是因为我是 AWS 的新手……我以前只使用 EC2 实例来完成简单的任务……

我目前正在寻找一种 AWS 服务,用于使用 REST API 调用(对外部 AWS 服务)接收数据。

到目前为止,我使用了 EC2,在其中部署了我的库 (python),该库在 S3 中进行调用和存储数据。

AWS 为此提供了哪些更有效的方法?一些 SaaS?

我知道他们仍然需要了解更多细节才能选择好的服务,但我想知道从哪里开始寻找。

提前非常感谢:)

【问题讨论】:

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


    【解决方案1】:

    我使用AWS Lambda 发出 API 请求。具体来说,我留下了发出请求、将响应写入文件并将响应对象(文件)推送到 AWS S3 的代码。

    您需要一个相对/绝对路径来将文件推送到您想要提取的任何位置。默认情况下,lambda 服务器当前工作目录是:/var/task,但您可能希望将文件写入/tmp/

    您可以通过设置CloudWatch rule 来触发您的函数来自动执行提取过程。有时,当我需要使用更改参数循环请求而不是将所有请求打包在单个函数中时,我会链接 lambda 函数,

    1. 我将基本请求(参数化)保留在一个函数中,并通过 API 网关端点公开该函数。
    2. 我创建了第二个函数,通过使用 Event 对象(它是常规请求的 JSON 主体)为我需要的每个值调用一次基函数。此数据将替换基本函数中的参数。
    3. 我将第二个功能自动化。

    提示:

    Lambda 有时会在同一台服务器中运行您的请求。因此,如果您不断运行这些以测试服务器,则可能有来自过去调用的文件是您不想要的,所以我通常在我的函数开始时有一个清理步骤,它遍历我的文件系统以确保有在提出请求之前没有文件。

    使用 python 3.8 作为运行时我使用 requests 模块发送请求,我编写文件并使用 boto3 将响应对象推送到 aws S3 存储桶。

    【讨论】:

    • 非常感谢@Aram Maliachi 的回复:) 这对我正在寻找的东西有很大帮助!这个问题听起来很明显,但我可以在 Lambda 中使用我自己的库吗?那么胶水呢?我可以使用 Glue 作为 API 调用者吗?正如我在文档中看到的那样。我可以安排作业并在 S3 中加载调用结果……对吗?谢谢!!
    • 是的,您可以在 Lambda 中使用您的库,您需要使用它们创建一个层,将它们压缩到 ubuntu 机器中是至关重要的。请参阅我在Medium 的帖子。 Glue 是 ETL 的托管服务,我在日常工作中使用它,但我看不出它如何满足您的要求。它不是用于摄取,而是用于 S3 中“已摄取”数据的模式定义和转换。如果您觉得这很有用,请考虑支持我的回复:)
    • @AramMaliachi 我应该在 EC2 中构建层吗?我尝试在 WSL2 上使用 Ubuntu 构建失败。 Unable to import module 'lambda_function': No module named 'pandas'
    【解决方案2】:

    要调用外部服务,您需要一些“计算资源”来运行您的客户端。在 aws 的计算资源下,我们了解 ec2、ecs(docker 容器)或lambda(无服务器 - 我的最爱)

    您的代码已经在 EC2 上运行,因此您应该已经知道无论您选择哪种计算资源,您都需要具有公共子网和 IP 地址的 VPC 来进行出站调用

    【讨论】:

    • 非常感谢@gusto2 的回答!是的..是一个简单的python代码,我正在考虑选择比EC2“更轻”的东西来执行它......我会看看Lambda :) Glue怎么样?也是不错的选择吗?
    猜你喜欢
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2018-05-14
    • 2021-07-17
    • 2021-04-28
    相关资源
    最近更新 更多