问题标签 [aws-private-link]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
168 浏览

aws-lambda - 如何通过 VPC 端点(AWS)向 IOT 发布/订阅事件

我尝试将事件从 Lambda 函数发布到 IOT,该执行环境位于 VPC 私有子网中,但它无法正常工作。

  • 我有一个 IOT 设备,其策略配置为允许所有连接。
  • 创建了一个具有两个私有子网的 VPC,并配置了 Lambda 函数以在其中运行
  • Lambda 函数具有访问 IOT 所需的权限,并且安全组被配置为允许所有出站流量到任何端口和任何类型的协议 (0.0.0.0/0)
  • 创建了一个 VPC 端点(com.amazonaws.eu-central-1.iot.data)(选择了两个私有子网)并分配了一个安全组,该安全组具有允许来自 Lambda 函数安全组的任何流量的规则

尝试使用公共端点发布事件而不添加 NAT 网关,但它不工作(出现超时错误)注意:- 如果我添加 NAT 网关,工作正常。

请找到以下尝试连接到 IOT 的示例代码以供参考

0 投票
1 回答
83 浏览

amazon-web-services - AWS beanstalk PrivateLink 未连接

我有以下设置

  • 单个 VPC
  • 2 个跨 2 个可用区的公共子网(包含 AWS Beanstalk 应用程序并公开一个 api)
  • 跨 2 个 AZ 的 2 个私有子网(包含 Lambda 函数)
  • 1 个 Elastic beanstalk 接口 VPC 端点(服务名称 com.amazonaws.us-east-2.elasticbeanstalk)

我不想为我的 lambda 函数创建 NAT 网关以便能够通过 Internet 访问 AWS Beanstalk 应用程序 API,而是想创建一个 VPC 端点,以便我可以从我的 lambda 函数访问 AWS 内部网络中的 aws beanstalk。

公共子网具有允许 Web 流量的安全组(端口 80/443)

VPC 终端节点与私有子网关联,其安全组允许 Web 流量(端口 80/443)。

lambda 函数还与私有子网相关联,其安全组允许 Web 流量(端口 80/443)。

DNS 解析和 DNS 主机名在 VPC 级别启用。

我复制了端点 dns 名称以形成 lambda 函数正在调用的 url,我得到了一个超时

即使我尝试了上述所有步骤,AWS Lambda 也无法访问 beanstalk 应用程序 api。

简化的 lambda 函数:

Elastic beanstalk 应用程序可通过 Internet 获取,网址为http://sample-app-dev.******.us-east-2.elasticbeanstalk.com/

我在这里想念什么?

0 投票
1 回答
99 浏览

amazon-web-services - 为什么 AWS Private Link/Interface 端点不需要路由表条目?

我目前的理解是,当 VPC 中的实例要发送流量时,它会通过路由表知道将流量发送到哪里。所以具体来说,如果我有一个想要连接到 VPC 端点的实例,会发生什么?它是如何到达那里的?

0 投票
0 回答
85 浏览

amazon-web-services - AWS Elastic Search ConnectException:操作超时

我正在尝试访问存在于不同 AWS 账户中的 AWS 开放式搜索集群(假设账户 A 中存在 ES 集群,我们正在尝试从账户 B 访问它)。我已执行以下步骤来访问它

  1. 在 ES 终端节点服务选项中的 AWS 账户 A 中将委托人 AWS 账户 B 列入白名单。

  2. 使用账户 A 的 vpc 服务名称在账户 B 中创建 vpc 端点。账户 A 收到的 vpc 配对请求

  3. 接受 AWS 账户 A 中的 vpc 配对请求。

  4. VPC 终端节点状态在 AWS 账户 B 中从待处理更改为可用。

  5. AWS 账户 A ES 可通过 HTTP 80 端口访问,因此在 ECS 服务安全组中添加了 Http 80 端口入站规则。从同一个 ECS 服务调用 ES 连接代码。

以下是 ES 客户端生成器的代码片段:

我收到 [java] java.util.concurrent.ExecutionException: java.net.ConnectException: Operation timed out exception on restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); 称呼。

详细日志

