Использовать docker exec на экземпляре EC2, чтобы запустить команду в другом контейнере, находящемся в этом экземпляре.
Код:
Код: Выделить всё
from base64 import decode
import json
import subprocess
with open('temp.json', 'r') as file:
event = json.load(file)
encoded = json.dumps(event)
a = ['/usr/bin/docker', 'exec', '-it', '4015980c98fb', 'python', '-m', 'code.handler', encoded]
if __name__ == '__main__':
with subprocess.Popen(a, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as test:
print(f'ARGS: {test.args}')
for line in test.stdout:
line = line.decode().strip()
print(line)
На локальном компьютере: подпроцесс правильно инициируется и запускается
AWS ECS: Невозможно подключиться к демону Docker по адресу unix:///var/run/docker.sock. Демон Docker запущен?
- Docker запущен? Изнутри выполняемой задачи ECS:
Код: Выделить всё
root@532795fd1aad:/# docker -h
Flag shorthand -h has been deprecated, use --help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Common Commands:
run Create and run a new container from an image
...
Текст использования печатается локально и в AWS ECS, но команда отображается правильно:
Код: Выделить всё
ARGS: ['/usr/bin/docker', 'exec', '-it', '4015980c98fb', 'python', '-m', 'code.handler' '{...}',
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/home/michael/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context
use")
...
Подробнее здесь: https://stackoverflow.com/questions/790 ... pen-failes