在提交AWS批处理作业时获取最新的作业修订,而无需指定确切的修订号

时间:2019-01-29 22:12:54

标签: amazon-web-services aws-sdk aws-batch

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

但是,我们的科学家不断更新工作定义。 每当有一个新的作业定义时,我都必须用修订号更新环境变量,以将其传递给客户端。 AWS documentation指出

  

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

有什么方法可以将其默认为最新版本,并且每次我提交BatchJob时,即使不知道最新版本也可以选择最新版本?

3 个答案:

答案 0 :(得分:3)

  

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

似乎AWS未能正确记录此问题:revision是可选的,您可以简单地使用name代替name:revision,它将得到ACTIVE的修订版您的工作定义。对于作业定义ARN,它也是可选的。

这也适用于boto3以及与AWS Batch集成的AWS Step Functions,以及可能需要Job Definition名称或ARN的所有其他接口。

答案 1 :(得分:3)

摘自AWS Batch SubmitJob API参考。

jobDefinition

此作业使用的作业定义。此值可以是名称之一, 名称:修订,或作业的亚马逊资源名称(ARN) 定义。如果指定的名称没有修订,则最新的 使用主动修订。

也许文档现在已经更新。

答案 2 :(得分: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]