我正在尝试使用 EC2 或 Fargate 后端来调整运行 AWS Batch 作业。以下示例适用于 EC2 实例 AFAIK。我已经调整了我的 docker 容器,以便能够分别安装输入和输出目录。当我在本地运行 docker 容器时,我运行以下命令:
# Directories
LOCAL_WORKING_DIRECTORY=$(pwd)
LOCAL_OUTPUT_PARENT_DIRECTORY=../
LOCAL_OUTPUT_PARENT_DIRECTORY=$(realpath -m ${LOCAL_OUTPUT_PARENT_DIRECTORY})
CONTAINER_INPUT_DIRECTORY=/volumes/input/
CONTAINER_OUTPUT_DIRECTORY=/volumes/output/
# Parameters
ID=S1
R1=Fastq/${ID}_1.fastq.gz
R2=Fastq/${ID}_2.fastq.gz
NAME=VEBA-preprocess__${ID}
RELATIVE_OUTPUT_DIRECTORY=veba_output/preprocess/
# Command
CMD="preprocess.py -1 ${CONTAINER_INPUT_DIRECTORY}/${R1} -2 ${CONTAINER_INPUT_DIRECTORY}/${R2} -n ${ID} -o ${CONTAINER_OUTPUT_DIRECTORY}/${RELATIVE_OUTPUT_DIRECTORY}"
# Docker
DOCKER_IMAGE="jolespin/veba_preprocess:1.1.2"
docker run \
--name ${NAME} \
--rm \
--volume ${LOCAL_WORKING_DIRECTORY}:${CONTAINER_INPUT_DIRECTORY} \
--volume ${LOCAL_OUTPUT_PARENT_DIRECTORY}:${CONTAINER_OUTPUT_DIRECTORY} \
${DOCKER_IMAGE} \
-c "${CMD}"
我无法弄清楚如何使用创建 AWS Batch 定义 json。
我的输入文件路径目录 S3 URI 是
s3://path/to/input/
,其中将包含 35_R1.fq.gz
和 35_R2.fq.gz
。
我希望我的输出位于以下 S3 目录中:
s3://path/to/output/
如何在 AWS Batch 作业定义 json 中指定输入和输出卷 S3 路径?
{
"jobDefinitionName": "preprocess__35",
"type": "container",
"containerProperties": {
"image": "jolespin/veba_preprocess:1.1.2",
"vcpus": 4,
"memory": 16000,
"command": [
"preprocess.py",
"-1",
"/volumes/input/35_R1.fq.gz",
"-2",
"/volumes/input/35_R2.fq.gz",
"-n",
"35",
"-o",
"/volumes/output/veba_output/preprocess",
"-p",
"4"
],
"mountPoints": [
{
}
],
"volumes": [
]
}
}
您有机会使用 dockers 入口点运行 mount-s3 吗?应该在启动时挂载 s3。