首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Step函数-将输入传递给AWS批处理作业的容器覆盖

AWS Step函数-将输入传递给AWS批处理作业的容器覆盖
EN

Stack Overflow用户
提问于 2022-08-11 14:46:43
回答 1查看 358关注 0票数 2

我从Step函数提交一个AWS批处理作业。批处理作业接受命令行参数。我可以像这样在step函数中运行它:

代码语言:javascript
复制
{
  "Comment": "Submit aws batch job with parameters",
  "StartAt": "SubmitJob",
  "States": {
    "SubmitJob": {
      "Type": "Task",
      "Resource": "arn:aws:states:::batch:submitJob.sync",
      "Parameters": {
        "JobName": "my-job",
        "JobDefinition": "arn:aws:batch:us-west-1:123456789000:job-definition/my-job-definition:1",
        "JobQueue": "arn:aws:batch:us-west-1:123456789000:job-queue/my-job-queue",
        "ContainerOverrides": {
          "Command": [
            "Hello",
            "World"
          ]
        }
      },
      "End": true
    }
  }
}

但是,我想使用这个步骤的输入作为命令行参数。因此,我尝试在命令中使用$.parameter符号。

我的意见是

代码语言:javascript
复制
{
  "param_1": "Hello",
  "param_2": "World"
}

我的步进功能是

代码语言:javascript
复制
{
  "Comment": "Submit aws batch job with parameters",
  "StartAt": "SubmitJob",
  "States": {
    "SubmitJob": {
      "Type": "Task",
      "Resource": "arn:aws:states:::batch:submitJob.sync",
      "Parameters": {
        "JobName": "my-job",
        "JobDefinition": "arn:aws:batch:us-west-1:123456789000:job-definition/my-job-definition:1",
        "JobQueue": "arn:aws:batch:us-west-1:123456789000:job-queue/my-job-queue",
        "ContainerOverrides": {
          "Command": [
            "$.param_1",
            "$.param_2"
          ]
        }
      },
      "End": true
    }
  }
}

但是,这会导致我的批处理作业接收"$.param_1“这样的原始字符串,而不是由输入"Hello”代替它们。为什么?什么是必需的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-11 16:52:14

这是一个解决方案/沃卡伦德,我不确定这是否是唯一的选择。

在AWS批处理作业定义中,在容器属性中,将命令设置为

代码语言:javascript
复制
["Ref::param_1","Ref::param_2"]

这些“Ref:”链接将捕获在作业运行时提供的参数。此外,可以在“职务定义参数”部分中指定参数,但只有在要提供默认设置的情况下才需要这样做。

在Step函数状态机定义中,使用参数而不是使用ContainerOverrides。总体上看,如下所示:

代码语言:javascript
复制
{
  "Comment": "Submit aws batch job with parameters",
  "StartAt": "SubmitJob",
  "States": {
    "SubmitJob": {
      "Type": "Task",
      "Resource": "arn:aws:states:::batch:submitJob.sync",
      "Parameters": {
        "JobName": "my-job",
        "JobDefinition": "arn:aws:batch:us-west-1:123456789000:job-definition/my-job-definition:2",
        "JobQueue": "arn:aws:batch:us-west-1:123456789000:job-queue/my-job-queue",
        "Parameters": {
          "param_1.$": "$.param_1",
          "param_2.$": "$.param_2"
        }
      },
      "End": true
    }
  }
}

因此,step函数中的输入被传递给批处理作业,该作业捕获它们并作为命令使用。

参考资料:https://docs.aws.amazon.com/batch/latest/userguide/example-job-definitions.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73322674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档