在AWS上配置基于云的vscode ide



上下文:我们有一个平台,用户可以在其中创建自己的项目-每个用户多个项目。我们需要为他们提供一个基于浏览器的IDE来编辑这些项目。我们决定使用编码器服务器。为此,我们需要在AWS上配置一个可自动扩展的集群。当用户点击";编辑项目";我们每次都会带来一个新的集装箱。https://hub.docker.com/r/codercom/code-server

问题:如何将url查询(mysite.com/edit?project=1234(中的参数传递到启动脚本中,以便在启动时在docker容器中预配置工作区?

假设堆栈是AWS+ECS+Fargate。如果有帮助的话,我们可以使用kubernetes而不是ECS。

我在集群配置方面没有任何经验。将感谢任何帮助,或者至少是进一步挖掘的方向。

以上可以在AWS ECS中使用多种方式实现。此类系统的基本要求是在保持文件中的更改的同时,动态启动和终止容器。(我将专注于推出集装箱(

使用AWS SDK:

该任务可以使用AWS SDK轻松实现,使用基本任务定义。AWS SDK允许在基本任务定义上重写启动任务。

例如,如果任务定义的内存为2GB,则SDK可以在从任务定义启动任务时将内存覆盖为参数化值。

请参阅boto3(AWS SDK for Python(文档。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html#ECS.Client.run_task

整体解决方案

现在我们知道了如何使用python SDK(按需(运行自定义任务。应用程序的总体流程是API调用AWS lambda函数,该函数带有旋转和等待的参数,以继续检查任务状态,并在状态正常后更新和路由流量。

  1. API使用参数调用AWS lambda函数
  2. Lambda函数使用AWS SDK创建一个新任务,该任务具有基本任务定义的覆盖。(假设基本任务定义已经存在(
  3. 在同一个函数调用中不断检查新任务的状态,并在数据库中设置一个标志,以便前端能够对此做出反应
  4. 一旦状态正常,您可以使用AWS SDK在应用程序负载均衡器中添加一条规则,将流量路由到IP,而无需将IP地址暴露给最终客户端(AWS应用程序负载平衡器可能会变得昂贵,我建议在ec2上使用Nginx或HAProxy来管理动态路由(

注意:

确保您的Image是轻量级的,并且启动时间少于15分钟,因为lambda不能执行超过15分钟。如果是这种情况,请创建一个微服务,用于启动特别容器并将其托管在EC2 上

使用Terraform:

如果您正在寻找基础设施配置,地形是您的选择。它有一个学习曲线,所以建议将其作为次要选项。

Terraform在使用变量进行参数化方面很受欢迎,它可以很容易地作为API的后端插入。从第1步开始,应用程序的流程仍然保持不变,但不是AWS Lambda API将调用您的特定容器微服务,该服务反过来调用terraform脚本并将变量传递给它。

参考AWS的Terrafrom文档

https://registry.terraform.io/providers/hashicorp/aws/latest

相关内容

  • 没有找到相关文章

最新更新