尝试创建可公开访问的 AWS Cloud9 URL

Trying to make a publicly accessible AWS Cloud9 URL

我正在使用 AWS Cloud9 并且一直很顺利,但现在我正在尝试 URL public 以便我可以在 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 实例 public 可以访问,只是我的代码没有正确监听(这些步骤似乎很容易遵循,但我可能是错的。

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)

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

指定实例的私有 IP 是您实际需要做的,尽管这可能不是正确的直觉。或者,如指南所示,使用 0.0.0.0 表示 "all interfaces."