mjk*_*use 5 python amazon-web-services docker aws-fargate
可以像这样将参数传递给运行 Python 脚本的 Docker 容器
docker run my_script:0.1 --arg1 val --arg2 val ...
Run Code Online (Sandbox Code Playgroud)
在 AWS Fargate 上运行容器时,我似乎无法弄清楚如何传递这些参数(也许它不起作用?)
在 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"
]
}
Run Code Online (Sandbox Code Playgroud)
您将在控制台中或使用register-task-definition命令注册任务:
aws ecs register-task-definition --cli-input-json file://myscript-task.json
Run Code Online (Sandbox Code Playgroud)
您现在可以使用 ecs run-task命令运行任务。使用 overrides 参数,您将能够使用不同的值运行相同的任务。
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
Run Code Online (Sandbox Code Playgroud)
Overrides.json 示例:
{
"containerOverrides": [{
"name": "myscript",
"environment": [{
"name": "VAR1",
"value": "valueOfVar1"
}]
}]
}
Run Code Online (Sandbox Code Playgroud)
现在您可以在 python 脚本中访问该变量。
Python 脚本(示例)打印传递的环境变量。
import os
print(os.environ['VAR1'])
Run Code Online (Sandbox Code Playgroud)
配置日志驱动程序后,您将能够在 cloudwatch 日志中看到输出。
您可以在 ECS 任务定义中使用容器定义参数来传递运行时参数。
命令参数映射到 docker run 中的 COMMAND 参数。
"command": [
"--arg1",
"val",
"--arg2",
"val"
],
Run Code Online (Sandbox Code Playgroud)
也可以将参数作为环境变量传递。
"environment": [
{
"name": "LOG_LEVEL",
"value": "debug"
}
],
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3714 次 |
最近记录: |