7

我正在使用 AWSBatch Java 客户端com.amazonaws.services.batch (AWS SDK for Java - 1.11.483)以编程方式提交作业。

然而,我们的科学家不断更新工作定义。每次有新的作业定义时,我都必须使用修订号更新环境变量以将其传递给客户端。 AWS 文档指出

此值可以是 name:revision 或作业定义的 Amazon 资源名称 (ARN)。

有什么方法可以将其默认为最新版本,并且每次提交 BatchJob 时,都会在不知道最新版本的情况下选择最新版本?

4

3 回答 3

13

此值可以是 name:revision 或作业定义的 Amazon 资源名称 (ARN)。

似乎 AWS 没有正确记录这一点:revision是可选的,您可以简单地使用 usename而不是,name:revision它将获得ACTIVE您的工作定义的修订。对于作业定义 ARN,它也是可选的。

这也适用于boto3AWS Step Functions 与 AWS Batch 的集成,以及可能需要作业定义名称或 ARN 的所有其他接口。

于 2019-03-06T19:52:49.630 回答
3

来自 AWS Batch SubmitJob API 参考。

工作定义

此作业使用的作业定义。此值可以是作业定义的名称、名称:修订版或 Amazon 资源名称 (ARN) 之一。如果指定 name 时没有修订,则使用最新的活动修订。

也许文档现在已经更新。

于 2020-09-25T09:09:01.050 回答
0

我找不到任何 Java SDK 功能,但我最终使用了一个 bash 脚本,该脚本从 AWS 获取最新*修订号。

$ aws batch describe-job-definitions  --job-definition-name ${full_name}  \
   --query='jobDefinitions[?status==`ACTIVE`].revision'  --output=json \
   --region=${region} | jq '.[0]'

(*).[0]将从活动修订列表中选择第一个对象,我使用它是因为默认情况下,AWS Batch 会将最新修订添加到顶部。你可以设置它,就.[-1]好像你想要最后一个一样。

于 2019-02-19T00:04:16.093 回答