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

在没有公共ip的情况下运行AWS Java SDK代码

卜勇
2023-03-14

我们是否需要internet连接才能从AWS的实例中使用AWS Java SDK?

从我最初的调查发现,我看到要从Amazon的这个实例运行基于AWS Java SDK的Java程序,该实例需要具有internet连接。

运行AWS Java SDK附带的示例程序AwsConsoleApp,我看到以下错误:

[javac]/home/ubuntu/aws-java-sdk-1.8.9.1/samples/awsconsoleapp/build.xml:12:警告:未设置“includeantruntime”,默认为build.sysclasspath=last;将可重复构建设置为false[java][java]=============================================================

 [java] Sep 09, 2014 9:26:49 PM com.amazonaws.http.AmazonHttpClient executeHelper
 [java] INFO: Unable to execute HTTP request: Connect to ec2.us-east-1.amazonaws.com:443 timed out
 [java] org.apache.http.conn.ConnectTimeoutException: Connect to ec2.us-east-1.amazonaws.com:443 timed out
 [java]     at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:551)
 [java]     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
 [java]     at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
 [java]     at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
 [java]     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
 [java]     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
 [java]     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
 [java]     at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:464)
 [java]     at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:273)
 [java]     at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.html" target="_blank">java:9320)
 [java]     at com.amazonaws.services.ec2.AmazonEC2Client.describeAvailabilityZones(AmazonEC2Client.java:359)
 [java]     at com.amazonaws.services.ec2.AmazonEC2Client.describeAvailabilityZones(AmazonEC2Client.java:8045)
 [java]     at AwsConsoleApp.main(Unknown Source)
 [java] 

我发现这与Amazon提供对他们的EC2Metadata服务的访问方式相反。

有什么方法可以运行这些Java程序而不提供AWS实例的公共IP吗?

共有1个答案

顾昊穹
2023-03-14

您需要Internet连接,但不需要通过分配给运行代码的实例的公共IP。

公共IP可以在NAT实例上,这允许VPC中的其他计算机访问Internet,但不允许Internet上的系统访问您的私有实例。

启动到虚拟私有云(VPC)中的私有子网中的实例不能与Internet通信。您可以选择使用VPC中公用子网中的网络地址转换(NAT)实例,以使专用子网中的实例能够发起到Internet的出站流量,但阻止实例接收Internet上某人发起的入站流量。

http://docs.aws.amazon.com/amazonvpc/latest/userguide/vpc_nat_instance.html

另请参阅https://stackoverflow.com/A/22212017/1695906,了解有关“私有”与“公共”子网、NAT实例和路由的更多讨论。

 类似资料:
  • 文档说这个库运行在GPU上。如果我功能强大的笔记本电脑没有GPU,我还能运行Deeplearning4J吗?

  • 这两个dataframe没有任何公共列。两个数据流中的行数和列数也不同。我尝试插入一个新的虚拟列,以增加row_index值,如下val dfr=df1.withcolumn(“row_index”,monotonically_increasing_id())所示。 但由于我使用的是Spark2,因此不支持monotonically_increasing_id方法。有没有办法把两个datafram

  • 问题内容: 我想像运行shell命令: 不用任何插件就能做到吗?由于Jenkins不是,而是服务帐户,我该如何添加? 问题答案: 首先执行 然后执行 然后注销 对于注销很重要,因为您需要重新评估组成员身份 登录并重试 有用!

  • 我正在尝试将Cucumber集成到现有的Spring Boot项目中 当前项目是单个Maven模块 单元测试(不含Spring上下文)和集成测试(含Spring上下文)组合在同一个测试文件夹中。 我想做的是能够调整我的单元测试和集成测试。 但是一旦我添加了依赖项(为了能够在规范旁边运行Spring上下文),它就要求文件夹中的所有测试都用注释。 下面是我的测试套件,配置为获取测试规范。 是否可以将两

  • 问题内容: 背景: 我正在尝试使用弹性堆栈 (Elastic,Logstash和Kibana) ,但是我没有钱可支付。我不介意使用封闭源代码的部件,只要它们是免费的即可。在这方面,我试图了解弹性许可的工作原理。 我们打开X-Pack似乎建议在Elastic 6.3之后包含X-Pack代码 (尽管具有不同的许可证) 。我也了解X-Pack的某些部分是免费的,而其他部分则不是免费的。这有点令人困惑。