【问题标题】:Invoking a Lambda function from another Lambda Function Inside of a VPC从 VPC 内的另一个 Lambda 函数调用 Lambda 函数
【发布时间】:2018-10-11 21:59:26
【问题描述】:

过去几个小时我一直在调试、配置和你的名字,我似乎无法弄清楚为什么会发生这种情况。

我正在尝试调用一个 lambda 函数,该函数只是从 ec2 中检索基本信息。当我在 aws 控制台中测试这个 lambda 函数时,它似乎工作正常。但是,在另一个 lambda 中调用它,使用以下代码;

    BasicAWSCredentials awsCreds = new BasicAWSCredentials("key1" , "key2");
    AWSLambdaClientBuilder builder = AWSLambdaClientBuilder.standard()
            .withRegion("eu-west-1")
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds));
    AWSLambda client = builder.build();

    InvokeRequest req = new InvokeRequest()
            .withFunctionName("GetWhateverIneed");
    InvokeResult result = client.invoke(req);

它只是超时。没有任何响应...两个 Lambda 都连接到 VPC 和所有子网

我认为是我的新 VPC 导致了这个问题。我的 VPC 包括:

1 个 VPC。
-2x 子网(1x 私有与 ipv4 10.0.0.0/17,1x 公共与 ipv4 10.0.128.0/17)。
-1x IGW 连接到私有子网。
-1x NAT 网关连接到公共子网。
-2x 端点(一个用于 Ec2,一个用于 SecretsManager)

我还配置了两个路由表, 一个用于“公共”子网: “路线”->
目的地:10.0.0.0/16 目标:本地
目标:0.0.0.0/0 目标:我的 Internet 网关(IGW)

一个用于“私有”子网: “路线”->
目的地:10.0.0.0/16 目标:本地。
目的地:0.0.0.0/0 目标:我的国家

我已确保我的两个 Lambda 都在同一个 VPC 上运行,它们都使用同一个安全组:

这是我第一次使用 VPC,所以我可能遗漏了一些东西。

【问题讨论】:

  • Lambda 函数应附加到您的私有子网。
  • 为什么是我的私有子网?
  • 值得一读的文档:docs.aws.amazon.com/lambda/latest/dg/vpc.html#vpc-configuring。引用:重要 - 如果您的 Lambda 函数需要 Internet 访问权限,请不要将其附加到公共子网或没有 Internet 访问权限的私有子网。相反,仅将其附加到通过 NAT 实例或 Amazon VPC NAT 网关访问 Internet 的私有子网。
  • 我确实做到了。
  • 您可以使用简单的用户数据脚本将 EC2 启动到 Lambda 的子网和安全组中,该脚本使用 curl 访问公共网站。如果它有效,那么问题是特定于您的 Lambda。如果它不起作用,那么您的互联网路线就是问题所在。

标签: amazon-web-services aws-lambda aws-sdk amazon-vpc


【解决方案1】:

如果您的 Lambda 函数附加了 VPC,则它需要能够通过您的 VPC 与 AWS API 进行通信。 Lambda 不会通过网络与其他 Lambda 对话,它们会使用 AWS API 或 API 网关发起请求,然后将请求传递给 Lambda 函数。

如果您需要一个附加 VPC 的 Lambda 来启动另一个 Lambda,它需要能够通过互联网访问 AWS API 或 API Gateway。或者,您可以通过将 VPC Endpoint 添加到 API Gateway Service 来将其全部保存在专用网络上。

在我之前的这篇文章中描述了我在类似情况下遵循的模式:https://stackoverflow.com/a/43969112/6427978

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2019-07-01
    • 2018-10-26
    • 1970-01-01
    相关资源
    最近更新 更多