【问题标题】:AWS Batch input parameters from Cloudwatch Event来自 Cloudwatch 事件的 AWS Batch 输入参数
【发布时间】:2018-08-28 07:11:15
【问题描述】:

我正在尝试将由 S3 PutObject 上的 Cloudwatch 事件触发的 AWS Batch 作业设置到存储桶中。添加新文件时,我的作业正在运行,但不确定如何将文件名传递给作业。在我的 Cloudwatch 事件规则中,我将批处理作业队列的 Configure input 设置为 Matched event,但不确定如何访问作业正在运行的 docker 容器中的事件。

【问题讨论】:

  • 我尝试在容器中打印环境变量,但没有看到任何看起来像事件的东西。
  • 作为一种解决方法,我使用相同的规则来触发作业并将事件添加到 SQS 队列以供作业读取和删除。

标签: amazon-cloudwatch aws-batch


【解决方案1】:

如此处所述:https://docs.aws.amazon.com/batch/latest/userguide/batch-cwe-target.html,位于底部,在标题为“使用 CloudWatch Events 输入转换器将事件信息传递给 AWS 批处理目标”的部分中:

像这样设置你的工作定义:

{
  "jobDefinitionName": "echo-parameters",
  "containerProperties": {
    "image": "busybox",
    "vcpus": 2,
    "memory": 2000,
    "command": [
      "echo",
      "Ref::S3bucket",
      "Ref::S3key"
    ]
  }
}

这假设您的 docker 映像包含一个命令 echo,该命令采用 2 个参数 - 一个 S3 存储桶和一个 S3 密钥。

在您的 CloudWatch 事件规则中,使用 InputTransformer 将事件详细信息转换为您想要的:

"InputTransformer": {
  "InputPathsMap" : {
    "S3BucketValue": "$.detail.requestParameters.bucketName",
    "S3KeyValue": "$.detail.requestParameters.key"
  },
  "InputTemplate" : "{\"S3bucket\": <S3BucketValue>, \"S3key\": <S3KeyValue>}"
}

【讨论】:

  • 根据最新的文档,模板应该是 {"Parameters" : {"S3bucket": , "S3key": }}
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2021-06-01
相关资源
最近更新 更多