如何在使用ECS / Fargate的容器中运行CLI命令?
答案 0 :(得分:2)
如该答案(How can I run commands in a running container in AWS ECS using Fargate所述,您无法执行此操作,因为AWS不允许您访问基础架构。
答案 1 :(得分:1)
AWS 现在推出了 Amazon ECS Exec,它允许您直接与容器交互:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html。
答案 2 :(得分:0)
据我所知并在ECS上有经验,您不能这样做。 aws无法让您访问基础资源。
如果您使用Fargate + EC2 Configuration,那么它也不能访问EC2。
答案 3 :(得分:0)
我不知道这是否是您要实现的目标,但是如果您希望通过CloudWatch Rule实例化一个新容器,可以运行该命令
创建一个新的任务定义并指示要执行的命令就足够了(在示例中执行Laravel命令)
ECSReputationSchedulerTask:
Type: AWS::ECS::TaskDefinition
Properties:
Cpu: 256
ExecutionRoleArn: !ImportValue ECSTaskExecutionRole
Family: TaskDefinitionFamily
Memory: 512
NetworkMode: awsvpc
RequiresCompatibilities:
- FARGATE
ContainerDefinitions:
-
Command:
- "php"
- "/home/application/artisan"
- "execute:operation"
Name: 'MySchedulerContainer'
...
,然后将其引用到CloudWatch规则中(不幸的是,这还不能通过CloudFormation完成)
答案 4 :(得分:0)
您也许可以编写脚本来执行cli命令,但是您不能ssh进入容器。
如果您可以从Dockerfile中的.sh
命令调用CMD
文件,则只要在Docker映像上安装了aws-cli,cli命令就会被执行。
在调用包含cli命令的脚本之前,请确保在Dockerfile中运行pip3 install awscli --upgrade --user
。
作为替代方案,您可以将boto3用于Python或AWS SDK for JavaScript,它们都有全面的文档,可让您运行可以通过cli运行的所有命令