我的 lambda 和 EC2 在 VPC 中,我无法从 lambda 将记录放入运动但我可以从 EC2
My lambda and EC2 are in a VPC and I cant putRecords to kinesis from lambda but I can from EC2
我在 aws 中有一个设置,EC2 -> kinesis_x -> lambda -> kinesis_x
(kinesis_x:说明这是同一个运动流)
EC2 和 lambda 在同一个 VPC 中。
我可以从 lambda 发布到 kinesis_x.
我已经配置了一个 VPC 端点,它起到了作用,但它禁止 EC2 发布到运动。
EC2 和 lambda 的安全组相同。
启用端点后,这是我的 EC2 中 java 应用程序的超时异常:
原因:org.apache.http.conn.ConnectTimeoutException:连接到 kinesis.us-west-1.amazonaws.com:443 [kinesis.us-west-1.amazonaws.com/10.1.1.180, kinesis.us-west-1.amazonaws.com/10.1.2.157] 失败:连接超时
在 org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:150)
在 org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 com.amazonaws.http.conn.ClientConnectionManagerFactory$Handler.invoke(ClientConnectionManagerFactory.java:76)
我希望能够从 EC2 和 Lambda 发布到同一个运动流
要检查的事情,查看客户端无法连接的错误:
- VPC是public/private吗?
- 您是否使用多个子网?
- 如果是私人的,它有互联网网关吗?
- 设置了哪些路由?
所有基本 IP 网络规则都适用于 VPC。
telnet 也是你的朋友。一个好的技巧是 SSH/SSM 进入 EC2 实例并尝试使用 telnet eg
进行连接
telnet ip port
这可以让您将网络连接与 application-level 问题隔离开来。
问题解决了!
我们将我们的安全组附加到端点,这就成功了!
此 sg 与我们的 EC2 和 Lambda 函数相同。
我在 aws 中有一个设置,EC2 -> kinesis_x -> lambda -> kinesis_x (kinesis_x:说明这是同一个运动流) EC2 和 lambda 在同一个 VPC 中。 我可以从 lambda 发布到 kinesis_x.
我已经配置了一个 VPC 端点,它起到了作用,但它禁止 EC2 发布到运动。 EC2 和 lambda 的安全组相同。
启用端点后,这是我的 EC2 中 java 应用程序的超时异常:
原因:org.apache.http.conn.ConnectTimeoutException:连接到 kinesis.us-west-1.amazonaws.com:443 [kinesis.us-west-1.amazonaws.com/10.1.1.180, kinesis.us-west-1.amazonaws.com/10.1.2.157] 失败:连接超时 在 org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:150) 在 org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 com.amazonaws.http.conn.ClientConnectionManagerFactory$Handler.invoke(ClientConnectionManagerFactory.java:76)
我希望能够从 EC2 和 Lambda 发布到同一个运动流
要检查的事情,查看客户端无法连接的错误:
- VPC是public/private吗?
- 您是否使用多个子网?
- 如果是私人的,它有互联网网关吗?
- 设置了哪些路由?
所有基本 IP 网络规则都适用于 VPC。
telnet 也是你的朋友。一个好的技巧是 SSH/SSM 进入 EC2 实例并尝试使用 telnet eg
进行连接telnet ip port
这可以让您将网络连接与 application-level 问题隔离开来。
问题解决了! 我们将我们的安全组附加到端点,这就成功了! 此 sg 与我们的 EC2 和 Lambda 函数相同。