在ECS Fargate容器上运行CLI命令

时间:2018-12-20 11:36:03

标签: amazon-ecs aws-fargate

如何在使用ECS / Fargate的容器中运行CLI命令?

5 个答案:

答案 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运行的所有命令