问题标签 [aws-batch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5688 浏览

amazon-web-services - 如何将脚本参数传递给 AWS Batch 获取并运行

我正在按照本教程在 AWS 批处理中运行一个简单的 fetch-and-run 示例。但是,我无法将参数传递给通过此示例获取的脚本。

基本示例将产生此执行:

其中脚本参数仅在以下内容中提及:

这表明它支持 BATCH_FILE_TYPE 的两个值,“script”或“zip”。当您设置“脚本”时,它会导致 fetch_and_run.sh 下载单个文件然后执行它,此外还会将任何其他参数传递给脚本。

我尝试使用 AWS CLI 通过--parametersand--container-overrides参数(在后者的command键下)传递它们,但是它们没有从脚本中接收到。

我不想ENTRYPOINT为每次运行或fetch_and_run.sh脚本修改我的 Dockerfile,但我不明白如何以不同的方式实现这一点。

0 投票
3 回答
4465 浏览

amazon-web-services - 如何在 AWS 批处理中定义根卷大小

我正在使用 AWS Batch,但我发现根卷大小对于我的任务来说太小了。

我尝试创建一个新的计算环境/作业队列,但没有任何选项可以设置卷大小。我尝试从此处更改启动配置,但 AWS Batch 不考虑新的启动配置和/或自动缩放组。我可能必须更改dm.basesize但不清楚应该在哪里完成。

因此,我从 Amazon 2 Linux 中设置了一个具有 500 GB 存储空间的自定义 AMI,并按照此处所示更改了--storage-optwith ,但是,尽管我的实例已生成,但作业仍无限期地处于 RUNNABLE 状态。我检查了此处定义的可能原因dm.basesize=400GB,但是 i) 选中“启用自动分配公共 IPv4 地址”,ii) 图像应该是好的(在创建环境时已经过验证并且可以生成),iii) 我有 5 个实例的限制实例类型(但我什至无法运行 1),iv)我的角色权限应该没问题 - 我成功使用了默认 amazonlinux 映像的相同角色,v)资源不足(生成了实例,所以我认为这不应该是问题),vi)连接 - 它应该可以工作,因为自动缩放组显示成功状态。

一种可能的解决方案可能是在运行时附加特定的 AWS 卷,但它会受到限制,我想找到一个自动解决方案,因为相反我必须管理多个卷以进行并行执行。

我还尝试通过管道输入来自 s3 存储桶,分析数据并将输出管道输出到第二个 s3 存储桶来执行任务,但我每次都收到对等错误的连接重置,可能是因为任务运行时间过长(我也设置--cli-read-timeout为 0但它根本没有解决它)。

有没有办法为 AWS 批处理中的作业配置根卷大小?

0 投票
1 回答
1598 浏览

amazon-web-services - 将弹性文件系统挂载到 AWS Batch 计算机环境

我正在尝试将我的弹性文件系统 (EFS) 安装在我的 docker 容器中,以便它可以与 AWS 批处理一起使用。这是我所做的:

  1. 创建针对弹性容器服务 (ECS) 优化的新 AMI。我在这里遵循了本指南,以确保它上面有 ECS。我还将挂载放入/etc/fstab文件并验证我的 EFS 在重新启动后正在挂载 (/mnt/efs)。

  2. 用我的新 AMI 测试了一个 EC2 实例,并验证我可以拉出 docker 容器并通过它传递我的挂载点

docker run --volume /mnt/efs:/home/efs -it mycontainer:latest

以交互方式运行 docker 映像向我显示我在 efs 中的数据

  1. 使用在启动时安装 EFS 的新 AMI设置新的计算环境。

  2. 创建 JOB 定义文件:

    }

  3. 运行 Job,查看日志

无论如何,虽然它没有说“找不到文件 /home/efs”,但它没有列出我的 EFS 中填充的任何内容,我将其解释为安装空 efs 的容器。我究竟做错了什么?我的 AMI 是否没有在计算环境中安装 EFS?

0 投票
1 回答
496 浏览

amazon-web-services - AWS Batch 背后的调度策略

我想知道 AWS Batch 背后的调度策略是什么样的。关于这个主题的官方文档没有提供太多细节:

AWS Batch 调度程序评估何时、何地以及如何运行已提交到作业队列的作业。只要满足了对其他作业的所有依赖关系,作业就会大致按照提交的顺序运行。

https://docs.aws.amazon.com/batch/latest/userguide/job_scheduling.html

“大约”fifo 是相当模糊的。特别是当我在测试 AWS Batch 时观察到的执行顺序看起来不像 fifo。我错过了什么?是否有可能更改调度策略,或配置 Batch 以按照提交作业的确切顺序执行作业?

