问题标签 [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 回答
1128 浏览

aws-lambda - 如何配置 AWS lambda 执行角色以能够列出批处理作业?

我在正确配置 Lambda 以运行批处理作业时遇到问题。代码如下所示:

它在client.list_jobs(jobQueue=_job_queue)上失败,并出现以下错误:

“errorMessage”:“调用 ListJobs 操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::749340585813:assumed-role/myproject/dev-StartJobLambda-HZO22Z5IMTFB 无权执行:batch:ListJobs on resource : arn:aws:batch:us-west-2:749340585813:/v1/listjobs",

如果我将访问密钥添加到上面的 lambda,它工作正常。我认为这是因为我具有管理员访问权限,并且以我的用户身份进行身份验证为 lambda 提供了我的特权。

我的 lambda 定义如下所示:

还会创建以下角色和策略:

此外,还有一个角色可以让 lambda 在 VPC 上运行:

0 投票
4 回答
26983 浏览

amazon-web-services - ECS 无法承担角色

从控制台,我正在调用一个提交批处理作业的 lambda。批处理作业失败,表明 ECS 无法承担为执行作业定义而提供的角色。

对于角色,我添加了 lambda 和 ECS 服务。

错误信息:

“ECS 无法承担为此任务提供的角色‘arn:aws:iam::749340585813:role/golfnow-invoke-write-progress’。请验证所传递的角色是否具有正确的信任关系和权限,并且您的 IAM 用户有权传递此角色。”

批处理作业:

调用方式有问题吗?我的用户具有管理员权限,所以我认为这不是我的用户权限不足的问题。

0 投票
1 回答
1015 浏览

amazon-web-services - AWS Batch 作业在“dependsOn”时停留在 PENDING

我在链接AWS Batch作业时遇到问题。

  • 有 3 个计算环境CE_A, CE_B, CE_C),每个环境关联一个作业队列JQ_A, JQ_B, JQ_C)。

  • 有 6 个作业定义JD_1, JD_2, ..., JD_6)。

  • 假设<jqce>-<jd>-<name>是在作业队列(或计算环境)上启动的作业<jqce>,并带有作业定义<jd>。示例:A-1-a, C-6-z.

  • 我想按顺序执行大约 20 个作业(使用不同的环境变量启动):A-1-a, A-1-b, B-2-c, A-3-d, A-3-e, A-3-f, ...

  • 对于每个作业,我使用以下命令指定对先前作业的依赖: params.dependsOn = [{ "jobId": "xxxxx-xxxx-xxxx-xxxxxx"}]in Batch.submitJob(params)

  • 前两个作业在等待几分钟资源分配后成功执行A-1-aA-1-b

  • B-2-c在等待 Compute 环境启动几分钟后,第三个作业也成功执行CE_B

  • 同时,由于没有作业出现,计算环境CE_A被关闭。

这是问题:

  • 我预计在这一点上CE_B会下降和CE_A上升。CE_A没有上升。

  • 永远不会执行,A-3-d16 小时后它仍然处于PENDING状态。

    • 没关系,它的dependsOn依赖关系很久以前就结束了。
    • 没有dependsOn批处理运行正常,具有相同的环境变量和配置。

问题

  • 你遇到过类似的问题AWS BatchdependsOn
  • 是否可以链接来自不同作业队列的批次?
  • 是否可以链接来自不同计算环境的批次?
  • params.dependsOn = [{ "jobId": "xxx-xxx-xxx-xxx" }]觉得还可以吗?看来我不必设置type属性见数组作业
0 投票
0 回答
996 浏览

docker - 如何在运行时增加 docker 容器中的交换空间?

我有一个用例,我需要在容器启动(运行时)时增加交换空间限制。我的 docker 始终作为“docker run -m 1G ...”运行(来自 AWS Batch)。Docker 总是将交换空间值设置为硬内存限制的 2 倍。容器启动时如何增加此值?

我尝试了一些启动前/启动后 docker 插件来更改 cgroup 值,但似乎没有任何效果

注意:我无法发出“docker run --memory-swap 值”,因为它由 AWS Batch 控制。

很少有参考书让我无所适从- https://engineering.clever.com/2018/02/06/swappiness-amazon-ecs/

0 投票
1 回答
2619 浏览

amazon-cloudwatch - 来自 Cloudwatch 事件的 AWS Batch 输入参数

我正在尝试将由 S3 PutObject 上的 Cloudwatch 事件触发的 AWS Batch 作业设置到存储桶中。添加新文件时,我的作业正在运行,但不确定如何将文件名传递给作业。在我的 Cloudwatch 事件规则中,我将批处理作业队列设置Configure inputMatched event,但不确定如何访问作业正在运行的 docker 容器中的事件。

0 投票
2 回答
634 浏览

amazon-cloudformation - 使用 CloudFormation 部署 Batch

