簡體   English   中英

在 ECS Fargate 容器上運行 CLI 命令

[英]Run CLI command on ECS Fargate container

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

DEPRECATED:正如這個答案中提到的( How can I run commands in a running container in AWS ECS using Fargate )你不能這樣做,因為 AWS 不允許你訪問底層基礎設施。

更新:下面的 Pierre 提到了 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 進入容器。 如果您可以從 Dockerfile 中的CMD命令調用.sh文件,那么只要您在 docker 映像上安裝了 aws-cli,就會執行 cli 命令。
在 Dockerfile 中,確保在調用包含 cli 命令的腳本之前運行pip3 install awscli --upgrade --user

作為替代方案,您可以使用適用於 Python 的boto3適用於 JavaScript 的 AWS 開發工具包,它們都具有全面的文檔並使您能夠運行您可以通過 cli 運行的所有命令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM