Как сделать AWS Batch Volume постоянным?

У меня есть два докер-контейнера: первый извлекает файл из S3 и сохраняет его в томе, а второй читает и печатает файл. Чтобы поделиться файлами, я использую Docker Volume. Теперь, когда я хочу запустить это в AWS Batch, я определяю том и точки подключения в определении задания. Когда запускается первый контейнер, он создает том и копирует файл. Но потом убивает / удаляет том. Итак, теперь второй контейнер не может получить доступ к файлу с того же тома.

В документации AWS Batch говорится, что том будет сохраняться, если мы укажем исходный путь к тому, но, похоже, это не работает. Как правильно достичь моей цели?


person user45437    schedule 01.08.2019    source источник


Ответы (1)


На данный момент вы не можете. Определение задания пакетного задания может иметь только один образ, в отличие от определения задачи ECS, где у вас может быть несколько контейнеров, и эти контейнеры могут совместно использовать том.

Также в пакетном задании подключенные тома могут быть привязаны только к пути к хосту. Таким образом, в основном они могут быть только путями на машинах EC2 в вашем вычислительном окружении.

Вот несколько способов увидеть, что вы пытаетесь сделать:

а. Создайте единый контейнер, который копирует данные с S3, читает и печатает их.

б. Имея вычислительную среду, в которой есть только один узел, на котором выполняются оба задания. Первое задание копирует данные в место на вычислительном хосте env. А потом это зачитывает вторая работа. Это действительно не тот путь, по которому вы потенциально не можете масштабироваться, и вам нужно будет убедиться, что зависимости ваших заданий настроены правильным образом, чтобы сначала запускалось задание копирования, а затем задание печати.

c. Используйте EFS. В основном создайте общее расположение EFS. Затем используйте шаблоны запуска в среде вычислений пакетного задания, чтобы указать сценарий пользовательских данных, который монтирует EFS. Затем первое задание копирует данные на том, который поддерживается EFS с хоста, а второе задание использует ту же точку монтирования для чтения и печати. Здесь также вам нужно будет четко настроить зависимости.

Еще один момент для рассмотрения, если бы у вас было несколько запущенных наборов этих заданий, обрабатывающих разные данные. Если да, вам нужно убедиться, что в части копирования вы копируете его в подпапку, о которой задание печати знает и может читать. В основном это общий идентификатор, который используется для создания подпапки, а затем также для чтения, например, первое задание передается data-id = 1234, поэтому создается папка / 1234. Тот же идентификатор данных передается второму заданию, и он читается из / 1234.

Обратите внимание, что по умолчанию EFS имеет сквозной путь, который может быть проблемой в зависимости от вашей рабочей нагрузки. И если вы перестанете использовать маршрут с предоставлением доступа, это может оказаться дорогостоящим.

Так что в целом, если это возможно, я бы рекомендовал №1 в качестве пути.

person Yogesh_D    schedule 01.08.2019