在AWS ECS中运行Docker

3

我目前从操作系统运行一个命令来运行一个接受文件作为参数并返回一些输出的docker容器。

docker run --rm -v ${pwd}:/dir IMAGE [COMMAND] [ARGS]

这使我能够在每次获得新文件时运行此容器,获取输出并关闭容器。我想将其移动到AWS,但不确定如何复制此命令的临时性质? AWS支持docker run吗?


docker run 命令在 AWS 上也可以使用。迁移到 AWS 的问题在于有多个选项支持不同的需求。您已经提到了 AWS ECS,它旨在运行 docker 容器,但它假定镜像和参数更或多或少是固定的。如果不是这样,还有其他方法可以使用动态参数运行容器(在 EC2 上,作为 AWS Batch 作业等)。 - gusto2
1
ECS是一种远程云环境,没有直接的方法可以像docker run -v选项那样挂载本地文件系统来启动ECS容器。如果您想在这里使用ECS,您需要重新构建您的应用程序以通过其他方式接受其输入(如HTTP POST、S3中的文件、SQS消息等)。 - David Maze
2个回答

0
所以,简短的回答是不行,在ECS上您不能像通常那样做到这一点。但是,您可以构建它,使其在S3中上传文件时动态地旋转任务。
你想要做的是:
S3事件通知 => EventBridge => StepFunction => ECS RunTask API
有了这样的设置,每次上传文件时,您都将能够运行一个任务来处理该文件。 有用的链接: https://aws.amazon.com/blogs/aws/new-use-amazon-s3-event-notifications-with-amazon-eventbridge/

https://aws.amazon.com/blogs/compute/introducing-the-amazon-eventbridge-service-integration-for-aws-step-functions/

https://docs.aws.amazon.com/step-functions/latest/dg/connect-ecs.html


EventBridge 可以直接运行 ECS 任务,这里不需要使用 StepFunctions。https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-ecs-tutorial.html - Mark B

0

有无数种方法可以重构您的应用程序以在AWS上运行,正如其他人所描述的那样。如果您不想走这条路,也许与您在笔记本电脑上已经做的事情最接近的架构是使用AWS ECS + EFS集成(如this blog中所述)。您可以定义一个任务(带有容器),该任务挂载EFS共享。通过将需要的文件填充到该EFS共享中,容器将访问该文件并像在笔记本电脑上一样处理它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接