0 投票
2 回答
614 浏览

amazon-web-services - 在 AWS 中安排自动电子邮件

我最近使用弹性 beanstalk 和 MERN(MongoDB、Express、React、NodeJS)堆栈创建了我的第一个 AWS Web 应用程序,现在我需要每天查询我的数据库以触发电子邮件。

最初,我正在考虑在我的 Web 服务中创建一个处理查询+电子邮件逻辑的钩子,因为我的 Web 服务中已经拥有所有必需的模型/连接,并且每天只需要一次批处理作业来调用该 Web 服务钩子但它需要发送凭据并通过 https 调用它。

或者,我可以在一个单独的批处理程序中重新编码我所有的 smtp/数据库模型和连接,以运行查询并发送电子邮件。

在不使用新的独立 EC2 实例的情况下,您认为 AWS 的哪个选项更好/可能?AWS Batch 或 Lambda 会更有意义吗?我需要每天在同一时间安排这些数据库查询+电子邮件的东西。

0 投票
1 回答
1920 浏览

amazon-web-services - 尽管用户角色,AWS Batch 作业在 S3 上被拒绝访问

我正在 AWS 上部署我的第一个批处理作业。当我在 EC2 实例中运行我的 docker 映像时,作业调用的脚本运行良好。我已为此实例分配了一个 IAM 角色以允许 S3 访问。

但是,当我在 AWS Batch 上运行与作业相同的脚本时,由于 S3 访问中的访问被拒绝错误,它会失败。尽管事实上在作业定义中,我分配了一个具有完全 S3 访问权限的 IAM 角色(为弹性容器服务任务创建)。

如果我使用不访问 S3 的命令启动批处理作业,它运行良好。

由于对作业定义使用 IAM 角色似乎还不够,那么如何在 AWS 上的批处理作业中授予 S3 权限?

编辑

因此,如果我只是 aws s3 ls interlinked作为我的工作运行,那也可以正常运行。不起作用的是运行 R 脚本:

拒绝访问失败。

因此,问题似乎出在aws.s3包装上,或者更有可能是我对它的使用。

0 投票
2 回答
373 浏览

amazon-web-services - 从远程 Solaris 服务器到 AWS S3 存储桶的 FTP 文件

我有一个要求,我必须实现一个脚本来将文件从远程 Solaris 服务器传输到 AWS S3 存储桶。我应该每 24 小时在我的 AWS EC2 实例上运行此脚本,以便它连接到远程 Solaris 服务器并将文件传输到 S3 存储桶。

谁能指导我如何实现这一点?谢谢。

0 投票
2 回答
685 浏览

amazon-web-services - AWS Batch EC2 预置时间

我对使用 AWS Batch 比较陌生,并且注意到在托管计算环境中启动 EC2 实例需要很长时间。

我的工作将在 1 分钟内从已提交 > 待处理 > 可运行。

但有时他们会在 EC2 实例最终启动前 15 分钟到 1 小时处于 Runnable 中。

有关让 AWS Batch 更快地启动实例的任何提示和技巧?

理想情况下,我想要一个处于 Runnable 状态的实例。


对于更多上下文,我使用 AWS Batch 本质上与 Lambda 类似,但选择您自己的实例和硬盘驱动器。我不能使用 lambda,因为这些作业需要更多的资源 (GPU) 和时间来处理。

0 投票
1 回答
121 浏览

docker - aws批处理docker容器中的张量板

我正在运行一个 aws 批处理服务,在 docker 文件中包含 tensorflow 代码。我可以看到代码执行了,但是问题是我想获取 tensorboard 访问 url,以便我可以在本地浏览器中访问它。

我很困惑,有人可以帮助我吗?

0 投票
1 回答
385 浏览

docker - 为什么 python tesserocr 不在 AWS Batch 上使用 4 个 CPU 内核?

我正在尝试让 tesserocr python 库在 4 个内核上运行。根据 tesseract 文档,我知道它最多支持 4 个内核。我在具有 8 个 vCPU 的 c4.x2large 实例上的 AWS Batch(基于 amazonlinux:latest 映像的 docker 容器)内运行了一个 tesserocr python3.x 作业,所有这些作业在提交时都分配给了批处理作业。

基准测试显示 CPU 最高为 30%,即 2.5 个 vCPU,即大约 1.25 个物理内核(每个 2 个 vCPU 大约是 1 个物理内核)。

我也尝试过 OMP_NUM_THREADS=4, OMP_THREAD_LIMIT=4 环境变量(基于一些在线论坛),但没有任何值对性能有任何影响。

如何 tesserocr 扩展到所有 4 个内核(8 个 vCPU)?