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

最佳答案

如此处所述:https://docs.aws.amazon.com/batch/latest/userguide/batch-cwe-target.html,在标题为“使用CloudWatch Events Input Transformer将事件信息传递到AWS Batch目标”的部分的底部:

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

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


假设您的docker映像包含命令echo,该命令带有2个参数-S3存储桶和S3键。

在您的CloudWatch Event规则中,使用InputTransformer将事件详细信息转换为所需的内容:

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

关于amazon-cloudwatch - Cloudwatch Event中的AWS Batch输入参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49367817/

10-11 11:34