我已经能够使用 CloudFormation 创建一个计算环境、一个作业队列和大约十几个作业定义。伟大的!

除非我遗漏了什么,否则似乎没有一个元素可以使用 CloudFormation 实际提交我的工作定义。:(

起初,我以为我已经弄明白了,因为您可以创建触发作业提交的 CloudWatch 事件。但是,我注意到 CloudFormation 中的事件规则不像 CLI/SDK 那样支持批处理。瘸!

还有其他人使用 CloudFormation 部署 Batch 吗?你是如何提交工作的?我想我可以创建一个自定义资源,但这似乎比它应该做的要难。

0 投票
1 回答
1011 浏览

amazon-web-services - 在 AWS Batch 上独立运行时,Spark 无法访问 S3

使用 AWS 库,我可以访问 S3,但如果我尝试使用 Spark 程序(使用 NativePackager 构建)访问 S3,这将不起作用。

我尝试了 s3://、s3n:// 和 s3a://。

让我展示一些我的测试:

测试1:

如果我没有什么特别的。如前所述失败。

测试2:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html之后,我在调用我的代码之前执行了此代码:

之前的一些错误

测试3:

如果我用我的个人密钥设置 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。AWS 库和 Spark Work

考虑到测试 3有效,我的代码有效。出于显而易见的原因,我不喜欢在周围维护钥匙。问题是:

如何在我的 Spark 作业上使用 AWS Batch (ECS) 创建的凭证?

0 投票
2 回答
1917 浏览

aws-batch - 如何检索 AWS Batch 作业参数?

如何从 AWS Batch 作业请求中检索参数?假设我有一个作业提交者应用程序,它使用以下代码(在 C# 中)发送作业请求:

我现在想要做的是检索启动的 docker 应用程序中 submitJobRequest 的参数字段中的内容。我怎么做?它不是作为程序参数传入的,因为我已经测试过了(我看到的唯一参数是为我的工作定义的“命令”静态定义的)。我知道我可以通过容器覆盖设置环境变量,然后通过 Environment.GetEnvironmentVariable(在 C# 中)检索它们。但我不知道如何获取参数。谢谢。

0 投票
3 回答
2902 浏览

amazon-web-services - AWS CloudWatch 规则以 AWS 批处理作为目标返回 FailedInvocation

嗨,我已经安排了 Cloudwatch规则,以便在每周三 GTM 14.15 运行,目标是 AWS Batch,它总是返回FailedInvocation。我从关联的指标中看到了 FailedInvocation 事件

但是没有关于错误的日志,我无法理解这个问题。

我已经按照本教程进行操作:https : //docs.aws.amazon.com/batch/latest/userguide/batch-cwe-target.html 我从几个小时就被困在这里有什么建议吗?

配置

AWS 批处理目标配置如下:

  • 作业队列= arn:..
  • 工作定义 = arn:...
  • 职位名称 =姓名

与目标关联的角色具有以下策略:

  • arn:aws:iam::aws:policy/service-role/AWSBatchServiceEventTargetRole

    /li>
  • arn:aws:iam::216314997889:role/awsInvokeActionOnEc2

    /li>
  • 信任关系

    /li>
0 投票
2 回答
957 浏览

amazon-web-services - AWS批量限制单个主机上的容器数量

我有一些带有 GPU Tensorflow 作业的容器,如果其中 2 个以上在单个主机上同时执行,则只有 1 个会成功(2018-05-11 13:02:19.147869: E tensorflow/core/common_runtime/direct_session.cc:171] Internal: failed initializing StreamExecutor for CUDA device ordinal 0: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_ECC_UNCORRECTABLE即它们无法正确共享 GPU)。

完美的场景如下:我有 10 个 GPU 作业和最多 5 个容器。前 5 个被执行,其他 5 个等待(此时,它们不等待而是尝试执行并失败),当一个完成时,第 6 个立即在同一主机上启动,然后是第 7 个、第 8 个、第 9 个、第 10 个。

我使用 p2.xlarge,并为 gpu 作业设置了 4 个 vCPU 和 42000 内存。根据 ec2instances.info,这台机器有 61.0 GiB 内存和 4 个 vCPU。但是,无论如何,批处理似乎同时调度多个容器,导致描述的失败。

到目前为止,我尝试使用vCPUmemory参数,但 Batch 的调度程序似乎忽略了这些。

有趣的是,相关 ECS 任务定义具有1/--的值Hard/Soft memory limits (MiB),因此看起来批处理“作业定义”中的值不会传播到 ECS“任务定义”

另一种选择是设置大量尝试,但是

  • 它很丑
  • 对于长期运行的工作,即使是大量工作也可能会筋疲力尽
  • 我失去了对永远运行的工作的防御(例如配置错误)
  • 不确定这种中断会如何影响已经运行的 Tensorflow 作业