尝试制作可公开访问的AWS Cloud9 URL

时间:2019-07-06 15:38:49

标签: node.js express amazon-ec2 aws-cloud9

我使用的是AWS Cloud9,运行起来很顺畅,但是现在我试图公开我的URL,以便可以在Postman中发出HTTP请求,而我真的很努力。我非常适合初学者全栈开发人员,我们将不胜感激。

谢谢, 史蒂文

我正在尝试正确遵循本指南:

https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html

具体来说,我进入第4步,它要求我更改代码中的IP地址。将Node JS Express应用程序的app.listen IP地址更改为EC2实例IP地址时,出现错误。

我认为我已经成功地使我的EC2实例可公开访问,并且只是我的代码无法正确侦听(这些步骤似乎很容易遵循,但是我可能是错的。

var express = require("express");
var app = express();

app.set("view engine", "ejs"); 

app.get("/", function (req, res){
    res.render("helloWorld");
});


app.listen(8080, '**AWS EC2 instance IP**', function(){
    console.log("Server Has Started!");
});

当我未在app.listen中指定IP地址时,它运行良好,但是当然我只能从同一浏览器中的其他选项卡访问服务器。这是我在运行包含 AWS EC2实例IP 的代码时控制台吐出的内容:

events.js:174

      throw er; // Unhandled 'error' event

      ^



Error: listen EADDRNOTAVAIL: address not available **AWS EC2 instance IP**:8080

    at Server.setupListenHandle [as _listen2] (net.js:1262:19)

    at listenInCluster (net.js:1327:12)

    at doListen (net.js:1460:7)

    at process._tickCallback (internal/process/next_tick.js:63:19)

    at Function.Module.runMain (internal/modules/cjs/loader.js:832:11)

    at startup (internal/bootstrap/node.js:283:19)

    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

Emitted 'error' event at:

    at emitErrorNT (net.js:1306:8)

    at process._tickCallback (internal/process/next_tick.js:63:19)

    [... lines matching original stack trace ...]

    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

1 个答案:

答案 0 :(得分:1)

EC2实例未将其公共IP绑定到IP堆栈。 Internet网关自动处理从公共IP到实例的私有IP的转换。

指定实例的专用IP是您实际需要执行的操作,尽管可能不直观,但这是正确的。或者,如指南所示,使用0.0.0.0表示“所有接口”。