0

我已将应用程序部署在附加了 IAM 角色的 EC2 实例上。在私有子网内运行的实例。我在尝试列出来自 S3 服务的存储桶时遇到网络错误。

Error: connect ETIMEDOUT 10.100.20.30:443
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16) {
errno: -110,
code: 'NetworkingError',
syscall: 'connect',
address: '10.100.20.30',
port: 443,
region: 'us-east-1',
hostname: 'mybucket.s3.us-east-1.amazonaws.com',
retryable: true,
time: 2020-07-28T05:44:13.678Z
} Error: connect ETIMEDOUT 10.100.20.30:443
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)
4

3 回答 3

1

看来你的情况是:

  • 私有子网中的 Amazon EC2 实例
  • 实例上的应用程序需要访问 Amazon S3

有两种方法可以实现这一点:

选项 1:互联网访问

Amazon S3 驻留在 Internet 上。由于 EC2 实例位于私有子网中,因此需要使用NAT 网关来访问 Internet 和 Amazon S3。

NAT 网关应在公共子网中启动,并且应更新私有子网的路由表以将发往0.0.0.0/0NAT 网关的流量发送。

选项 2:VPC 端点

或者,您可以为 S3 添加一个 VPC 端点,它提供了一个“快捷方式”来与 Amazon S3 进行通信,而无需通过 Internet。

于 2020-07-29T07:26:45.713 回答
1

请确保您的实例能够连接到 S3 端点。AWS 在其文档中列出了验证从 EC2 到 S3 的网络连接的步骤。由于您的实例在私有子网中运行,请确保您具备以下条件之一:

于 2020-07-29T07:29:18.547 回答
0

尝试这个。

sudo npm install -g @aws-amplify/cli
amplify configure
amplify init
amplify push
于 2021-02-20T05:42:27.727 回答