【问题标题】:Run CLI command on ECS Fargate container在 ECS Fargate 容器上运行 CLI 命令
【发布时间】:2019-05-20 22:18:03
【问题描述】:

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

【问题讨论】:

  • 可以根据这些答案运行 SSHD,尽管这通常不是您希望与 Fargate 做的事情。
  • 你试过什么?您可以为在 Fargate 中运行 CLI 命令提供什么最小上下文?
  • 如果它是容器启动时的一次性命令,您可以尝试使用带有入口点的环境变量,将环境变量放在安全的位置,例如 secerts manager 或 aws 的 ssm 参数
  • 2021:可以连接到在 ECS Fargate 上运行的容器。阅读:aws.amazon.com/about-aws/whats-new/2021/03/…

标签: amazon-ecs aws-fargate


【解决方案1】:

已弃用:正如此答案 (How can I run commands in a running container in AWS ECS using Fargate) 中所述,您无法执行此操作,因为 AWS 不允许您访问底层基础设施。

更新:下面的 Pierre 提到了 AWS 允许这样做的公告。

【讨论】:

【解决方案2】:

AWS 现已推出 Amazon ECS Exec,它允许您直接与容器交互:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html

【讨论】:

  • 对此有一些要求:如果使用 AWS CLI,则仅支持 v1,不支持 v2。只处理新任务,而不是现有任务。
【解决方案3】:

据我所知,在 ECS 方面有经验,您不能这样做。 aws 不允许您访问底层资源。

如果您使用的是 Fargate + EC2 配置,那么也不能访问 EC2。

【讨论】:

    【解决方案4】:

    我不知道这是否是您想要实现的目标,但如果您愿意,可以在新容器上运行命令,通过 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 完成)

    【讨论】:

      【解决方案5】:

      您可以编写容器脚本来执行 cli 命令,但是您不能通过 ssh 进入容器。 如果您可以从 Dockerfile 中的 CMD 命令调用 .sh 文件,则只要您在 docker 映像上安装了 aws-cli,就会执行 cli 命令。
      在调用包含 cli 命令的脚本之前,请确保在 Dockerfile 中运行 pip3 install awscli --upgrade --user

      作为替代方案,您可以使用 Python 的 boto3AWS SDK for JavaScript,它们都有全面的文档,使您能够运行所有可以通过 cli 运行的命令

      【讨论】:

        猜你喜欢
        • 2019-10-29
        • 2022-10-01
        • 2019-07-18
        • 2019-01-05
        • 2020-10-18
        • 2022-11-03
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多