簡體   English   中英

將參數傳遞給在AWS Fargate上的Docker容器中運行的Python

[英]Pass arguments to Python running in Docker container on AWS Fargate

將參數傳遞給運行Python腳本的Docker容器可以這樣做

docker run my_script:0.1 --arg1 val --arg2 val ...

我似乎無法弄清楚如何在AWS Fargate上運行容器時傳遞這些參數(也許它不起作用?)

您可以在ECS任務定義中使用容器定義參數來傳遞運行時參數。

命令參數映射到docker run中的COMMAND參數。

"command": [
  "--arg1",
  "val",
  "--arg2",
  "val"
],

也可以將參數作為環境變量傳遞。

"environment": [
  {
    "name": "LOG_LEVEL",
    "value": "debug"
  }
],

在ecs中,您將把容器作為任務運行。 因此,您將首先注冊包含容器定義的任務,然后您可以運行將參數作為環境變量傳遞的任務。

這是一個示例任務定義:

myscript-task.json :(一個示例任務定義)

{
    "containerDefinitions": [
        {
            "name": "myscript",
            "image": "12345123456.dkr.ecr.us-west-2.amazonaws.com/myscript:0.1",
            "logConfiguration": { 
                "logDriver": "awslogs",
                "options": { 
                   "awslogs-group" : "/ecs/fargate",
                   "awslogs-region": "us-west-2",
                   "awslogs-stream-prefix": "myscript"
                }
             }
        }

    ],
    "family": "myscript",
    "networkMode": "awsvpc",
    "executionRoleArn": "arn:aws:iam::12345123456:role/ecsTaskExecutionRole",
    "cpu": "256",
    "memory": "512",
    "requiresCompatibilities": [ 
       "FARGATE" 
    ]
}

您將在控制台中或使用register-task-definition命令注冊任務

aws ecs register-task-definition --cli-input-json file://myscript-task.json

您現在可以使用ecs run-task命令運行該任務。 使用覆蓋參數,您將能夠使用不同的值運行相同的任務。

aws ecs run-task --cluster testCluster --launch-type FARGATE --task-definition myscript:1 --network-configuration 'awsvpcConfiguration={subnets=[subnet-0abcdec237054abc],assignPublicIp=ENABLED}' --overrides file://overrides.json

示例Overrides.json:

{
    "containerOverrides": [{
        "name": "myscript",
        "environment": [{
            "name": "VAR1",
            "value": "valueOfVar1"
        }]
    }]
}

現在,您可以在python腳本中訪問該變量。

Python腳本(示例)打印傳遞的環境變量。

import os
print(os.environ['VAR1'])

配置日志驅動程序后,您將能夠在cloudwatch日志中看到輸出。

暫無
暫無

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

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