【问题标题】:Making an aws lambda public for use公开 aws lambda 以供使用
【发布时间】:2020-03-05 07:45:20
【问题描述】:

有没有办法向公众公开某些 lambda 函数?我知道这可以通过 API Gateway 完成,但我想避免使用该服务。

基本上我在做一个使用一些boto3 函数的python 脚本。问题是使用其中一些的唯一方法是创建一个会话,该会话在我不想要的代码中包含我的 AWS 凭证。我使用的 lambda 函数不是“不安全的”(它们不与其他任何东西交互),因此将它们公开不会有那么大的问题。

我的计划是能够使用 invoke() 调用带有 boto3 库的 lambda 函数,它只需要函数 nameARN 即可工作(以及 payload)。

另外,您可以直接向 lambda 端点发送 HTTP/HTTPS 请求吗?还是必须通过前面提到的API网关。

【问题讨论】:

  • 您确实需要 API 网关,因为它允许匿名访问。此外,它可以设置为限制吞吐量/调用次数,这样您就不会因为有人调用了您的 API 10^10 次而被唤醒而您为此付费。根据您的用例,小型 EC2 可能更简单、更便宜。
  • 感谢推荐!

标签: amazon-web-services aws-lambda boto3


【解决方案1】:

Lambda 函数只能由“Invoke”API 调用执行。此 API 调用可以通过三个选项进行 -

  1. 通过将另一个 AWS 服务添加为触发器 - API Gateway、S3、CloudWatch 等。
  2. SDK(boto3、Node 等)或 AWS CLI
  3. 通过控制台的“测试”按钮。

要回答您的问题,您可以使用 boto3 并且无需在代码中显式传递您的凭据。如果您在运行 Python 代码的机器上配置了 AWS CLI,则可以创建一个 boto 客户端或会话,如 here 所述。

最后,Lambda 没有 HTTP/HTTPS 端点。将其视为 EC2 实例,但您不知道其 IP 地址(它是 AWS IP ranges 的一部分,但可以是任意值)。通过 HTTPS 端点调用 Lambda 的唯一方法是使用 API Gateway。

【讨论】:

    猜你喜欢
    • 2021-01-21
    • 2019-07-28
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2021-07-22
    相关资源
    最近更新 更多