【问题标题】:AWS Lambda function can't communicate with EC2 InstanceAWS Lambda 函数无法与 EC2 实例通信
【发布时间】:2017-10-10 22:22:46
【问题描述】:

在 AWS 上,我创建了一个新的 lambda 函数。我向具有策略 AWSLambdaVPCAccessExecutionRole 的 lambda 添加了一个角色。我将 lambda 放置在与我的 EC2 实例相同的 VPC 中,并确保分配给 lambda 和 EC2 实例的安全组具有由 AWS 创建的相同默认 VPC 安全组,该安全组允许 vpc 内的所有流量。在我的 EC2 实例上,我在端口 8080 上运行了一个 tomcat 应用程序。我尝试通过 lambda 函数中的两种方法访问 URL:

  1. 使用我的负载均衡器,它具有相同的分配安全组
  2. 用 8080 端口访问 EC2 盒子的 IP 地址

这两个选项都不适用于 lambda 函数。我在本地电脑上试了一下,没问题。

有什么建议吗?

入站安全组

  • 类型 = 所有流量
  • 协议 = 全部
  • 端口范围 = 全部
  • 来源 = 安全组的组 ID

【问题讨论】:

  • 您是否还创建了服务角色以便 lamda 可以担任该角色? docs.aws.amazon.com/lambda/latest/dg/…
  • 是的,我通过转到角色验证了这一点,然后转到信任关系,单击编辑并在服务下,我有以下内容:“服务”:“lambda.amazonaws.com”
  • 它应该像你描述的那样工作。您能否编辑您的问题并在 EC2 实例上添加入站安全组的配置?
  • 添加到原题中

标签: python amazon-web-services tomcat amazon-ec2 aws-lambda


【解决方案1】:

安全组 8080 端口是否开放互联网?

要将 Lambda 与 VPC 连接,您不能使用默认 VPC,您必须使用 nat 网关创建一个。

编辑:仅当 Lambda 功能需要访问互联网和 VPC 时。

【讨论】:

  • 已对外开放。但是,为什么我需要在互联网上打开它?我只是想让它与在同一个 VPC 中运行的 EC2 通信
  • 所以我有你列出的内容,但它不是路由到 NAT 网关,而是将所有流量路由到我的互联网网关。所以它已经是面向外部的了。
  • @AshwinJacob 您确实需要一个 NAT 设备,然后 VPC 内的 Lambda 函数才能访问 Internet,但由于您没有尝试访问 Internet,因此此答案不相关到您要解决的具体问题。当然,您可以使用添加到默认 VPC 的子网来执行此操作。
  • 没错,我认为 Lambda 函数想要访问 VPC 和 Internet。您看到 CloudWatch 日志了吗?
猜你喜欢
  • 2021-08-25
  • 2022-11-16
  • 2018-04-18
  • 1970-01-01
  • 2017-06-23
  • 2019-06-26
  • 2019-11-10
  • 2020-03-14
  • 1970-01-01
相关资源
最近更新 更多