Amazon Omics的WDL启动器
项目描述
miniwdl-omics-run
此命令行工具使在WDL上启动AWS HealthOmics工作流程服务变得更加容易。它使用miniwdl在本地注册WDL工作流程,验证命令行输入,并启动运行。
pip3 install miniwdl-omics-run
miniwdl-omics-run \
--role {SERVICE_ROLE_NAME} \
--output-uri s3://{BUCKET_NAME}/{PREFIX} \
{MAIN_WDL_FILE} input1=value1 input2=value2 ...
快速入门
先决条件:具有Python和pip的Unix命令行;本地安装并配置了完整访问您AWS账户的AWS CLI。
首先是一些一次性账户设置步骤(S3存储桶、IAM服务角色、ECR存储库),然后启动测试工作流程。
S3存储桶
创建一个包含测试输入文件的S3存储桶。
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_DEFAULT_REGION=$(aws configure get region)
aws s3 mb --region "$AWS_DEFAULT_REGION" "s3://${AWS_ACCOUNT_ID}-${AWS_DEFAULT_REGION}-omics"
echo test | aws s3 cp - s3://${AWS_ACCOUNT_ID}-${AWS_DEFAULT_REGION}-omics/test/test.txt
服务角色
创建一个IAM服务角色,以便您的Omics工作流程运行可以使用(以访问S3、ECR等)。
aws iam create-role --role-name poweromics --assume-role-policy-document '{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":"sts:AssumeRole",
"Principal":{"Service":"omics.amazonaws.com"}
}]
}'
aws iam attach-role-policy --role-name poweromics \
--policy-arn arn:aws:iam::aws:policy/PowerUserAccess
警告:PowerUserAccess,此处仅为了简洁,比所需的权限强大得多。有关所需的最小权限,请参阅Omics文档中的服务角色,特别是如果您计划使用第三方WDL和/或Docker镜像。
ECR存储库
创建一个适合Omics从其中拉取Docker镜像的ECR存储库。
aws ecr create-repository --repository-name omics
aws ecr set-repository-policy --repository-name omics --policy-text '{
"Version": "2012-10-17",
"Statement": [{
"Sid": "omics workflow",
"Effect": "Allow",
"Principal": {"Service": "omics.amazonaws.com"},
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability"
]
}]
}'
将一个简单的Ubuntu镜像推送到存储库。
ECR_ENDPT="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com"
aws ecr get-login-password | docker login --username AWS --password-stdin "$ECR_ENDPT"
docker pull --platform linux/amd64 ubuntu:22.04
docker tag ubuntu:22.04 "${ECR_ENDPT}/omics:ubuntu-22.04"
docker push "${ECR_ENDPT}/omics:ubuntu-22.04"
运行测试工作流程
pip3 install miniwdl-omics-run
wget https://raw.githubusercontent.com/miniwdl-ext/miniwdl-omics-run/main/test/TestFlow.wdl
miniwdl-omics-run TestFlow.wdl \
input_txt_file="s3://${AWS_ACCOUNT_ID}-${AWS_DEFAULT_REGION}-omics/test/test.txt" \
docker="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/omics:ubuntu-22.04" \
--role poweromics --output-uri "s3://${AWS_ACCOUNT_ID}-${AWS_DEFAULT_REGION}-omics/test/out"
此命令将指定的WDL压缩起来,将其注册为Omics工作流程,验证给定的输入,并开始工作流程运行。
WDL源代码可以设置为本地文件名或公共HTTP(S) URL。该工具将自动捆绑主WDL文件导入的任何WDL文件。在后续调用中,如果源代码没有更改,它将重用先前注册的工作流程。
命令行界面接受使用 input_key=value
语法输入 WDL,与 miniwdl run
一样,包括使用 --input FILE.json
选项的 JSON 文件。每个输入文件都必须设置为可由服务角色访问的现有 S3 URI。
建议
- Omics 只能使用同一账户和区域中的 ECR 中的 Docker 镜像。
- 这通常意味着像上面用
ubuntu:22.04
展示的那样进行拉取、重新标记和推送镜像。 - 并编辑任何将 Docker 镜像标签硬编码为输入的 WDL 任务。
- 每个 ECR 存储库都必须设置与上面显示的相同的 Omics 特定存储库策略。
- 因此,我们倾向于为多个 Docker 镜像使用单个 ECR 存储库,并使用更长的标签来区分它们。
- 如果您喜欢使用每个镜像的存储库,只需记得在每个存储库上设置存储库策略即可。
- 这通常意味着像上面用
- 要快速列出工作流程的输入,请尝试
miniwdl run workflow.wdl ?