如何从AWS Batch作业请求中检索参数?假设我有一个作业提交者应用程序,它使用以下代码发送作业请求(在C#中):
SubmitJobRequest submitJobRequest = new SubmitJobRequest()
{
JobName = "MyJobName",
JobQueue = "MyJobQueue",
JobDefinition = "MyJobDefinition:1",
Parameters = new Dictionary<string, string>() { {"Foo", "Bar" } },
};
SubmitJobResponse submitJobResponse = AWSBatchClient.SubmitJob(submitJobRequest);
我现在想要做的是检索启动的docker应用程序中submitJobRequest的Parameters字段中的内容。我怎么做?它没有作为程序args传递,因为我已经测试过(我看到的唯一的args是静态定义的&#39; Command&#39;我的工作定义)。我知道我可以通过容器覆盖设置环境变量,然后通过Environment.GetEnvironmentVariable(在C#中)检索它们。但我不知道如何获得参数。感谢。
答案 0 :(得分:2)
以下是使用yaml cloudformation的示例。(或者您可以将json用于相同的属性)。您可以使用 command 部分中的 Ref 声明参数。我正在使用用户名,但是您可以添加更多。我们可能限制为30KB的有效负载
ContainerProperties:
Command:
- "python"
- "Your command here"
- "--user_name"
- "Ref::user_name"
现在,您可以像这样将作业提交到队列中。我正在使用python和 boto3 客户端:
# Submit the job
job1 = client.submit_job(
jobName=jobName,
jobQueue=jobQueue,
jobDefinition=jobDefinition,
parameters={
'user_name':user_name
}
)
要检索参数,请使用此(我正在使用argparse):
parser = argparse.ArgumentParser(description='AWS Driver Batch Job Runner')
parser.add_argument('--user_name', dest='user_name', required=True)
args = parser.parse_args()
print(args.user_name)
答案 1 :(得分:1)
找到了我想要的答案。我只需要在作业定义中为Command的参数添加一个ref。在问题示例中,我需要在作业定义中指定Ref :: Foo for Command,然后在&#34; Bar&#34;它会被作为程序args传递给我的容器应用程序。