开发者社区> 问答> 正文

通过私有子网访问跨区域s3端点

我有一个在eu-west-1 私有子网中旋转的EMR 。我在路由表中为S3定义了一个网关端点。我必须访问由AWS 公开的这个公共存储桶/位置:s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar这给出了以下错误。我认为这是因为通过网关端点的跨区域访问是不允许的。我可以访问位于同一区域的其他存储桶。是否有解决方法来访问它,可能通过NAT?路由表已经有NAT,但请求不知何故。

2019-04-10T05:17:06.849Z INFO Ensure step 1 jar file s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar
INFO Failed to download: s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar
java.lang.RuntimeException: Error whilst fetching 's3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar'

at aws157.instancecontroller.util.S3Wrapper.fetchS3HadoopFileToLocal(S3Wrapper.java:412)
at aws157.instancecontroller.util.S3Wrapper.fetchHadoopFileToLocal(S3Wrapper.java:351)
at aws157.instancecontroller.master.steprunner.HadoopJarStepRunner$Runner.<init>(HadoopJarStepRunner.java:243)
at aws157.instancecontroller.master.steprunner.HadoopJarStepRunner.createRunner(HadoopJarStepRunner.java:152)
at aws157.instancecontroller.master.steprunner.HadoopJarStepRunner.createRunner(HadoopJarStepRunner.java:146)
at aws157.instancecontroller.master.steprunner.StepExecutor.runStep(StepExecutor.java:136)
at aws157.instancecontroller.master.steprunner.StepExecutor.run(StepExecutor.java:70)
at aws157.instancecontroller.master.steprunner.StepExecutionManager.enqueueStep(StepExecutionManager.java:248)
at aws157.instancecontroller.master.steprunner.StepExecutionManager.doRun(StepExecutionManager.java:195)
at aws157.instancecontroller.master.steprunner.StepExecutionManager.access$000(StepExecutionManager.java:33)
at aws157.instancecontroller.master.steprunner.StepExecutionManager$1.run(StepExecutionManager.java:94)

Caused by: com.amazonaws.AmazonClientException: Unable to execute HTTP request: connect timed out

at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:618)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3826)
at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1143)
at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1021)
at aws157.instancecontroller.util.S3Wrapper.copyS3ObjectToFile(S3Wrapper.java:303)
at aws157.instancecontroller.util.S3Wrapper.getFile(S3Wrapper.java:287)
at aws157.instancecontroller.util.S3Wrapper.fetchS3HadoopFileToLocal(S3Wrapper.java:399)
... 10 more

展开
收起
小六码奴 2019-04-22 16:55:45 1772 0
1 条回答
写回答
取消 提交回答
  • S3网关端点永远不会尝试路由跨区域流量,但NAT网关应自动处理此流量。鉴于NAT网关到位的断言,则Unable to execute HTTP request: connect timed out意味着NAT网关(或与之关联的设置)配置错误。

    正如评论中所述,此处的具体问题是NAT网关是在其打算服务的同一子网上配置的。这不是有效的配置,因为在这种情况下,NAT网关尝试通过自身...到达Internet ...因为它从部署它的子网获得其默认路由。

    2019-07-17 23:33:59
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
探索连接的最后十秒钟“落时”的网关 立即下载
《用管控策略设定多账号组织全局访问边界》 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载