Запустите команду CLI для контейнера ECS Fargate

Как можно выполнить команду CLI в контейнере, который использует ECS/Fargate?

5 ответов

Как уже упоминалось в этом ответе ( Как я могу запускать команды в работающем контейнере в AWS ECS с использованием Fargate), вы не можете сделать это из-за того, что AWS не предоставляет вам доступ к базовой инфраструктуре.

AWS запустила Amazon ECS Exec, который позволяет напрямую взаимодействовать с контейнерами: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html.

Как я знаю, и имея опыт работы с ECS, вам не разрешено это делать. aws не дает вам доступа к базовым ресурсам.

если вы используете конфигурацию fargate + EC2, то также нет доступа к EC2.

Я не знаю, пытаетесь ли вы этого достичь, но при желании вы можете запустить команду для нового контейнера, который вы создаете для случая по правилу CloudWatch.

Достаточно будет создать новое определение задачи и указать команду для выполнения (в примере выполнения команды 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)

Возможно, вы сможете написать в своем контейнере скрипт для выполнения команды cli, но вы не можете использовать ssh в контейнере. Если вы можете вызвать .sh файл из CMD Команда в Dockerfile, команда cli будет выполняться до тех пор, пока на образе docker установлен aws-cli.
В Dockerfile обязательно запустите pip3 install awscli --upgrade --user прежде чем вызывать ваш скрипт, который содержит команды cli.

В качестве альтернативы вы можете использовать boto3 для Python или AWS SDK для JavaScript, которые имеют исчерпывающую документацию и позволяют запускать все команды, которые вы могли бы выполнить через cli

Другие вопросы по тегам