当前位置: 首页 > 知识库问答 >
问题:

我想用Java8调用VPC中的AWS lambda到同一地区和帐户中的另一个没有VPC的AWS lambda

杨阳飇
2023-03-14

希望将一个位于VPC中的AWS lambda连接到另一个不在VPC中但位于同一区域和帐户中的lambda。

>

  • 调用方lambda“lambda_1”的代码:

    @override public String handleRequest(final Object input,final Context Context){logger.log(Context.getFunctionName()+“invoked”);

    final AWSLambda client = AWSLambdaClientBuilder.standard().withRegion(Regions.EU_WEST_2).build();
    final InvokeRequest request = new InvokeRequest();
    request.withFunctionName("lambda_2").withPayload("JSON data as String").withInvocationType(InvocationType.RequestResponse);
    
    logger.log("Lambda is about to invoke");
    final InvokeResult response = client.invoke(request);
    
    logger.log(context.getFunctionName() + " returned");
    
    return input.toString();
    

    }

    AWS java sdk for lambda是通过maven依赖项使用的

    <dependency>
          <groupId>com.amazonaws</groupId>
          <artifactId>aws-java-sdk-lambda</artifactId>
        <version>1.11.681</version>
        </dependency>
    
    • 允许:lambda:为lambda_2将invokeFunction赋予lambda_1
      null
        logger.log(context.getFunctionName() + " invoked");
    
        logger.log(context.getFunctionName() + " returned");
    
        return input.toString();
    

    }

    • 为lambda_1创建日志,直到Lambda将要调用行,执行才会继续,而且会增加时间。
    • 已为lambda_1、lambda_2设置了足够的时间和内存,分别为2分钟198 MB和1分钟128 MB。
    • 但无法调用lambda_2并且甚至在运行时没有得到任何类型的错误,请给予帮助,谢谢
  • 共有1个答案

    谯振国
    2023-03-14

    没有进一步日志输出的超时听起来像一个典型的网络问题,我要开始看看那里。

    要到达Lambda服务,呼叫Lambda(以及您的VPC)需要访问Internet,您是否在VPC中有Internet网关或NAT接口/网关?

    或者,您可以通过SNS,而不是直接调用Lambda,这将允许您在VPC中添加SNS接口endpoint,如果将VPC连接到Internet不是一个选项的话。

     类似资料:
    • 甚至,API网关资源策略是这样写的: 和VPCendpoint策略进行完全访问。

    • 我所做的: 我在这些帐户之间创建了VPC对等连接 还连接到每个VPC的Internet网关 路由表也已配置(允许来自两侧的流量) 案例1: “ErrorMessage”:“调用Invoke操作时发生错误(AccessDeniedException):User:arn:aws:sts::Account-a:Assumed-Role/Role-for-VPC-peering-test/lambda1_

    • 在过去的几个小时里,我一直在调试、配置和命名它,我似乎不明白为什么会发生这种情况。 我正在尝试调用一个 lambda 函数,该函数只是从 ec2 中检索基本信息。当我在aws控制台中测试此lambda函数时,它似乎工作正常。但是,使用以下代码在另一个lambda中调用它; 它只是超时了。没有任何反应…两个Lambda都连接到VPC和所有子网 我认为是我的新VPC导致了这个问题。我的VPC包括: 1

    • 有没有办法在AWS帐户中找到未使用的VPC? 我指的是没有任何EC2实例、RDS和其他相关服务的VPC。 一种方法是在正在运行的实例、RDS和其他服务中使用VPC ID进行搜索,以确定它是否在使用中。有没有其他方法或AWS CLI来查找未使用的VPC?

    • 我已经创建了一个专有网络。在同一子网中的该 VPC 内,有两个 ec2 实例。第一个应用程序上有一个已部署的应用程序,第二个应用程序上安装了mysql。我已将应用程序设置为连接到已安装数据库的实例,但没有成功。我将复制安全组配置和数据库配置。如何使这两个实例都进行通信,并且应用程序从第一个实例开始使用第二个实例上的数据库。他们都有公共IP,可以互相ping。 DB连接 安全组有两个安全组,都分配给

    • 在我们公司,我们有三个AWS帐户,主要的一个,用作IAM的“根”帐户,并托管一个OpenVPN访问服务器。另外两个帐户是pro和stg。每一个都有自己的专有网络,具有不同的IP范围,我们在root和pro帐户之间有一个专有网络对等网络,在root和stg之间有另一个专有网络对等网络。IP路由已经设置好,一切都在这方面得到控制。 (很抱歉,我还不能上传图像,所以这里有链接)VPN VPC对等 问题来