如何检索 AWS Batch 作业参数?

sev*_*nts 6 aws-batch

如何从 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);
Run Code Online (Sandbox Code Playgroud)

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

sev*_*nts 2

找到了我一直在寻找的答案。我只需在作业定义中添加对 Command 参数的引用即可。在问题示例中,我需要在作业定义中为 Command 指定 Ref::Foo,然后“Bar”将作为程序参数传递到我的容器应用程序。

为了扩展我的示例,在我的具体情况下,我的程序使用CommandLineParser包来传递参数。假设命令行选项之一称为 Foo。如果我从命令行运行程序,我会为 Foo 设置一个值,如“--Foo Bar”。为了有效地对我的批处理作业执行相同的操作,在我的作业定义中,对于命令,我将指定“--Foo Ref::Foo”(不带引号)。然后,对于 SubmitJobRequest 对象中的参数字段,我将按照原始示例设置 Foo,然后我的批处理程序将看到 Foo CommandLine 选项为“Bar”(就像使用“--Foo Bar”运行一样) )。希望有帮助。