我正在开发一个不和谐的机器人,我已经完成了它的第一个版本。我认为这将是学习 AWS 并使用他们的弹性容器服务 (ECS) 托管机器人的绝佳机会。因此,我觉得有必要给出一个新手免责声明。我已经对应用程序进行了 dockerized,我可以确认它在我的机器上按预期运行,这让我相信容器是好的。我在网上读到不和谐要求端口 80 和 443 (HTTP/HTTPS) 为文本通道打开。我的 VPC 和 SG 允许这些端口上的入站流量(以及到任何目的地的所有出站流量)。我的任务定义也包含
"portMappings": [
{
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp"
},
{
"containerPort": 443,
"hostPort": 443,
"protocol": "tcp"
}
],
机器人是基于 Java 的,使用 JDA 库。启动机器人的代码如下,与示例代码几乎相同。
public static void main(String[] args) throws LoginException, SQLException {
JDABuilder builder = JDABuilder.createDefault("<my key>");
// Disable parts of the cache
builder.disableCache(CacheFlag.MEMBER_OVERRIDES, CacheFlag.VOICE_STATE);
// Enable the bulk delete event
builder.setBulkDeleteSplittingEnabled(false);
// Disable compression (not recommended)
builder.setCompression(Compression.NONE);
// Set activity (like "playing Something")
builder.setActivity(Activity.playing("with fire"));
jda = builder.build();
jda.addEventListener(new MessageListener());
}
我的问题是,不管这一切,机器人都没有上线。我无法读取机器人的 stdout 输出,如果问题与端口未正确公开或其他原因有关,我将一无所知。
最后,我之前“不小心”使用 Fargate 运行时托管了机器人,这有其他问题,但确实设法让机器人显示“在线”状态。我现在使用 EC2 运行时。
非常感谢任何指针!如果您需要更多信息,请随时询问。