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

节点Lambda AWS TimeouTerror:套接字超时,没有建立到cloudformation的连接

黄正浩
2023-03-14
{"errorType":"TimeoutError","errorMessage":"Socket timed out without establishing a connection","code":"TimeoutError","message":"Socket timed out without establishing a connection","time":"2020-06-29T03:10:27.668Z","region":"us-east-1","hostname":"cloudformation.us-east-1.amazonaws.com","retryable":true,"stack":["TimeoutError: Socket timed out without establishing a connection","    at Timeout.connectTimeout [as _onTimeout] (/var/task/node_modules/aws-sdk/lib/http/node.js:69:15)","    at listOnTimeout (internal/timers.js:549:17)","    at processTimers (internal/timers.js:492:7)"]}

测试事件:

{
  "stackName": "mySuccessfulStack",
  "app": "test"
}

函数我的处理程序调用(createStack):

const AWS = require('aws-sdk');

const templates = {
    "test": {
      TemplateURL: "https://<bucket>.s3.amazonaws.com/<path_to_file>/test.template",
      Capabilities: ["CAPABILITY_IAM"],
      Parameters: {
        "HostingBucket": "test-hosting-bucket"
      }
    }
}

async function createStack(event) {
  AWS.config.update({
    maxRetries: 2,
    httpOptions: {
      timeout: 30000,
      connectTimeout: 5000
    }
  });
  const cloudformation = new AWS.CloudFormation();
  const { app, stackName } = event;
  let stackParams = templates[app];
  stackParams['StackName'] = app + "-" + stackName;
  let formattedTemplateParams = [];
  for (let [key, value] of Object.entries(stackParams.Parameters)) {
    formattedTemplateParams.push({"ParameterKey":key, "ParameterValue": value})
  }
  stackParams['Parameters'] = formattedTemplateParams;
  const result = await cloudformation.createStack(stackParams).promise();
  return result;
}

共有1个答案

权黎昕
2023-03-14

VPC中的Lambda函数不公开IP地址或internet访问。来自文档:

将您的函数连接到专用子网以访问专用资源。如果您的功能需要internet访问,请使用NAT。将函数连接到公共子网不会为其提供internet访问或公共IP地址。

有两种常见的解决方案:

    null
 类似资料:
  • 问题内容: 我正在尝试在两个Java项目之间建立安全连接,但是却遇到了SSLHandshakeException(没有通用密码套件)的问题。这是在两侧创建套接字的方法: 客户: 服务器: 我有一个用keytool生成的RSA密钥。此代码从磁盘加载它。 我做错了什么? 更新: 我在此数组的两侧添加了对setEnabledCipherSuites的调用: 我得到相同的结果。 问题答案: 在服务器端,你

  • 我试图在两个Java项目之间建立安全连接,但我得到了一个SSLHandshakeException(没有共同的密码套件)。这是在双方创建套接字的方法: 客户: 服务器: 我有一个使用keytool生成的RSA密钥。此代码从磁盘加载它。 我做错了什么? 更新:我用这个数组在两边添加了对setEnabledCipherSuites的a调用: 我得到同样的结果。

  • 问题内容: 我正在编写一个简单的程序,该程序将多个连接连接到不同的服务器以进行状态检查。所有这些连接都是按需构建的;最多可以同时创建10个连接。我不喜欢“每个套接字一个线程”的想法,因此我将所有这些客户端套接字都设置为“非阻塞”,然后将其放入select()池中。 效果很好,直到我的客户抱怨目标服务器停止响应时,等待时间太长才能获得错误报告。 我已经在论坛中检查了几个主题。有人建议可以使用alar

  • 在套接字最终接受另一端消失的情况下,什么指定了这个超时?是操作系统(Ubuntu 11.04),还是来自TCP/IP规范,还是套接字配置选项?

  • 我正在使用flutter socket io与运行Node/Express的服务器通信。 服务器代码: 我的扑动代码: 当我尝试连接时,我会得到一个超时错误,该错误在OnConnectRetror中捕获。 节点服务器正在运行debian,我已经检查了防火墙状态: 当我通过chrome打开url时,我得到的是“你好”信息。当我尝试netcat“NC-VZ MyServerIP8080时,我已经成功地

  • 当我尝试使用套接字将物理设备连接到服务器时,我遇到了一个问题。在服务器端,它似乎不接受任何连接,而在客户端,套接字超时。你知道为什么会这样吗? 我在下面提供我的代码 服务器代码: 客户端: 11-16 23:32:11.016:W/系统。错误(24213):java.net。ConnectException:无法连接到/192.168.1.116(端口9090):连接失败:ETIMEDOUT(连接