[java] java.util.concurrent.ExecutionException: java.net.ConnectException: Operation timed out [java] at org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71) ~[httpcore-4.4.14. jar:4.4.14] [java] 在 org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:84) ~[httpcore-4.4.14.jar:4.4.14] [java] 在 org.apache。 http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] at org.elasticsearch.client.RestClient.performRequest(RestClient.java: 244) ~[elasticsearch-rest-client-7.7.1.jar:7.7.1] [java] at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235) ~[elasticsearch-rest-client-7.7. 1.jar:7.7.1] [java] 在 org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1609) ~[elasticsearch-rest-high-level-client-7.7.1.jar:7.7.1] [java] at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1579) ~[elasticsearch-rest-high-level-client-7.7.1.jar:7.7.1] [java ] 在 org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1549) ~[elasticsearch-rest-high-level-client-7.7.1.jar:7.7.1] [java] 在 org.elasticsearch.client。 RestHighLevelClient.search(RestHighLevelClient.java:1065) ~[elasticsearch-rest-high-level-client-7.7.1.jar:7.7.1] [java] at com.amazon.atvomniaservice.elastic.ElasticSearchClient.search(ElasticSearchClient. java:62) ~[ATVOmniaService-1.0.jar:?] [java] at com.amazon.atvomniaservice.elastic.ElasticSearchQueryRunner.submit(ElasticSearchQueryRunner.java:33) ~[ATVOmniaService-1.0.jar:?] [java] at com.amazon.atvomniaservice.elastic.ElasticSearchQueryRunner。提交(ElasticSearchQueryRunner.java:19)~[ATVOmniaService-1.0.jar:?] [java] at com.amazon.atvomniaservice.GenericQueryDriver.run(GenericQueryDriver.java:60)~[ATVOmniaService-1.0.jar:?] [java ] at com.amazon.atvomniaservice.activity.GetSessionsActivity.lambda$enact$0(GetSessionsActivity.java:78) ~[ATVOmniaService-1.0.jar:?] [java] at com.amazon.atvomniaservice.activity.ContinuationRunner.lambda$runInContinuation $0(ContinuationRunner.java:40) ~[ATVOmniaService-1.0.jar:?] [java] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] [java] at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?] [java] at com.amazon.metrics.executor.MetricsClearingRunnable.run(MetricsClearingRunnable.java:58) ~[DeclarativeCoralMetrics-2.1. jar:?] [java] 在 com.amazon.coral.metrics。MetricReportingThreadPoolExecutor$MeasuringRunnable.run(MetricReportingThreadPoolExecutor.java:210) ~[MetricReportingExecutors-1.0.jar:?] [java] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?] [java ] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?] [java] 在 java.lang.Thread.run(Thread.java:829) [?:?] [ java] 原因:java.net.ConnectException: Operation timed out [java] at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?] [java] at sun.nio.ch.SocketChannelImpl.finishConnect (SocketChannelImpl.java:777) ~[?:?] [java] at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:174) ~[httpcore-nio-4.4.12.jar :4.4.12] [java] 在 org.apache.http.impl.nio.reactor。DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:148) ~[httpcore-nio-4.4.12.jar:4.4.12] [java] at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java: 351)〜[httpcore-nio-4.4.12.jar:4.4.12] [java] at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221)〜[httpasyncclient-4.1。 4.jar:4.1.4] [java] at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64) ~[httpasyncclient-4.1.4.jar:4.1.4] [ java] ... 1 个 [java] 已更新 [[host=http://vpce-XXXXX.vpce-svc-XXXX.us-east-1.vpce.amazonaws.com:80]] 已在黑名单中 [java]一个意料之外的问题发生了:12] [java] at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:351) ~[httpcore-nio-4.4.12.jar:4.4.12] [java] at org. apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] at org.apache.http.impl.nio.client。 CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] ... 1 更多 [java] 更新 [[host=http://vpce-XXXXX.vpce -svc-XXXX.us-east-1.vpce.amazonaws.com:80]] 已经在黑名单中 [java] 发生意外错误:12] [java] at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:351) ~[httpcore-nio-4.4.12.jar:4.4.12] [java] at org. apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] at org.apache.http.impl.nio.client。 CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] ... 1 更多 [java] 更新 [[host=http://vpce-XXXXX.vpce -svc-XXXX.us-east-1.vpce.amazonaws.com:80]] 已经在黑名单中 [java] 发生意外错误:PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64 ) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] ... 1 个 [java] 更新 [[host=http://vpce-XXXXX.vpce-svc-XXXX.us-east-1 .vpce.amazonaws.com:80]] 已经在黑名单中 [java] 发生意外错误:PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64 ) ~[httpasyncclient-4.1.4.jar:4.1.4] [java] ... 1 个 [java] 更新 [[host=http://vpce-XXXXX.vpce-svc-XXXX.us-east-1 .vpce.amazonaws.com:80]] 已经在黑名单中 [java] 发生意外错误:80]]已经在黑名单中[java]发生意外错误:80]]已经在黑名单中[java]发生意外错误:

0 投票
0 回答
156 浏览

amazon-web-services - 你如何使用 com.amazonaws.s3-global.accesspoint

我一直在试图弄清楚如何让基于接口的端点com.amazonaws.s3-global.accesspoint工作。我能够成功连接到我的 VPC dns 似乎解析为私有 ip,但我不知道如何实际使用接口访问点。

例如,我在 eu-north-1 中有一个存储桶,在 ca-central-1 中有一个 VPC,并配置了接口端点。如果我从 VPC 中的 S3 下载文件是使用 NAT 网关通过 Internet 传输的,但是如果我正在阅读定价文档,则使用 privateLink 在服务之间传输会更便宜,并且全局 S3 端点感觉就像我一样米找。

但是,当我尝试使用端点时,连接挂起。

据我所知,端点和存储桶对我的帐户是开放的,但我似乎无法让它工作。

我一直在使用这个文档来尝试让它工作。

0 投票
0 回答
41 浏览

aws-lambda - AWS - 尽管 PrivateLink 仍需要 NAT 网关

语境:

我有以下网络设置(简化)用于在 VPC 中运行 lambda:

  • 具有 IGW 和 NAT 的公共子网
  • 我的 lambda 在其中执行的私有子网
  • 用于访问 S3 存储桶的 S3 VPC 终端节点

我可以在我的 VPC 中执行 lambda 并观察正确的行为。我可以访问公共互联网,并使用我的 NAT 的 EIP 进行呼叫。

我使用 lambda 调用 Snowflake DWH 并且可以正确地将我的 lambda IP 列入白名单。

现在我在我的 VPC 和 Snowflake VPC 之间进行了 PrivateLink 设置。不同的单独步骤(设置 VPC 接口、托管区域、CNAMES)似乎有效。

如果我通过我的 Lambda 使用专用 PrivateLink URL 执行调用,我会正确地看到在我的 VPC 的 CIDR IP 范围之外执行的调用。

问题:

似乎仍然需要 NAT 才能使 lambda 工作。如果我删除它,则 lambda 开始超时。我不懂为什么。我的 lambda 没有执行公共互联网呼叫。只有对 Snowflake 和 S3 的调用,它们现在都设置了 VPC 端点。如前所述,我看到来自预期 IP 范围的调用。

在成功建立 VPC 之间的 PrivateLink 之后,我假设(由文档和 PrivateLink 使用背后的一般理性支持)不再需要 NAT。

问题:

任何人都可以确认:不再需要 NAT 吗?任何人都可以提供假设为什么它在我的情况下可能无法按预期工作吗?

我现在多次查看设置指南,一切似乎都正确完成。如前所述,呼叫似乎通过正确的路线进行,但我仍然想了解为什么 NAT 行为与我预期的不同。

0 投票
0 回答
25 浏览

database - 私有链接 V/S NLB 作为 redshift DB 的连接字符串

我们正在使用私有链接安全地访问托管在 A vpc 上的 DB 服务,以便与 B vpc 中的 App 连接,如下面的 application.yaml

-Djdbc.url=jdbc:redshift://vpce-xxxxx.us-west-2.vpce.amazonaws.com:5439/Schema

但由于某种原因,我们无法访问私有链接端点,所以现在想使用 Redshift NLB 作为连接字符串,我们的 NLB 端点是这样的

-Djdbc.url=jdbc:redshift://nlb-db-xxxx.elb.us-west-2.amazonaws.com:5439/Schema

我可以使用这样的 NLB 端点从应用程序连接到数据库吗?